MATLAB入门之旅

MATLAB入门之旅

课程链接:MATLAB入门之旅

本文仅对常用命令做出简单介绍,更详细的信息可以在命令行输入help 命令名doc 命令名查看

(CSDN markdown似乎不支持matlab代码高亮?)

1. 变量命名

MATLAB 变量命名规则:以字母开头,并且仅包含字母、数字和下划线 (_)

2. 常用命令

% 在当前命令行按【向上箭头】,可以编辑之前输入过的命令(提高效率)
% 语句末尾加分号,运算结果不会在命令行显示

clc; % 清除命令行窗口
clear; % 删除所有工作区变量
clear name1 name2 name3;% 删除工作区中的变量、脚本、函数或MEX函数name1 name2 name3
clearvars -except A B; % 删除工作区中的所有变量,但变量A和B除外。

3. 创建等间距向量(冒号运算符和linspace命令)

x = first:distance:last; % distance 是元素间距,可为负数;注意不要有[]
y = linspace(first,last,number_of_elements);

4. 创建矩阵、随机数矩阵(rand)、全零矩阵(zeros)

p=[1 2 3;4 5 6] % 普通的2x3矩阵

x = rand(n); % 输出一个 n×n 的随机数矩阵
y = rand(n,m); %输出一个 nxm 的随机数矩阵
z = randi([iMin,iMax],n,m) % 包含iMin到iMax范围的随机整数,行数为n列数为m的矩阵

a = zeros(n); % n×n全零矩阵 
b = zeros(n,m); % nxm全零矩阵

5. 保存和加载变量

save datafile data; % 将工作区变量 data 保存到名为 datafile 的mat文件中
clear;
load datafile; % 从文件 datafile.mat 加载变量。

6. 数组索引

x = A(5,7); % 提取 A 的第5行第7列的值,然后将结果赋给变量 x
y = A(end,3); % 获取变量 A 的最后一行第三列的值
z = A(end-1,3); % 获取变量 A 的倒数第二行第三列的值

7. 提取多个元素(:)

x = A(2,:); % 创建一个包含 A 中第 2 行上所有元素的行向量
y = A(:,2); % 创建一个包含 A 中第 2 列上所有元素的列向量
z = A(1:3,:); % 创建一个包含矩阵 A 的第 1 行、第 2 行和第 3 行所有元素的矩阵

a = v(3); % 返回向量 v 的第 3 个元素(当v为行向量或列向量时)
b = v(3:end); % 返回向量 v 的一个子集,其中包含从第三个到最后一个元素范围内的所有元素

8. 更改数组中的值

% 通过组合使用[索引与赋值]来修改变量的元素
A(2,5) = 11; % 将 A 第2行第5列的元素值改为11
v(3)=0.5; % 将 v 第3个元素改为0.5

9. 数组与矩阵运算

x=[1 2 3];
y1=x+1; % 将1与 x 中所有元素相加,乘除类似
y2=2*x;
y3=x/3;

z=x+y; % 维度相同的数组可以相加

a = [1 2];
b = [3 4];
c = a*b; % 报错,用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配
c = a.*b; % 正确,按元素相乘,结果为[3 8]

10. 一些基本函数

zMax = max(z); % 将数组z中最大元素赋值给zMax
[zMax,izMax] = max(z); % zMax返回数组z的最大值,izMax返回其索引值

zRnd = round(z); % 对z中所有元素四舍五入
zSqrt = sqrt(z); % 对z中所有元素开根号

n = numel(z); % 返回z的元素总数目,例如z是2x3维矩阵,则n=6
zSize = size(z); % 返回z的维度大小
[zr,zc] = size(z); % zr返回z的行数,zc返回z的列数

zfft = fft(z); % 傅里叶变换返回信号的频率信息,fft函数可以计算向量的离散傅里叶变换

11. 绘制向量图

plot(x,y); % 可以使用 plot 函数在一张图上绘制两个相同长度的向量y=f(x)
plot(x,y,'r--o'); % 以上命令将会绘制一条红色(r)虚线(--),并使用圆圈(o)作为标记

hold on; % 要在一张图上先后绘制两条线,请使用 hold on 命令保留之前的绘图,然后添加另一条线,使用 hold off 命令返回到默认行为
close all; % 关闭所有打开的图窗窗口

plot(x); % 单独绘制一个向量时,MATLAB会使用向量值作为y轴数据,并将x轴数据的范围设置为从 1到n(向量中的元素数目)。
plot(x,'LineWidth',5); % 绘制一条线宽为5的线
plot(sample,v1,'ro','LineWidth',4); % 试着绘制v1(y)轴对sample(x)轴的图,使用红色(r)圆圈(o)标记,线宽为4	

%使用 loglog 函数(用法同 plot 函数),在两个座标轴上使用对数刻度
loglog(x,y);

title('Plot Title'); % 给图片添加标题
ylabel('Density (g/cm^3)'); % 为y轴添加标签Density (g/cm^3),同理有xlabel
legend('这条曲线是y'); % 添加图例

12. 逻辑运算和变量

%就像数值运算符一样,逻辑运算符也会被向量化。

% 关系运算符(例如 `>`、`<`、`==` 和 `~=`)执行两个值之间的比较。相等或不相等比较的结果为 1 (true) 或 0 (false)
test = pi>3; % 创建一个逻辑变量,其值为1(逻辑变量值只能为0或1)

%可以使用关系运算符将某个向量或矩阵与单个标量值进行比较。结果是与原始数组维度相同的逻辑数组
[5 10 5]>8; % 返回[0 1 0]

% 可以使用关系运算符对两个数组的对应元素进行比较。这两个数组的大小必须相同,其比较结果是与这两个数组具有相同大小的逻辑数组
[5 10 5]>[4 11 6]; % 返回[1 0 0]

% MATLAB 包含 AND (&) 和 OR (|) 等逻辑运算符,可将多个逻辑条件组合在一起
x = (pi > 5) & (0 < 6); % x返回0

% 可以使用逻辑数组作为数组索引,在这种情况下,MATLAB 会提取索引为 true 的数组元素
v = v1(v1 > 6); % 提取 v1 中大于 6 的所有元素

% 可以使用逻辑索引在数组中重新赋值。
x(x==999) = 0; % 将数组 x 中等于 999 的所有值都替换为 0

13. 决策分支

% 在仅满足某一条件时才执行某个代码段。可以使用 if 语句完成该操作。每个 if 语句都必须包含一个 if 关键字和一个 end 关键字,只有满足条件时,才会执行 if 和 end 关键字之间的代码
x = rand;
if x > 0.5
    y = 3; %只有 x > 0.5 才会执行
end

% 通常,可能还希望在所设条件不成立时执行其他代码。为此,您可以使用 else 关键字,如下所示
x = rand;
if x > 0.5
    y = 3;
else
    y = 4;
end

14. for循环

% 常见的编程任务是重复执行某个代码段。在 MATLAB 中,您可以使用 for 循环完成该操作。
for i = 1:3
    disp(i)
end
% 请注意,for 循环包含单个 end 关键字,与 if 语句类似。
% 运行此代码时,for 和 end 关键字之间的代码在该示例中将被执行三次,因为循环计数器 (i) 通过 1:3(1、2 和 3)进行计数。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章