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
在判断成立时候,循环执行某些语句。例子格式如下:
i = 0;
while i<10;
i=i+1;
end
注意判断条件后面的分号和用来指示语句组结束的end。可使用break来退出循环。
条件选择语句。根据输入条件决定要执行的语句,主要用来实现多分支。语句结构如下:
switch 选择表达式
case 情况表达式1
语句组1
case 情况表达式2
语句组2
.
.
.
otherwise
语句组n
end
选择表达式与哪个情况表达式相等,则执行相应的语句组,如果都不等,则执行otherwise后面的语句组。执行完毕则跳到end后面。
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
几种情况下的绘图参数。
(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--')
图形如下:
目的在于在一张图中绘制多条曲线,需要使用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; % 解除保持状态,再有新的图像可覆盖之前的图像
图像如下:
上面的程序都是运行后只有一个图形窗口。进行多窗口绘图,使用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');
此时两个图在不同窗口显示,不存在覆盖问题。
在图形窗口点击编辑 》 图形属性 ,进入编辑状态,此时可对图形属性进行编辑和添加说明。
进入编辑状态后双击图形区域,会弹出轴标签编辑窗口,选择相应的轴进行添加即可。如下:
图形注释函数有:
函数名 | 功能 | 函数名 | 功能 |
---|---|---|---|
title | 添加标题 | legend | 添加图例 |
xlabel | x轴标注 | grid | 为图形坐标添加网格 |
ylabel | y轴标注 | text | 指定位置添加文本 |
zlabel | z轴标注 | gtext | 用鼠标放置文本 |
annontation | 特殊标注 | colorbar | 添加颜色条 |
例子:
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;