matlab实验报告.docx
- 文档编号:12760609
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:122
- 大小:1.90MB
matlab实验报告.docx
《matlab实验报告.docx》由会员分享,可在线阅读,更多相关《matlab实验报告.docx(122页珍藏版)》请在冰豆网上搜索。
matlab实验报告
Matlab实验报告
实验目的和实验原理:
本次实验的目的是使我们熟悉并掌握M文件、M函数和循环语句、判断语句的用法。
实验内容:
实验2编写function函数求arcsinx的值,主要是利用了while循环进行累加并判断循环结束。
Code:
functions=arcsin(x)
%求arcsin(x)的值
n=0;
s=0;
n_1=factorial(n);%n_1表示n!
n_2=factorial(2*n);%n_2表示(n2)!
whilen_2*x^(2*n+1)/(2^(2*n)*(n_1)^2*(2*n+1))>=0.002
s=s+n_2*x^(2*n+1)/(2^(2*n)*(n_1)^2*(2*n+1));
n=n+1;
n_1=factorial(n);
n_2=factorial(2*n);
end;
s=s+n_2*x^(2*n+1)/(2^(2*n)*(n_1)^2*(2*n+1));
实验3中的第一小题,求最大公约数是利用了while循环以及辗转相除法的思路,而最小公倍数为两数之积除以他们的最大公约数;第二小题判断一个数是否为素数,则是利用了while循环和穷举的思路,从2循环到sqrt(n),若n无法被其中任何一个数整除,则n为素数,否则就不是。
Code1:
function[b,y]=by(m,n)
%求两个正整数的最大公约数b,最小公倍数y
ifm>n
a=m;
b=n;
else
a=n;
b=m;
end;
%a为m,n中较大者,b为较小者
t=mod(a,b);
whilet~=0
a=b;
b=t;
t=mod(a,b);
end;
y=m*n/b;
Code2:
functiont=sushu(n)
%判断n是否为素数,若是返回1,否则返回0
t=1;
m=2;
ifn==1
t=0;
else
whilem<=floor(sqrt(n))
ifmod(n,m)==0
t=0;
break;
end;
m=m+1;
end;
end;
实验4为验证魔方阵的奇妙特性,这题主要使用sum求和的两种不同的方式和for循环的运用。
Sum(X,1)表示求X矩阵的所有列之和而sum(X,2)则表示求X矩阵的所有行之和,至于对角线之和,利用for循环即可求出。
Code:
functionmag(N)
%输出矩阵N的各行,各列以及对角线的和
Line=sum(N,2);%输出各行之和
Col=sum(N,1);%输出各列之和
s1=0;%左对角线
s2=0;%右对角线
form=1:
length(N)
s1=s1+N(m,m);
s2=s2+N(m,length(N)-m+1);
end;
disp('各行之和:
');
Line
disp('各列之和:
');
Col
disp('左对角线之和:
');
s1
disp('右对角线之和:
');
s2
实验5主要运用了if判断和for循环,基本思路是穷举出2到999的每个数,看是否满足题目给出的两个条件。
其中各位数字之和的求法是利用对10求模逐一算出每个位的值并累加起来,素数的判断则是运用了实验3中编好的函数。
functionprint()
%输出[2,999]中各位之和为奇数的素数
forn=2:
999
if(sushu(n))%调用之前编写的判断素数的函数
cnt=0;%用来记录各位之和
k=n;
whilek>=1
temp=mod(k,10);
cnt=cnt+temp;
k=(k-temp)/10;
end;
ifmod(cnt,2)~=0
fprintf('%d\n',n);
end;
end;
end;
实验主要结论、收获和体会:
通过本次实验,我明白了matlab中许多计算可以通过循环、判断等复合语句构成,从中我掌握了while、for、if语句的使用方法,M文件的创建、保存和调用。
同时感受到matlab功能的强大。
实验报告
实验目的和实验原理:
本次实验的目的是使我们了解和掌握符号函数的定义、声明、计算。
具体而言,我们主要学习了sym、syms、subs、diff、int、limit、simplify、solve、dsolve、fourier、laplace、ztrans等函数的用法,进一步加深了matlab对符号函数的一些基本操作的理解。
课程中,我们还学习了ezplot的用法,便于对一些函数信号进行绘图处理。
实验原理便是根据这些所学函数对符号函数进行各种操作。
实验内容:
实验1求每个表达式的极限,主要就是运用了符号变量的定义、符号函数的构造以及limit函数的运用。
Code:
symsxa;
y1=sym('(sin(x)-sin(a))/(x-a)');
y2=sym('((2*x+3)/(2*x+1))^(x+1)');
y3=sym('(sqrt(x)-sqrt(a)+sqrt(x-a))/(sqrt(x^2-a^2))');
y4=sym('tan(2*x)/tan(5*x)');
result1=limit(y1,x,a)
result2=limit(y2,x,inf)
result3=limit(y3,x,a,'right')
result4=limit(y3,x,a,'left')
result5=limit(y4,x,0)
实验2中的两个小题,都是考察微分符号“D”的理解、运用以及diff函数的运用操作。
Code:
symstxyz;
f=sym('t*sin(x)');
result1=diff(f,x)
result2=diff(f,t)
result3=diff(diff(f,x),t)
f=sym('x^(y^z)');
result4=diff(f,x)
result5=diff(f,y)
result6=diff(f,z)
实验3在课堂上给老师检查过,这里就不论述了。
实验4是对方程组的求解,主要运用了以下几个知识点:
符号方程的构造、solve函数对符号方程求解和subs函数的应用。
Code:
symsxyzabc;
[x,y,z]=solve(x*(x+y+z)-a,y*(x+y+z)-b,z*(x+y+z)-c);
x=subs(x,{a,b,c},{16,12,18})
y=subs(y,{a,b,c},{16,12,18})
z=subs(z,{a,b,c},{16,12,18})
实验5是对二阶常系数非齐次微分方程的求解,主要运用了“D”微分的表示,符号函数的构造以及dsolve函数对微分方程的求解。
Code:
symsxy;
y=dsolve('D2y-5*Dy+6*y=x*exp(2*x)','x')
实验6与实验5类似,只是在实验5的基础上添加了初始条件,即对dsolve求解时要加上对初始条件的处理。
Code:
symsst;
dsolve('D2s+2*Ds+s=0','s(0)=4','Ds(0)=-2','t')
实验7考察的是拉式变换的操作,即对laplace函数的应用。
Code:
symsAats;
f=A*exp(a*t);
laplace(f,t,s)
实验8与实验7类似,是求反拉式变换,也即ilaplace函数的应用,ilaplace与laplace操作方法相同。
Code:
symsst;
f=s/((s^2-1)^2);
ilaplace(f,s,t)
实验9是求反Z变换,与前两题的laplace变换一样的用法,只是用的函数是iztrans而已。
Code:
symsztn;
x=z^2/(z^2-1.5*z+0.5);
iztrans(x,z,n)
实验10则是运用ztrans进行z变换。
Code:
symsnz;
x=(1/2)^n;
ztrans(x,n,z)
实验主要结论、收获和体会:
通过本次实验,我理解了符号变量、符号函数以及对符号函数操作的各种函数的用法。
Matlab可以对符号函数进行许多常用的基本操作,这对于信号的处理、绘图、分析是非常有实用意义的。
在实验中,我学习了微分、积分、求极限、拉式变换、傅里叶变换、Z变换等,对今后的学习有很大的帮助。
实验报告
实验目的和实验原理:
实验1的目的是了解、熟悉并学会如何用数值方式和字符方式来表示基本信号以及绘制出相应图形,实验2的目的主要有学会运用MATLAB进行连续时间信号时移,反折和尺度变换;学会运用MATLAB进行连续信号微分、积分运算;学会运用MATLAB进行连续信号相加、相乘运算;学会运用MATLAB进行连续信号的奇偶分解。
实验原理主要就是运用了先前学过的数值运算和符号运算等知识,再加上一些对基本信号的构造以及对信号的处理(例如合成、反折、平移、尺度变换、微分、积分、相加、相乘、奇偶分解等),即可完成这次实验。
实验内容:
(由于实验1的第二题和实验2的第二题课堂上给老师看过,这里就不再写了)
实验1第3题,利用MATLAB命令画出复信号的实部,虚部,模和幅角,按老师的要求,分别用数值方式和字符方式来解决此题。
数值方式的原理就是利用了离散取点,利用连续信号在等时间间隔点的取样值来近似表示连续信号,即当取样时间间隔足够小时,这些离散样值能够被MATLAB处理,并且能较好地近似表示连续信号。
符号处理则是将一个信号用符号表达式来表示,这样MATLAB内部就会进行相应处理,此时必须用ezplot来进行绘图。
Code:
%数值处理
figure
(1);
t=-6:
0.01:
6;
f=2+exp(j*pi/4.*t)+exp(j*pi/2.*t);
R=real(f);
I=imag(f);
A=abs(f);
G=angle(f);
subplot(2,2,1);
plot(t,R);
title('实部');
subplot(2,2,2);
plot(t,I);
title('虚部');
subplot(2,2,3);
plot(t,A);
title('模');
subplot(2,2,4);
plot(t,G);
title('幅角');
%符号处理
figure
(2);
symst;
f=sym('2+exp(j*pi/4*t)+exp(j*pi/2*t)');
R=real(f);
I=imag(f);
A=sqrt(R.^2+I.^2);
G=atan(I./R);
subplot(2,2,1);
ezplot(R);
title('实部');
subplot(2,2,2);
ezplot(I);
title('虚部');
subplot(2,2,3);
ezplot(A);
title('模');
subplot(2,2,4);
ezplot(G);
title('幅角');
运行结果:
实验1第4题主要是运用了square函数,square函数有两个参数(T,P),T表示矩形脉冲的周期,但我认为它更像是信号的w。
P表示占空比。
了解了这些之后,就可以轻而易举的解决此题。
Code:
%数值处理
subplot(2,1,1);
t=-6:
0.01:
6;
y=square(2.*pi.*t,50);
plot(t,y);
gridon;
axis([-22-1.51.5]);
title('幅度为1,周期为1,占空比为50的周期矩形脉冲信号');
%符号处理
subplot(2,1,2);
symst;
y=sym('square(2*pi*t,50)');
ezplot(y);
gridon;
axis([-22-1.51.5]);
title('幅度为1,周期为1,占空比为50的周期矩形脉冲信号');
运行结果:
接下来是书本上的课后题目。
7.1是用向量表示法也即数值方法绘制信号的波形,原理与实验1第3题类似。
代码如下。
Code:
%7.1
subplot(2,2,1);
t=-3:
0.01:
3;
f1=4.*sin(2.*pi.*t-pi/4);
plot(t,f1);
gridon;
title('4*sin(2*pi*t-pi/4)');
subplot(2,2,2);
t=-2*pi:
0.01:
2*pi;
f2=(1-exp(-2.*t)).*u(t);
plot(t,f2);
gridon;
axis([-4401.5]);
title('1-exp(-2*t))*u(t)');
subplot(2,2,3);
t=-4:
0.01:
4;
f3=u(t+2)-u(t-2);
plot(t,f3);
gridon;
axis([-44-0.51.5]);
title('u(t+2)-u(t-2)');
subplot(2,2,4);
t=-3:
0.01:
3;
f4=exp(-2*abs(t));
plot(t,f4)
gridon;
axis([-4401.5]);
title('exp(-2*abs(t)');
运行结果:
7.2与7.1一样,不同的是利用符号运算来处理所给的问题,实验原理与实验1第3题类似。
代码如下。
Code:
%7.2
symst;
subplot(2,2,1);
f1=sym('4*sin(2*pi*t-pi/4)');
ezplot(f1);
gridon;
title('4*sin(2*pi*t-pi/4)');
subplot(2,2,2);
f2=sym('(1-exp(-2*t))*Heaviside(t)');
ezplot(f2);
gridon;
title('1-exp(-2*t))*u(t)');
subplot(2,2,3);
f3=sym('Heaviside(t+2)-Heaviside(t-2)');
ezplot(f3);
gridon;
axis([-44-0.51.5]);
title('u(t+2)-u(t-2)');
subplot(2,2,4);
f4=sym('exp(-2*abs(t))');
ezplot(f4)
gridon;
title('exp(-2*abs(t)');
运行结果:
7.4的也是分别用数值运算和符号运算对信号进行处理,并且还要考虑信号的周期性。
因此坐标轴应该取长一点,以便观察。
两种方法的代码如下:
Code:
%7.4数值处理
subplot(2,1,1);
t=-15:
0.01:
15;
f1=1+cos(pi/4.*t-pi/3)+2*cos(pi/2.*t-pi/4)+cos(2*pi.*t);
plot(t,f1);
title('
(1)');
%从图中可以看出此为周期函数,其周期大约为8
subplot(2,1,2);
t=-15:
0.01:
15;
f2=sin(t)+2*sin(pi.*t);
plot(t,f2);
title('
(2)');
%从图中可以看出此函数貌似不具有周期性,因为图中很难找到相同的波形段,都有一点差异
%符号处理
symst;
subplot(2,1,1);
f1=sym('1+cos(pi/4*t-pi/3)+2*cos(pi/2*t-pi/4)+cos(2*pi*t)');
ezplot(f1);
title('
(1)');
%从图中可以看出此为周期函数,其周期大约为8
subplot(2,1,2);
f2=sym('sin(t)+2*sin(pi*t)');
ezplot(f2);
title('
(2)');
%从图中可以看出此函数貌似不具有周期性,因为图中很难找到相同的波形段,都有一点差异
运行结果:
7.5考察了对复信号的处理,实验原理与实验1第3题类似,不过要注意在用符号运算处理时,abs()和angle()运算特别是angle()运算无法对符号函数进行操作(abs运算有时可以用有时会报错)。
代码如下
Code1:
%7.5数值处理
figure
(1);
t=-5:
0.01:
5;
f1=2+exp(j.*pi./4.*t)+exp(j.*pi./2.*t);
subplot(2,2,1);
R1=real(f1);
plot(t,R1);
title('实部');
subplot(2,2,2);
I1=imag(f1);
plot(t,I1);
title('虚部');
subplot(2,2,3);
A1=abs(f1);
plot(t,A1);
title('模');
subplot(2,2,4);
G1=angle(f1);
plot(t,G1);
title('幅角');
figure
(2);
t=-5:
0.01:
5;
f2=exp(-(2+j*2).*t);
subplot(2,2,1);
R2=real(f2);
plot(t,R2);
title('实部');
subplot(2,2,2);
I2=imag(f2);
plot(t,I2);
title('虚部');
subplot(2,2,3);
A2=abs(f2);
plot(t,A2);
title('模');
subplot(2,2,4);
G2=angle(f2);
plot(t,G2);
title('幅角');
运行结果:
Code2:
%7.5符号处理
figure
(1);
symst;
f1=sym('2+exp(j*pi/4*t)+exp(j*pi/2*t)');
subplot(2,2,1);
R1=real(f1);
ezplot(R1);
title('实部');
subplot(2,2,2);
I1=imag(f1);
ezplot(I1);
title('虚部');
subplot(2,2,3);
A1=sqrt(R1.^2+I1.^2);
ezplot(A1);
title('模');
subplot(2,2,4);
G1=atan(I1./R1);
ezplot(G1);
title('幅角');
figure
(2);
f2=sym('exp(-(2+2*i)*t)');
subplot(2,2,1);
R2=real(f2);
ezplot(R2);
title('实部');
subplot(2,2,2);
I2=imag(f2);
ezplot(I1);
title('虚部');
subplot(2,2,3);
A2=sqrt(R2^2+I2^2);
ezplot(A2);
title('模');
subplot(2,2,4);
G2=atan(I2/R2);
ezplot(G2);
title('幅角');
运行结果:
7.6的原理也与上述的差不多,不过如果能利用函数来处理此题,会事半功倍。
函数代码如下(我函数里多用了一个参数用来表示是数字处理还是符号处理)。
函数代码
Code:
functionf=f7_6(t)
f=sin(pi.*t)./t;
M文件代码
Code:
%7_6数字处理
figure
(1);
t=-5:
0.01:
5;
subplot(2,2,1);
f1=2*f7_6(t-1);
plot(t,f1);
title('
(1)');
subplot(2,2,2);
f2=f7_6(2*t);
plot(t,f2);
title('
(2)');
subplot(2,2,3)
f3=-f7_6(0.25*t);
plot(t,f3);
title('(3)');
subplot(2,2,4);
f4=f7_6(1-1/2.*t);
plot(t,f4);
title('(4)');
%符号处理
figure
(2);
symst;
fs=sym('sin(pi*t)/t');
subplot(2,2,1);
f1=2*subs(fs,'t','t-1');
ezplot(f1);
title('
(1)');
axis([-55-510])
subplot(2,2,2);
f2=subs(fs,'t','2*t');
ezplot(f2);
title('
(2)');
axis([-55-24])
subplot(2,2,3)
f3=-subs(fs,'t','0.25*t');
ezplot(f3);
title('(3)');
axis([-55-42])
subplot(2,2,4);
f4=subs(fs,'t','1-1/2*t');
ezplot(f4);
title('(4)');
axis([-55-24])
运行结果:
7.10主要运用的了square,rectpuls,swatooth函数,只要了解他们的用法(不懂可以help他们的用法)解决此题还是很容易的。
Code:
clearall;clc;
%7.10数值处理
figure
(1);
t=-5:
0.01:
5;
subplot(2,3,1);
f1=5.*square(pi.*t);
plot(t,f1);
gridon;
axis([-66-66]);
title('
(1)');
subplot(2,3,2);
f2=2.*square(2.*pi.*t,60);
plot(t,f2);
gridon;
axis([-66-33]);
title('
(2)');
subplot(2,3,3);
f3=square(2.*t);
plot(t,f3);
gridon;
axis([-66-22]);
title('(3)');
subplot(2,2,3);
f4=21.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 实验 报告