matlab基础操作(1)

信号与系统实验课学了matlab,知识点有点零散,很容易忘记,记录一下。
1.先备知识
1.1matlab工作方式:
(1)直接在命令行运行。
(2)创建脚本文件,输入代码,保存为.m文件运行。
1.2创建函数图函数:
(1)连续图:plot(t,x(t));(t为自变量,x(t)为关于t的函数)
(2)离散图:stem(t,x(t));
(3)如何在同个图上建立多个坐标系?
解决方案:subplot(a,b,k);
a:行; b:列; k:从左往右,从上往下数第几个图
在subplot后面加plot/stem即可打印图
1.3函数图细化
(1)函数标题:title(‘标题’);
(2)函数坐标轴名称:xlabel(‘x轴名称’);ylabel(‘y轴名称’);
(3)函数坐标轴范围:axis([xmin xmax ymin ymax]);
(4)如果一个坐标中有多个函数图,可用legend(‘y1’,‘y2’)表示。表示效果为表明各个函数图像的函数名。
1.4数组
(1)冒号产生数组
x=a:(b:)c
a:数组起始数;
b:步长,可以省略,若是省略则默认步长为1
c:数组最后一个数
matlab基础操作(1)_第1张图片
(2)linspace产生数组
x=linspace(a,b,c);
将区间[a,b]均匀抽样c点作为数组x
当给二维数组赋值时,用分号表示一行的结束。e.g.z=[1 2;3 4]
(3)基本矩阵函数
matlab基础操作(1)_第2张图片
(3)数组的基本运算
1.数组与标量相加/相乘
e.g.y=x+1;z=3
y
2.2个数组的对应元素相乘除
z=x.*y;z=x./y;
非常容易忘记
3.确定数组大小
matlab基础操作(1)_第3张图片
1.5关于建立函数文件
M文件第一行为:function……(你的函数)
创建之后便可以在命令行直接调用
要注意的是文件名保存时应该和函数名一致,不然无法调用

matlab基础操作(1)_第4张图片
1.6循环语句
(1)for
matlab基础操作(1)_第5张图片
(2)while
matlab基础操作(1)_第6张图片
1.7关于数的精确
matlab基础操作(1)_第7张图片
1.8关于fprintf函数
matlab基础操作(1)_第8张图片
1.9序列的基本运算
matlab基础操作(1)_第9张图片

2.小练习
2.1题目
matlab基础操作(1)_第10张图片
matlab基础操作(1)_第11张图片
2.2代码及运行结果
1.

%(1)
t1=-1:0.01:5;
x1=-2*(t1>=1);
subplot(2,2,1);
plot(t1,x1);
axis([-2 6 -4 4]);
title('x1(t)=-2u(t-1)');
xlabel('t');
%(2)
t2=0:0.05:30;
x2=exp(-0.1*t2).*sin((2/3)*t2);
subplot(2,2,2);
plot(t2,x2);
title('x2(t)=exp(-0.1t)* sin(2t/3)');
xlabel('t');
%(3)
t3=-0.1:0.001:0.1;
x3=cos(100*t3)+cos(3000*t3);
subplot(2,2,3);
plot(t3,x3);
title('x3(t)=cos(100t) + cos(3000t)');
xlabel('t');
%(4)
t4=0:5:200;
t=pi*t4;
x4=cos(0.1*t).*cos(0.8*t);
subplot(2,2,4);
plot(t4,x4);
title('x4(t)=cos(0.1*pi*t).*cos(0.8*pi*t)');
xlabel('t');
axit([0 200 -2 2]);

运行结果:

matlab基础操作(1)_第12张图片
注意:自变量精确度不同的话展示的图像有所差异,步长越小可能使图像更加光滑(如1,2)也可能使得图像噪声更大(如3);具体与函数有关。
2.

%(1)
k1=-14:0.01:15;
x1=((k1>=-5)&(k1<=5));
subplot(2,1,1);
plot(k1,x1);
title('x1[k]');
xlabel('k');
axis([-14 15 -1 2]);
%(2)
k2=-19:0.01:20;
k=k2*pi;
x2=0.9.^k2.*(sin(0.25*k)+cos(0.25*k));
subplot(2,1,2);
plot(k2,x2);
title('x2[k]');
xlabel('k');

运行结果:
matlab基础操作(1)_第13张图片
3.

%(1)
format long
k=-100:1e6;
u = (k>=0);
x = (0.5).^k.*u;
E = sum(abs(x).^2)
 
%(2)
k1 = 0:9;
k2 = 0:19;
k3 = 0:29;
u1 = (k1>=0);
u2 = (k2>=0);
u3 = (k3>=0);
x1 = (0.5).^k1.*u1;
x2 = (0.5).^k2.*u2;
x3 = (0.5).^k3.*u3;
E1 = sum(abs(x1).^2)
E2 = sum(abs(x2).^2)
E3 = sum(abs(x3).^2)
p1 = E1/E;
p2 = E2/E;
p3 = E3/E;
fprintf('p1 = %.16f\n',p1)
fprintf('p2 = %.16f\n',p2)
fprintf('p3 = %.16f\n',p3)

结果:
E =1.333333333333333
E1 =1.333332061767578
E2 =1.333333333332121
E3 = 1.333333333333333
p1 = 0.9999990463256836
p2 = 0.9999999999990905
p3 = 1.0000000000000000

注意:该题format long函数发挥了作用,否则你会看到三个能量是相同的。
4.

%1)
x=[1,2,0,-1,3,2];  
h=[1,-1,1];
y=conv(x,h);
subplot(2,1,1);
stem([0:length(y)-1],y);
title('y[k]');xlabel(' k');
%2)
y=xcorr(x,y);
subplot(2,1,2);
m=(length(y)-1)/2;stem([-m:m],y);
title('Rxy[n]');xlabel('n');

运行结果
matlab基础操作(1)_第14张图片
5.
(1)

N=50;
k=0:(N-1);
s=cos(0.08*pi*k);
subplot(2,2,1);
stem(k,s);
title('cos(0.08*pi*k)');
xlabel('k');
axis([-1 60 -1.5 1.5]);
d=rand(1,N);
subplot(2,2,2);
stem(k,d);
title('d[k]');
xlabel('k');
axis([-1 60 -0.5 1.5]);
x=s+d;
subplot(2,2,3);
stem(k,x);
title('x=x0+d');
xlabel('k');
axis([-1 60 -1 2]);

结果:
matlab基础操作(1)_第15张图片
(2)

N=50;
k=0:(N-1);
s=cos(0.08*pi*k);
subplot(2,2,1);
stem(k,s);
title('cos(0.08*pi*k)');
xlabel('k');
axis([-1 60 -1.5 1.5]);
d=rand(1,N);
x=s+d;
subplot(2,2,2);
stem(k,x);
title('x=x0+d');
xlabel('k');
axis([-1 60 -1 2]);
h=[1,1,1];
y=conv(x,h);
subplot(2,2,3);
stem((0:length(y)-1),y);
title('y=h*x');
xlable('k');

运行结果
matlab基础操作(1)_第16张图片
这个5(2)有点奇怪。。
不对的地方欢迎大家指正。

你可能感兴趣的:(matlab,matlab)