文章目录
- 前言
- 1.向量
- 1.1 创建方式
- 1.1.1 直接输入各个元素
- 1.1.2 冒号创建
- 1.1.3 使用linspace函数
- 1.2 向量的运算
- 1.2.1 加法
- 1.2.2 相乘
- 2.输入与输出
- 2.1 输入函数--input()
- 2.2 输出函数
- 3.分支结构
- 3.1 if语句
- 3.2 switch语句
- 4.循环结构
- 4.1 for循环
- 4.2 while循环
- 4.3 特殊语句
- 5.函数体
- 6.绘图函数
- 6.1 plot()函数
- 6.2 subplot()函数
- 6.3 stem()函数
- 6.4 scatter()函数
- 备注
- 7.特殊的矩阵函数
- 7.1 全零矩阵
- 7.2 全1矩阵
- 7.3 随机矩阵
- 7.3.1 rand()函数
- 7.3.2 randn()函数
- 结语
前言
在学习基于matlab仿真的数字图像处理教程
之前,需要我们对matlab的基本语法有一定的了解,本篇博客带你快速入门matlab编程语言。
1.向量
可以简单理解为一个一维数组
1.1 创建方式
1.1.1 直接输入各个元素
用[]
包裹整个数组,元素之间用空格或者逗号隔开(行向量),元素之间用分号隔开(列向量),也可以混合使用用来生成矩阵
1.1.2 冒号创建
格式:x=开始:间隔:结尾
间隔可以省略,默认是1
1.1.3 使用linspace函数
格式:linspace(开始,结束,元素个数)
元素个数默认为100个
1.2 向量的运算
1.2.1 加法
直接对应元素相加即可
1.2.2 相乘
向量乘法,即向量内积
a·b=a1b1+a2b2+……+anbn
将该运算定义为.*
(点乘)
matlab中还定义了dot()
函数,将点乘结果进行相加,相当于sum(ans)
2.输入与输出
2.1 输入函数–input()
input
函数:用于在命令行获取用户输入的数值、字符串或表达式等,并将其作为变量的值。
格式:value = input('提示信息');
这里的提示信息是显示给用户的文本,提示用户输入内容。用户输入完成后,按下回车键,输入的内容将被赋给value变量。
num = input('请输入一个数字:');
str = input('请输入一个字符串:');
expr = input('请输入一个表达式:');
keyboard; % 用于调试使用
disp(num);
运行结果:
2.2 输出函数
disp
函数:用于在命令行显示变量的值、文本信息等。它会自动换行显示内容,并且不会显示变量名,只显示其值。
fprintf
函数:按照指定的格式将数据输出到命令行或文件中。它可以对输出内容进行格式化,使其更加规范和美观。
num = 10.2346;
str = 'Hello, MATLAB!';
disp(num);
disp(str);
fprintf('数字:%.2f,字符串:%s\n', num, str);
3.分支结构
3.1 if语句
语法:if 表达式
语句
elseif 表达式
语句
else
语句
end
此案例没有任何意义,只是单纯为了使用分支结构,和其他语言类似
a=2;
b=3;
if(a>b)
result=a-b;
elseif(a==b)
result=a*b;
else
result=a+b;
end
disp(result);
3.2 switch语句
语法:switch expression
case value1
% 当expression的值等于value1时执行的语句
case value2
% 当expression的值等于value2时执行的语句
...
case valueN
% 当expression的值等于valueN时执行的语句
otherwise
% 当expression的值不等于前面任何一个case的值时执行的语句
end
clear all;
clc;
score =input("请输入你的成绩:");
if score>=90
flag="A";
elseif score>=80
flag="B";
elseif score>=60
flag="C";
elseif score<60&&score>=0
flag="D";
else
disp("非法输入");
end
switch flag
case 'A'
disp("太棒了,你的成绩优秀哎");
case 'B'
disp("你的成绩良好,希望你能继续加油哦")
case 'C'
disp("你的成绩及格,下学期加把劲吧")
otherwise
disp("成绩不合格,记得及时查看补考信息")
end
运行结果:
4.循环结构
4.1 for循环
语法格式:
for 循环变量 = 起始值:步长:终止值 % 步长默认是1
% 循环体,这里是要重复执行的代码块
end
for a=1:2:5
disp(a)
end
4.2 while循环
while 条件表达式
% 循环体,要重复执行的代码块
end
i = 1;
while i <= 10
disp(i);
i = i + 1;
end
4.3 特殊语句
break
语句:跳出循环语句
continue
语句:跳出当前循环,执行下一次循环
5.函数体
函数一般在.m文件中编写,由function语句引导,基本结构为:
function [输出参数1, 输出参数2,...] = 函数名(输入参数1, 输入参数2,...)
% 函数体:在这里进行各种计算、操作等,以实现函数的功能
% 根据输入参数计算得到输出参数的值
end
function z = f(x,y)
% 该函数计算|x|+|y|,并将结果返回给z
if x>=0&&y>=0
z=x+y;
elseif x<=0&&y>=0
z=y-x;
elseif x>=0&&y<=0
z=x-y;
else
z=-(x+y);
end
6.绘图函数
6.1 plot()函数
plot(X,Y)
创建 Y 中数据对 X 中对应值的二维线图。
要绘制由线段连接的一组坐标,请将 X 和 Y 指定为相同长度的向量。
xlabel
:设置X轴标签
ylabel
:设置Y轴标签
title
:设置图像标题
grid on
:显示网格信息
axis
设置坐标轴范围
x=0:0.01:2*pi;
y=sin(x);
plot(x,y)
grid on;% 显示网格
xlabel("x");% 设置x轴标签
ylabel("sin(x)")% 设置y轴标签
title("函数y=sin(x)")% 设置标题
axis([0 2*pi -1.5 1.5]) %设置横纵坐标显示范围
axis square %生成正方形图
运行结果:
也可以画多条函数图像
x1=0:0.01:10;
x2=-pi/2:0.01:pi*2;
y1=sin(x1);
y2=cos(x2);
plot(x1,y1,x2,y2,'.-')
legend("sin(x)","cos(x)")% 设置图例
运行结果:
因为它是连续图像,所以在选择X时尽可能的将步长调小,否则画出的图像就有明显的折线效果
另外,你也可以设置线条颜色
6.2 subplot()函数
subplot(m,n,p)
将当前图窗划分为 m×n 网格,并在 p 指定的位置创建坐标区。MATLAB按行号对子图位置进行编号。第一个子图是第一行的第一列,第二个子图是第一行的第二列,依此类推。如果指定的位置已存在坐标区,则此命令会将该坐标区设为当前坐标区。
代码部分:
x1=0:0.01:10;
x2=-pi/2:0.01:pi*2;
y1=sin(x1);
y2=cos(x2);
subplot(2,2,3);% 分成一行两列,第一个位置
plot(x1,y1,'r');
subplot(2,2,2);% 分成一行两列,第二个位置
plot(x2,y2,'g');
6.3 stem()函数
stem()
函数:用来绘制离散序列数据,也是数字信号中使用较多的函数,将数据序列 Y 绘制为从沿 x 轴的基线延伸的针状图
subplot函数同样适用stem函数,语法情况保持一致
示例代码:
x1=0:0.5:10;
x2=-pi/2:0.5:pi*2;
y1=sin(x1);
y2=cos(x2);
subplot(2,2,3);% 分成一行两列,第一个位置
stem(x1,y1,'r','filled');
subplot(2,2,2);% 分成一行两列,第二个位置
stem(x2,y2,'g');
运行结果:
6.4 scatter()函数
scatter
函数:在向量 x 和 y 指定的位置创建一个包含圆形标记的散点图。
subplot函数同样适用
示例代码:
x1=0:0.5:10;
x2=-pi/2:0.5:pi*2;
y1=sin(x1);
y2=cos(x2);
subplot(2,2,3);% 分成一行两列,第一个位置
scatter(x1,y1,'r','filled');
subplot(2,2,2);% 分成一行两列,第二个位置
scatter(x2,y2,'g');
运行结果:
备注
上述函数均使用的是向量,所以在画图时,需要将两个向量的长度保持一致,否则会报错,具体可以用length()
函数或者size()
函数查看向量长度
7.特殊的矩阵函数
7.1 全零矩阵
zeros(M)
函数:生成M x M大小的全零矩阵
zeros(M,N)
函数:生成M x N大小的全零矩阵
7.2 全1矩阵
ones(M)
函数:生成M x M大小的全1矩阵
ones(M,N)
函数:生成M x N大小的全1矩阵
也可以使用矩阵和一个标量相加减,来构造任何元素的矩阵
7.3 随机矩阵
7.3.1 rand()函数
rand(M)
函数:生成M x M大小的随机矩阵,元素在(0,1)之间服从均匀分布
rand(M,N)
函数:生成M x N大小的随机矩阵,元素在(0,1)之间服从均匀分布
7.3.2 randn()函数
randn(M)
函数:生成M x M大小的随机矩阵,元素服从均值为0,方差为1的正态分布
randn(M,N)
函数:生成M x N大小的随机矩阵,元素服从均值为0,方差为1的正态分布
备注:也可以通过与标量的乘法或加法调节生成的范围
结语
本篇博客介绍了matlab的基本语法,适用于没学过该编程语言,快速入门的基于matlab仿真的数字信号处理实验,本篇博客在介绍时,并未对各种函数的各种参数展开讲解,需要时可以查看官方文档,更适合,更高效。希望本篇快速的matlab能够对你有所帮助!!!感谢支持!!!