matlab

1 基本语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
%变量无需声明
x = 5; % 赋值一个标量
y = [1 2 3]; % 赋值一个行向量
z = [1; 2; 3]; % 赋值一个列向量
A = [1 2; 3 4]; % 赋值一个矩阵
%矩阵运算
B = A * [1 1; 0 1]; % 矩阵乘法
C = A + A; % 矩阵加法
D = A .* A; % 矩阵点乘(对应元素相乘)
E = A'; % 矩阵转置
% 用圆括号进行数组索引
element = A(1, 2); % 获取矩阵A第一行第二列的元素
A(2, :) = [5 6]; % 替换矩阵A第二行的所有元素
%for循环
for i = 1:3
disp(i); % 显示i的值
end
% 条件语句
if x > 0
disp('x is positive');
elseif x < 0
disp('x is negative');
else
disp('x is zero');
end
----------------------------------------------
%建立一个函数
%函数定义通常放在一个.m文件中,文件名与函数名相同。
function y = my_function(x)
y = x^2 + 3*x + 2; % 计算并返回结果
end
result = my_function(5); % 调用函数,传入参数5
disp(result); % 显示结果
% 绘制简单图形
x = 0:0.01:10; % 创建一个从0到10的向量,步长为0.01
y = sin(x); % 计算x中每个元素的正弦值
plot(x, y); % 绘制图形
xlabel('x'); % x轴标签
ylabel('sin(x)'); % y轴标签
title('Plot of sin(x)'); % 图表标题

线性代数运算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
% 生成矩阵
% 直接法
a = [1,2,3;4,5,6;7,8,9];
% 冒号一维矩阵 a = 开始:步长:结束,步长为1可省略
b = 1:1:10; % 1,2,...10
b = 1:10; %与上一个等价
% 函数生成
% linspace(开始,结束,元素个数),等差生成指定元素数的一维矩阵,省略个数则生成100个
c = linspace(0,10,5);
% 特殊矩阵
e = eye(4); % eye(维数)单位阵 对角全为 1
z = zeros(1,4); % zeros(维数)全零阵 1行4列
o = ones(4,1); % ones(维数)全1阵 4行1列
r = rand(4); % rand(维数)0~1分布随机阵
rn = randn(4); % randn(维数)0均值Gaussian分布随机阵

执行结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
%选择结构
%if-elseif-else-end
if a>0
disp(x);
elseif a==0
disp(a);
else
disp(a-1);
end

%switch-case-otherwise-end
switch a
case 0
disp(a);
case 1
disp(a+1);
otherwise
disp('aaa');
end

%try-catch
try
z = x*y;
catch
z = x.*y; % 若try出错,则执行
end
disp(z);
--------------------------------------------------
% 循环结构
% for 循环变量=初值:步长:终值 - end
for i=0:1:10 % 步长为负,则初值大于终值
disp(i); % 循环体内不可对循环变量做修改
end

% while-end
while a>2
disp(a);
a = a-1;
end
----------------------------------------------------
%程序控制
%continue 跳过当次循环剩下语句,进入下一循环
%break 跳出当前循环
%return 跳出程序并返回

.m文件

matlab写出的文件后缀为.m,可以大致分为函数文件和命令文件,类似于头文件和main.c的关系。
使用示例:

假设你有一个名为addNumbers.m的函数文件,内容如下:

1
2
3
4
function sum = addNumbers(a, b)  
% 这个函数将两个数字相加
sum = a + b;
end
可以在MATLAB命令窗口或其他.m文件中调用这个函数:
1
result = addNumbers(3, 4);  % 返回7
原理是在MATLAB中,函数的返回值并不是通过显式的 return 语句来实现的,而是通过将一个或多个输出变量赋值,然后在函数结束时自动返回这些变量的值。在你提供的代码中,sum 是被赋值为 a + b 的结果,当 addNumbers 函数执行到 end 关键字时,MATLAB 会自动返回 sum 变量的值。

当你在MATLAB中调用一个函数时,例如 result = addNumbers(3, 4);,MATLAB 会执行该函数,并在函数结束时获取到所有在函数内部定义并赋值的输出变量(在这个例子中是 sum),并将这些变量的值返回给调用者。在这个例子中,result 将被赋值为 sum 的值,即 3 + 4 的结果,也就是 7。

简而言之,MATLAB 通过在函数结束时自动返回已赋值的输出变量来实现函数的返回值,而不需要显式的 return 语句。这是MATLAB语言的一个特性,使得编写函数更加简洁。

同时,需要指出的是,每个.m文件的变量是局部变量,生命周期也与函数执行的生命周期一致。

图像绘制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
%线图
x = 0:0.01:2*pi; % 创建一个x值的向量
y = sin(x); % 对应的y值
plot(x, y); % 绘制线图
title('y = sin(x)'); % 添加标题
xlabel('x'); % x轴标签
ylabel('y'); % y轴标签
grid on; % 添加网格
%散点图
x = randn(1, 100); % 随机生成100个x值
y = randn(1, 100); % 随机生成100个y值
scatter(x, y); % 绘制散点图
title('Scatter Plot of Random Points'); % 添加标题
%曲面图
[x, y] = meshgrid(-10:0.5:10, -10:0.5:10); % 创建网格
z = sin(sqrt(x.^2 + y.^2)); % 计算z值
surf(x, y, z); % 绘制曲面图
title('3D Surface Plot'); % 添加标题
xlabel('x'); % x轴标签
ylabel('y'); % y轴标签
zlabel('z'); % z轴标签
%向量场图
[x, y] = meshgrid(-2:0.2:2, -2:0.2:0.2); % 创建网格
u = y; % x方向上的向量分量
v = -x; % y方向上的向量分量
quiver(x, y, u, v); % 绘制向量场图
title('Vector Field Plot'); % 添加标题
xlabel('x'); % x轴标签
ylabel('y'); % y轴标签

matlab
http://example.com/2024/05/01/编程语言/MATLAB笔记/
作者
bradin
发布于
2024年5月1日
许可协议