【MATLAB】MATLAB学习笔记

MATLAB入门

本文参考B站视频:BV13D4y1Q7RS

由于我对于C语言很熟悉,很多语法是会参考C来学

基础操作

  1. 清屏

    powershell 复制代码
    %% 清空环境变量及命令
    clear all %清除Workspace中的所有变量(右侧工作区)
    clc %清除Command Window中的所有命令(命令行窗口)
  2. 注释

    powershell 复制代码
    %%
    %
  3. 查功能

    powershell 复制代码
    doc 你要查询的

变量命名

变量命名规则

  • 变量名区分大小写
  • 变量名长度不超过63位(MATLAB R2012a 32bit和64bit计算机上测试结果)
  • 变量名以字母开头,可以由字母、数字和下划线组成,但不能使用标点
  • 变量名应简洁明了,通过变量名可以直观看出变量所表示的物理意义

数据类型

  1. 数字

  2. 字符

    powershell 复制代码
    s='a'  %单引号表示字符串
    abs(s)  %输出s的ASCII码
    char(97) %输出ASCII码对应的字符
    num2str(65) % Number To Str输出字符数字65
  3. 字符串

    powershell 复制代码
    str='I love MATLAB & Machine Learning'
    length(str) %字符串长度
  4. 矩阵
    矩阵的定义与构造

    powershell 复制代码
    %% 矩阵的定义与构造
    A1 = [1,2,3,4,5,6,5,4,6]
    B=1:2:9 %1-9隔1取值,第二个参数为步长,不可缺省
    C = repmat(B,3,2) %重复执行3行2列
    
    A2 = [1 2 3; 4 5 2; 3 2 7] %3*3
    
    D = ones(2,4) %生成一个2行4列的全1矩阵
    
    E = zeros(10,5,3)   %创建一个10行5列3维的全0矩阵
    
    % rand(m,n)生成m*n均匀分布的伪随机数,分布在(0~1)之间
    % rand(m,n,'double')生成指定精度的均匀分布的伪随机数,参数还可以是'single'
    % rand(RandStream,m,n)利用指定的RandStream(随机种子)生成伪随机数
    F(:,:,1) = rand(10,5)   %10*5 
    
    % randi(iMax)在开区间(0,iMax)生成均匀分布的伪随机数
    % randi(iMax,m,n)在开区间(0,iMax)生成mXn型随机矩阵
    % randi([iMin,iMax],m,n)在开区间(iMin,iMax)生成mXn型随机矩阵
    E(:,:,2) = randi(5,10,5)
    
    % randn生成标准正态分布的伪随机数(均值为0,方差为1)
    E(:,:,3) = randn(10,5)

    矩阵的运算

    powershell 复制代码
    %% 矩阵的运算
    A = [1 2 3 4; 5 6 7 8]
    B = [1 1 2 2; 2 2 1 1]
    C = A + B
    D = A - B
    E = A * B'
    F = A .* B % .*表示对应项相乘
    G = A / B %相当于A*B的逆
    H = A ./ B % ./表示对应项相除
    
    I = A2'      % A转置
    J = inv(A) % 逆矩阵

    数组下标

    powershell 复制代码
    %% 数组下标
    B=A(2,3)
    C=A(3,:)    %第三行
    D=A(:,4)    %第四列 
    [m,n]=find(A >20)   %找符合()中式子的数字下标
  5. 元胞数组

    powershell 复制代码
    %% 元胞数组
    A = cell(1,6)
    A{2} = eye(3)   %下标从1开始 eye(3)对角线为1的3*3矩阵
    A{5} = magic(5) % magic(5)5*5幻方矩阵
    B = A{5}    %取A第5个cell
  6. 结构体

    powershell 复制代码
    %% 结构体
    books = struct('name',{{'Machine Learning','Data Mining'}},'price',[30,40])
    books.name 
    books.name(1)   %取cell
    books.name{1}   %取字符串

逻辑和流程控制

循环结构

  1. for循环

    powershell 复制代码
    %% for循环
    语法格式:
    for循环变量=初值:步长:终值(步长可省略,默认为1)
        执行语句1
        ...
        执行语句n
    end
    powershell 复制代码
    %【例5-8】求1^2+2^2+3^2+4^2+5^2的和。程序设计为:
    sum = 0
    for n= 1:1:5
        sum = sum +n^2;
    end
    powershell 复制代码
    sum = 0;
    for i= 1:5
        p= 1;
            for j=1:i
            p=p*j;
            end
        sum = sum + p;
    end
  2. while循环

    powershell 复制代码
    %% while
    语法格式:
    while 条件表达式
        执行语句1
        ...
        执行语句n
    end
    powershell 复制代码
    % 【例5-11】求1+2+3+4+5+...+10的和。
    s= 0
    n= 1
    while n<= 10 %设置循环条件
        s =s+n
        n =n+1
    end
    powershell 复制代码
    %【例5-12】设计一段程序,求1~100的奇数和程序设计为:
    x= 1
    sum = 0
    while x<101
        sum= sum+ x;
        x =x+2
    end

分支结构

  1. if...end

    powershell 复制代码
    %% if...end
    语法格式:
    if 条件表达式
        ...
        语句体
        ...
    end
  2. if...else...end

    powershell 复制代码
    %% if...else...end
    语法格式:
    if 条件表达式
        语句体1
    else
        语句体2
    end
  3. switch...case...end

    powershell 复制代码
    %% switch
    switch 表达式(数值或字符串)
        case数值或字符串1
            语句体1;
        case数值或字符串2
            语句体2;
        ...
        otherwise
            语句体n;
    end

    switch后面表达式的值为数值变量或字符变量,通过这些值与case后面数值或字符串的值进行比较,与哪一个 case的值相同就执行哪一个case下面的语句体,如果与所有case的值都不相同,则执行otherwise下面的语句体。otherwise语句可以省略,如果省略ptherwise,所有case都不满足时跳出分支结构,另外switch必须与end配对使用。

绘图基本操作

二维平面绘图

powershell 复制代码
%% 二维平面绘图
x = 0:0.01:2*pi %定义x的范围,第二个参数表示步长
y = sin(x)
figure %建立一个幕布
plot(x,y) %绘制当前二维平面图
title('y = sin(x)') %标题
xlabel('x') %x轴
ylabel('sin(x)') %y轴
xlim([0 2*pi]) % x坐标值的范围

绘图参数

powershell 复制代码
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
figure
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot'); %共用一个x的坐标系,在y上有不同的取值
%设置相应的标签
set(get(AX(1),'Ylabel'),'String','Slow Decay')
set(get(AX(2),'Ylabel'),'String','Fast Decay')
xlabel('Time(\musec)')
title('Multiple Decay Rates')
set(H1,'LineStyle','--')    %参数设置
set(H2,'LineStyle',':')

三位立体绘图

powershell 复制代码
%% 三维立体绘图
t = 0: pi/50: 10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
%hold on 在图像基础上继续绘图
%hold off %不保留当前操作
grid on %加网格线
axis square %使整个图(连同坐标系)呈方体

图像窗口的分割

powershell 复制代码
%% 图像窗口的分割
x=linspace(0,2*pi,60);
subplot(2,2,1)%用来给幕布分格,表示将幕布均等分成2行2列,将图形放到第一个格子中
plot(x, sin(x)-1);
title('sin(x)-1');axis([0,2*pi,-2,0])

subplot(2,1,2)
plot(x, cos(x)+1);
title('cos(x)+1');axis([0,2*pi,0,2])

subplot(4,4,3)
plot(x, tan(x));
title('tan(x)');axis([0,2*pi,-40,40])

subplot(4,4,8)
plot(x, cot(x));
title('cot(x)');axis([0,2*pi, -35,35])
相关推荐
IT猿手2 小时前
最新高性能多目标优化算法:多目标麋鹿优化算法(MOEHO)求解TP1-TP10及工程应用---盘式制动器设计,提供完整MATLAB代码
开发语言·深度学习·算法·机器学习·matlab·多目标算法
__lost2 小时前
MATLAB直接推导函数的导函数和积分形式(具体方法和用例)
数学·算法·matlab·微积分·高等数学
IT猿手7 小时前
SDMTSP:粒子群优化算法PSO求解单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)
开发语言·人工智能·matlab·智能优化算法
我爱C编程16 小时前
基于Qlearning强化学习的机器人路线规划matlab仿真
matlab·机器人·强化学习·路线规划·qlearning·机器人路线规划
Evand J1 天前
LOS/NLOS环境建模与三维TOA定位,MATLAB仿真程序,可自定义锚点数量和轨迹点长度
开发语言·matlab
孤亭远见1 天前
COMSOL with Matlab
matlab
图南楠2 天前
simulink离散传递函数得到差分方程并用C语言实现
matlab
信号处理学渣2 天前
matlab画图,选择性显示legend标签
开发语言·matlab
机器学习之心2 天前
Bayes-GRU-Attention的数据多特征分类预测Matlab实现
matlab·分类·gru
叶庭云2 天前
Matlab 和 R 语言的数组索引都是从 1 开始,并且是左闭右闭的
matlab·编程语言·r·数组索引·从 1 开始