变量命名规则

  • 区分大小写
  • 长度小于64位
  • 以字母开头, 可以由字母数字下划线组成

清空环境变量及命令

clear all % 清空Workspace中的所有变量
clc % 清空控制台

注释

%%注释
%%

%注释

数据类型

  • 数字

  • 字符和字符串

    • 单引号加内容

      • laoba = 'chihanbao'
    • abs函数 -> 获取ASCII码

      • abs(laoba)
    • char函数 -> 获取ASCII对应的字符

      • char(97)
    • num2str函数 -> 将数字转为字符数组

      • num2str(123)
    • length函数 -> 获取字符串长度

      • length(str)
  • 矩阵

    • A = [1 2 3; 4 5 6; 7 8 9]
      B = [1,2,3; 4,5,6; 7,8,9]
      • 用逗号分隔一行上的元素, 用分号换行
    • 矩阵转置

      • B = A'
    • 列矩阵

      • C = A(:)
    • 逆矩阵

      • D = inv(A)
    • 矩阵乘法

      • A * D
    • zeros函数

      • zeros(行[,列,维])
      • 创建x行,y列,n维的矩阵, 值均为0

      • A = zeros(10,5,3)
    • rand函数

      • rand(行[,列])
      • 创建x行,y列,n维的矩阵, 值随机

      • A = rand(10,5)
      • randi函数 - 均匀分布的伪随机整数

      • randn函数 - 标准正态分布的伪随机数(均值0,方差1)

  • 元胞数组

    • cell(行, 列) % 定义元胞数组
    • 索引{n}从1开始 (其他语言是从0开始)

    • 每一个成员都可以放不同类型的值

    • 使用示例 :

      • A = cell(1,5);
        A{1} = 1;
        A{2} = 'Hello';
        A{3} = zeros(3,3,3);
        A{4} = eye(3);
        A{5} = magic(5);
  • 结构体

    • s = struct(field1,value1,...,fieldN,valueN)
    • 使用示例:

      • person = struct('name', '张三', 'age', 18)
    • 调用:

      • 结构体名.成员名
      • person.name % ans="张三"
    • 空结构体:

      • s = struct('a', {}, 'b', {})

矩阵操作

矩阵的定义与构造

B = 1:2:9 % 起始为1, 终止为9, 步长为2的一行矩阵
% 结果: B -> 1 3 5 7 9
C = repmat(B, 3, 2) % 重复B, 竖着重复3次, 横着重复2次(分块矩阵, B为矩阵块, C为3行两列矩阵)
% 结果: C -> 
% 1 3 5 7 9 1 3 5 7 9
% 1 3 5 7 9 1 3 5 7 9
% 1 3 5 7 9 1 3 5 7 9
D = ones(2,4) % 类似zeros, 值均为1
% 结果: D ->
% 1 1 1 1
% 1 1 1 1

矩阵的四则运算

A + B
A - B
A * B'
A .* B % 对应项相乘
A / B % A乘以B的逆矩阵
A ./ B % 对应项相除

矩阵的下标

A(2,3) % 二行三列的位置
A(3,:) % 第三行的所有列
A(:,3) % 第三列的所有行
[m,n] = find(A > 20) % 寻找A矩阵中大于20的元素, 将行和列存入m和n

程序结构

for循环

for 循环变量 = 初值:[步长:]终值
    语句
end

例子:

% 求1-5的平方和
sum = 0;
for i = 1:5
    sum = sum + i^2;
end
% 求1!-5!和
sum = 0;
for i = 1:5
    p = 1;
    for j = 1:i
        p = p * j;
    end
    sum = sum + p;
end

while循环

while 条件
    语句
end

例子:

% 计算1-10的和
sum = 0;
n = 1;
while n <= 10
    sum = sum + n;
    n = n + 1;
end

if elseif else end

if 条件
    语句
else if 条件
    语句
else
    语句
end

例子:

% 计算1-100的偶数和
sum = 0;
for i = 1:100
    if mod(i,2) == 0
        sum = sum + i;
    end
end

switch case end

switch 表达式
    case 值1
        语句1;
    case 值2
        语句2;
    ...
    otherwise
        语句n;
end

例子:

m = 3;
switch m
    case 1
        disp('一月');
    case 2
        disp('二月');
    case 3
        disp('三月');
    otherwise
        disp('错误');
end

二维平面绘图

x = 0:0.01:2*pi;
y = sin(x);
figure; % 建立一个幕布
plot(x, y); % 绘制图片
title('正弦函数图形 [0,2pi]'); % 标题
xlabel('x'); % x轴标签
ylabel('sin(x)'); % y轴标签
xlim(0,2*pi);

image-20221128235820978

颜色参数表

颜色 字符 颜色 字符
r m
绿 g c
b w
y k

线型参数表

线型 符号 示例
实线 - _________
虚线 -- ---------
冒号线 : .... .... .... ....
点画线 -. ___.___.___.___.

数据标记点参数表

标记 描述 生成的标记
"o" 圆圈 Sample of circle marker
"+" 加号 Sample of plus sign marker
"*" 星号 Sample of asterisk marker
"." Sample of point marker
"x" 叉号 Sample of cross marker
"_" 水平线条 Sample of horizontal line marker
"|" 垂直线条 Sample of vertical line marker
"square" 方形 Sample of square marker
"diamond" 菱形 Sample of diamond line marker
"^" 上三角 Sample of upward-pointing triangle marker
"v" 下三角 Sample of downward-pointing triangle marker
">" 右三角 Sample of right-pointing triangle marker
"<" 左三角 Sample of left-pointing triangle marker
"pentagram" 五角形 Sample of pentagram marker
"hexagram" 六角形 Sample of hexagram marker
"none" 无标记 不适用

例子:

x = 0:0.01:2*pi;
y = sin(x);
figure; % 建立一个幕布
plot(x, y, 'm-.o'); % 绘制图片, 粉色, 点画线, 圈
title('正弦函数图形 [0,2pi]'); % 标题
xlabel('x'); % x轴标签
ylabel('sin(x)'); % y轴标签
xlim(0,2*pi);

1669654081694.png

plotyy

(不推荐)创建具有两个 y 轴的图形

https://ww2.mathworks.cn/help/matlab/ref/plotyy.html

yyaxis

创建具有两个 y 轴的图

例子:

x = linspace(0,10);
y = sin(3*x);
yyaxis left
plot(x,y)

z = sin(3*x).*exp(0.5*x);
yyaxis right
plot(x,z)
ylim([-150 150])

image-20221129001753372

三维绘图

使用plot3函数, 和plot函数类似

例子:

t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t,'r');
xlabel('sin(t)');
ylabel('cos(t)');
zlabel('t');
title('弹簧');

开启网格线

t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t,'r');
xlabel('sin(t)');
ylabel('cos(t)');
zlabel('t');
title('弹簧');
grid on % 开启网格线

1669653205254.png

最后修改:2023 年 04 月 28 日
如果觉得我的文章对你有用,请随意赞赏