matlab1_常用语法2

2.MATLAB控制流语句

2.1 if语句

​ matlab中if语句相关格式如下:

if 表达式1
	语句组A
elseif 表达式2
	语句组B
else 
	语句组C
end

​ 使用方法同别的语言,都是根据if后面表达式是否成立(如a==1)来决定要执行的语句组。可以根据需要来进行增减elseif来实现更多情况判断。注意用end来结束。

例子:

n = input('n=?');

if n<0
	disp('n is negative');
elseif rem(n,2)==0
	disp('n is even');
else
	disp('n is odd');
end

2.2 while语句

​ 在判断成立时候,循环执行某些语句。例子格式如下:

i = 0;
while i<10;
	i=i+1;
end

​ 注意判断条件后面的分号和用来指示语句组结束的end。可使用break来退出循环。

2.3 switch语句

​ 条件选择语句。根据输入条件决定要执行的语句,主要用来实现多分支。语句结构如下:

switch 选择表达式
	case 情况表达式1
		语句组1
	case 情况表达式2
		语句组2
		.
		.
		.
	otherwise
		语句组n
end

​ 选择表达式与哪个情况表达式相等,则执行相应的语句组,如果都不等,则执行otherwise后面的语句组。执行完毕则跳到end后面。

2.4 for语句

for用于将语句组执行一定次数。其基本格式如下:

for index=初值:增量:终值
	语句组
end

​ 执行次数 = 1+(终值-初值)/增量。

​ 几个注意点:

  • 不能在循环体内给循环变量重新赋值;

  • 为了提高运算速度,应该在进入for循环之前给要赋值的变量分配数组,不然给大小不确定的变量赋值会每次都先分配空间再赋值,拖慢速度;

  • for循环可嵌套;

    for例子:

    x = zeros(1,8);
    for n=1:10
    	x(n)=sin(n*pi/8);
    	if n==5 break;
    	end        % 此处end为if语句结束
    end
    

3.MATLAB绘图

3.1 二维绘图

3.1.1 绘图函数plot()

几种情况下的绘图参数。

(1)plot(x, ‘s’):

  • 如果x为实向量,则元素下标为横轴,元素值为纵轴;

  • x为复数向量,则实数部分为横轴,虚数部分为纵轴;

  • x为实矩阵,每列绘制为一条去曲线,元素下标为横轴,元素值为纵轴;;

  • x为复数矩阵,每列绘制为一条去曲线,实数部分为横轴,虚数部分为纵轴;

​ 其中s参数用于设置曲线形式,可选项如下:

颜色:b(蓝);g(绿);r(红);c(青);m(品红);y(黄);k(黑);w(白);

线型:-(实线);:(虚线);-.(点画线);–(双画线);none(无线);

点型:.(实心黑点);+(十字符);*(八线符);^(向上三角符);v(向下三角符);<(向左三角 符);>(向右三角符);d(菱形);h(六角星);o(空心圆);p(五角星);s(方块);x(叉);

(2)plot(x, y, ‘s’):

  • x y是相同维数向量,则以x为横坐标,y为纵坐标;

  • x为向量,y为矩阵,且y的行或者列的维数与x的维数相同,则绘制以x为横坐标的多条不同颜色的线,线数目等于x的维数,如果y为向量,x为矩阵为同样情况;

  • x y为相同维数矩阵,则以x的列元素为横坐标,y的列元素为纵坐标分别绘制曲线;

(3)plot(x1, y1 ,‘s1’,x2, y2 ,‘s2’, … ):用于同时绘制多条曲线,每对(x,y)组成一组曲线,不同数对之间不要求维相同;

绘图例子:

x = 0:0.4:4*pi;
y1 = exp(-0.1*x).*sin(x);    % .*表示向量乘法
y2 = exp(-0.1*x).*sin(x+1);
plot(x ,y1, 'm+', x, y2, 'r--')

图形如下:

在这里插入图片描述

3.1.2 多次重叠绘制

目的在于在一张图中绘制多条曲线,需要使用hold命令,否则后面的曲线会覆盖前面的曲线。命令使用如下:

  • hold on:使当前曲线和坐标轴不被刷新;
  • hold off:使得当前曲线和坐标轴可以被刷新;
  • hold:当前图形是否可被刷新的双向开关;

例子:

x = 0:0.4:4*pi;
y1 = exp(-0.1*x).*sin(x);
y2 = exp(-0.1*x).*sin(x+1);
plot(x, y1, 'm+');
hold on;   %图像窗口中保留第一条曲线
plot(x, y2, 'r--');
hold off;  % 解除保持状态,再有新的图像可覆盖之前的图像

图像如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y2K3ggEf-1605750527714)(G:\matlab_simulink\笔记\图片\2-2.png)]

3.1.3 多窗口绘图

上面的程序都是运行后只有一个图形窗口。进行多窗口绘图,使用figure(N)N为窗口序号。例子如下:

x = 0:2*pi/90:2*pi;
y1 = sin(2*x);
plot(x, y1, 'r:');
figure(2);  % 默认创建1号窗口
y2 = exp(-15*x).*sin(2*x);
plot(x, y2, 'c');

效果如下:
在这里插入图片描述
在这里插入图片描述

此时两个图在不同窗口显示,不存在覆盖问题。

3.2 图形注释

3.2.1通过编辑器

在图形窗口点击编辑图形属性 ,进入编辑状态,此时可对图形属性进行编辑和添加说明。

进入编辑状态后双击图形区域,会弹出轴标签编辑窗口,选择相应的轴进行添加即可。如下:

在这里插入图片描述

3.2.2 通过函数

图形注释函数有:

函数名 功能 函数名 功能
title 添加标题 legend 添加图例
xlabel x轴标注 grid 为图形坐标添加网格
ylabel y轴标注 text 指定位置添加文本
zlabel z轴标注 gtext 用鼠标放置文本
annontation 特殊标注 colorbar 添加颜色条
  • 特殊标注包括:线型,箭头,文本箭头,文本框,矩形和椭圆;
  • grid()调用格式:grid on:添加网格; grid off:关闭网格; grid minor:添加细化坐标网格;

例子:

x = linspace(-3*pi, 3*pi, 200);
y = sin(x);
plot(x, y);
title('test');
xlabel('横轴'), ylabel('纵轴');
legend('result');          % 添加图例,图例可在图中在直接拖动
grid on;

在这里插入图片描述

综合例子

绘制幅度调制系统输出波形:
y ( t ) = ( M + m a M c o s 2 π f m t ) × A c o s 2 π f c t y(t) = (M + m_aMcos2\pi f_mt) \times Acos2\pi f_ct y(t)=(M+maMcos2πfmt)×Acos2πfct

幅度调制为对将某个信号放映在另外一个信号的幅度里,即将改变待调制信号的幅度。其中M为被调信号的振幅在,fm为被调信号频率。A为载波信号振幅,fc为载波信号频率。此处 M M M=2( V V V), f m fm fm = 1000( H z Hz Hz), A A A = 5( V V V), f c fc fc= 10 × 1 0 3 10\times10^3 10×103 (Hz), m a ma ma = 0.5。

要求得到一个线为红色,且用三角表示节点的曲线。

可知其输入为t,单位为s,其matlab程序如下:

t = 0:0.00001:0.003;
%被调制信号
fm = 1000;
fc  = 10*(10^3);
y1 = 2 + 0.5 * 2 * cos(2 * pi * fm * t);
subplot(3,1,1);     % 将图像放到一个窗口里
plot(t, y1);
% 载波信号
y2 = 5 * cos(2 * pi * fc * t);
subplot(3,1,2);
plot(t, y2);
% AM调制
y_t = y1 .* y2;   %t为向量,得到的y1 y2也为向量,故采用.*
subplot(3,1,3);
plot(t, y_t, 'r^-');
title('AM');
xlabel('t(s)');
ylabel('y(V)');
legend('AM曲线');  % 添加图例
grid on;

图像如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_30843953/article/details/109801863