当前位置:文档之家› MATLAB_实验5

MATLAB_实验5

MATLAB_实验5
MATLAB_实验5

实验5 MATLAB在信号与系统的应用

【实验目的】

1、了解并熟悉MATLAB实现常用连续时间信号的产生方法;连续系统的时域和频域分析方法。

2、掌握MATLAB程序的编程方法。

3、了解MATLAB信号处理工具箱函数的调用方法。

【实验内容】

1、对书上例题的总结

例1 绘制了单位冲激函数、单位阶跃函数与复指数函数的图形,用到的关键语句

单位冲激函数:x1=zeros(1,length(t)); %对所有信号初始化,t为时间

x1(n1)=1/dt; %给出t1时刻脉冲信号,dt为时间间隔

单位阶跃函数:x2 = [zeros(1,n1),ones(1,length(t)-n1)];%产生阶跃信

号,n1为t1对应的样本序号

例2 求解了LTI系统的零输入响应,用到了经典法求解,关键语句如下:

p=roots(a); %求系统的极点

V=rot90(vander(p));c= V\Y0'; % 用范德蒙特矩阵求对应于各极点的系数

for k=1:n y= y+c(k)*exp(p(k)*t);end

例3 求解n阶LTI系统的冲激响应,用到了residue函数求解极点和留数,还用到了for语句叠加各根分量。

例4 主要是卷积的计算。用到的函数有conv函数计算卷积,input函数等待用户输入数值,fliplr(h)函数将h左右翻转。

例5 求LTI系统的零状态响应,和求解零输入同样用到留数residue函数来求解冲激响应函数,并且绘制冲激响应函数的图形,然后将其与输入信号的卷积求出,即输出函数,最后绘制输出函数的图形。

例7 将周期方波分解为多次正弦波之和,用程序演示谐波合成情况。用到的新函数是line([0,pi+0.5],[pi/4,pi/4]) % 加上方波幅度线及标注

halft=ceil(length(t)/2);

mesh(t(1:halft),[1:10],y(:,1:halft)) %绘制三维图形

例10 比较调幅信号通过带通滤波器后与原波形的区别。用到了频率响应函数求解滤波器在各个频点上的频率响应,可以用H=polyval(b,j*w) ;也可以用H=freqs(b,a,w);可以再下图中观察到它们的去区别:

例11 非周期信号(方波)的频谱分析,用到了傅里叶变换,

F1 = f*exp(-j*t'*w1)*dt; % 求付利叶变换

w = [-fliplr(w1),w1(2:Nf)]; % 补上负频率

F = [fliplr(F1),F1(2:Nf)]; % 补上负频率区的频谱

2、连续信号表示:

编写程序:产生下列连续信号,并且绘制出相应的波形图:

1)、()(2)(4)(26)

=-+- -≤≤

f t u t u t t

程序如下:

t=-2:0.05:6;

x1=t>=2;

x2=t>=4;

x=x1+x2;

stairs(t,x,'linewidth',1.5)

axis([-2,6,-0.1,2.1])

grid on

title('f(t)=u(t-2)+u(t-4)') xlabel('t') ylabel('f(t)')

图形显示:

2)、()c o s (4)(03)t ft e

t t π-= ≤≤

程序如下:

t=(0:0.01:3)';

x1=exp(-t)*[1 -1];%生成exp(-t)和-exp(-t),即包络曲线 x2=cos(4*pi*t); x=exp(-t).*x2; plot(t,x1,t,x)

legend('x1','x1','x'),grid on

图形显示:

3)、(0.20.5)()3(04)j t

f t e

t ππ+= ≤≤ 程序如下:

t=0:pi/100:4*pi;

f=3*exp((0.2+j*0.5*pi)*t);

plot(t,f),grid

legend('f')

xlabel('t'),ylabel('f')

图形显示:

4)、周期矩形信号。一连续周期矩形信号频率为10Hz,信号幅度在-1~1之间,脉冲宽度与周期的比例是1:2,用128点采样,显示三个周期的信号波形(square 函数)。

程序如下:

U=1;N=128;f=10;T=1/f;t=0:T/N:3*T;

u=U*square(2*pi*f*t);

plot(t,u)

axis([0,3*T+eps,-1.1,1.1]),grid on

图形显示:

3、信号卷积求解: 1)、已知两信号分别为:

0.61()(010)t f e u t t -= <<

2()(015)f u t t = <<

求两信号的卷积和并画出卷积波形。 程序如下: clear

t1=0:0.1:10; t2=0:0.1:15; f1=exp(-0.6*t1); f2=ones(1,length(t2));

tn=t1(length(f1))+t2(length(f2)); f=conv(f1,f2) t=0:0.1:tn;

subplot(3,1,1),plot(t1,f1),title('f1的图形') subplot(3,1,2),plot(t2,f2),title('f2的图形')

subplot(3,1,3),plot(t,f),title('f=conv(f1,f2)的图形') xlabel('t'),ylabel('f'),grid on

结果显示:

2)、已知两信号分别为:

f1(t)=0.5t (0

由于conv 求卷积时,两个函数的时间是从0开始求解的,所以对于该题不能直接

利用conv 函数来求解卷积,所以必须编写一个函数,函数可以从任意时刻开始求卷积,编写的Function 函数如下,命名为conv_m ,以便调用:

function [ y ny] = conv_m(x1,x2,t1,t2,dt) y=conv(x1,x2); ny1=t1(1)+t2(1);

ny2=t1(length(x1))+t2(length(x2)); ny=ny1:dt:ny2; end

程序如下:

t1=0:0.05:2;dt=0.05; t2=-1:0.05:3; x1=0.5*t1; x2=2*t2;

[ y ny] = conv_m(x1,x2,t1,t2,dt);

%以上所有程序可以用下面一个式子代替,实现的功能都相同 % [ y ny] = conv_m(0.5*[0:0.05:2],2*[-1:0.05:3],0:0.05:2,-1:0.05:3,0.05) plot(ny,y) grid on

xlabel('ny'),ylabel('y')

title('f1(t)=0.5t 与f2(4)=2t 的卷积')

4、系统时域求解:

已知某连续时间系统的微分方程为:()2()()()2()r t r t r t e t e t ''''++=+,输入信号为)()

(2t u e t e t -=

1)、求解该系统的冲激响应h(t),及阶跃响应g(t)。 2)、求解该系统的零状态响应。

3)、当r(0-)=2,r’(0-)=-1时,求解该系统的零输入响应。

要求写出表达式,并且绘制波形。

先编写程序绘制各自响应的波形图,再求其表达式

①绘制冲激响应、阶跃响应与零状态响应图形的程序如下:

clear

b=[0,1,2];a=[1,2,1];t=-1:0.05:10;

ut=t>=0;

x=exp(-2*t).*ut;

impulse(b,a),grid on,hold on %冲激响应

step(b,a,'--');%阶跃响应

legend('冲激响应','阶跃响应')

figure(2)

lsim(b,a,x,t);%零状态响应

legend('零状态响应')

结果显示:

②绘制零输入响应图形的程序如下:

clear

a=[1,4,3];

n=length(a)-1;

r0=[2,-1];

p=roots(a); % 求系统的极点

V=rot90(vander(p));c= V\r0'; % 用范德蒙特矩阵求对应于各极点的系数t=0:0.001:5; y=zeros(1,length(t));

for k=1:n y= y+c(k)*exp(p(k)*t);end % 将各分量叠加

plot(t,y),grid on

title('零状态响应')

图形为:

③下面是求各自响应表达式的程序:

clear

b=[1,2];a=[1,4,3];

syms t

xt=exp(-2*t);

sys=tf(b,a)

[r,p,k]=residue(b,a);

ht=0;

for i=1:length(r)

ht=ht+r(i)*exp(p(i)*t);

end

ht %冲激响应

gt=int(ht) %阶跃函数

结果显示:

Transfer function:

s + 2

-------------

s^2 + 4 s + 3

ht =

1/(2*exp(t)) + 1/(2*exp(3*t))

- 1/(2*exp(t)) - 1/(6*exp(3*t))

5、连续信号频谱分析

(1)傅里叶变换:

a、设有一周期方波信号,幅度E=1.5V,周期T=100sμ,脉冲宽度与周期之

τ=,时间轴上采样点数取1000点。

比为12

t

1)、试演示其谐波合成情况。

程序如下:

clear

T=100e-6;w=2*pi/T;E=1.5;

t=linspace(0,4e-4,1000);

n=input('n= ');

y=0;

for i=1:n

y=y+4*E/(i*pi)*sin(i*pi/2)^2*sin(i*w*t);

end

plot(t,y),grid on

y = zeros(10,max(size(t))); x = zeros(size(t));

for k=1:2:19

x = x +4*E/(k*pi)*sin(k*pi/2)^2*sin(k*w*t) ; y((k+1)/2,: ) = x; end

% 将各波形迭合绘出

figure(2),plot(t,y(1:9,: )),grid,hold on

x=E*square(2*pi/T*t);

plot(t,x,'k')

text(pi+0.5,pi/4,'pi/4')

halft=ceil(length(t)/2);

figure(3),mesh(t(1:halft),[1:10],y(:,1:halft)), pause

显示结果:

n= 5 n=99

从上图中比较6次谐波与99次谐波合成的图形,99次谐波合成的图形更加接近原方波,说明谐波次数越多,合成效果越好,误差越小。下面两个图形是9次谐波分别绘出的图形与其三维图形。

2)、分析其傅里叶频谱。

程序如下:

clear, format compact

E=1.5; T=100e-6; w=2*pi/T;

N=input('取的谐波次数N= '); % 取的谐波次数愈高,分段数得愈多

t=linspace(0,T,1000);dt=T/999; % 列出t数组,取100点,有99个间隔dt ut=t>=0;

ut1=t>=T/2;

ut2=t>=T;

u=E*(ut-2*ut1+ut2);

for k=0:N % 循环求系数ak,bk,Ak

a(k+1)=trapz(u.*cos(k*w*t))*dt/T*2; % 变量下标不得取0,故将k加1 b(k+1)=trapz(u.*sin(k*w*t))*dt/T*2;

A(k+1)=sqrt(a(k+1)^2+b(k+1)^2);

end

[[0:N]',[A(1)/2,A(2:end)]'] % 显示各傅立叶分量,恢复与k的对应关系stem(0:N,[A(1)/2,A(2:end)]) % 画出各傅立叶分量与k的对应关系

Us11=sqrt(trapz(u.^2)*dt/T) % 用总功率求出的有效值

Us12=sqrt(A(1)^2/4+sum(A(2:end).^2/2)) % 用各分量功率和求出的有效值结果显示:

取的谐波次数N= 9

ans =

0 0.0008

1.0000 1.9099

2.0000 0.0015

3.0000 0.6366

4.0000 0.0015

5.0000 0.3820

6.0000 0.0015

7.0000 0.2728

8.0000 0.0015

9.0000 0.2122

Us11 =

1.4996

Us12 =

1.4694

b、有一非周期方波信号x(t)的脉冲宽度为1ms,信号持续时间为2ms,在0~2ms区间外信号为0。试求其信号的频谱特性,设置不同的时间分割点数和频谱点数,观察频谱泄漏情况;求其逆变换并与原时间信号的波形进行比较。

程序如下:

clear,tf=10;

clear, format compact

T=2e-3;

t=linspace(0,T,300);dt=T/299; % 列出t数组,取100点,有99个间隔dt

ut=t>=0;

ut1=t>=T/2;

ut2=t>=T;

u=(ut-2*ut1+ut2); % 给出信号(此处是方波)

wf=input('需求的频谱宽度wf= ');

Nf=input('需求的频谱点数Nf= ');

w1=linspace(0,wf,Nf);dw=wf/(Nf-1);

F1=u*exp(-j*t'*w1)*dt; % 求付利叶变换

w=[-fliplr(w1),w1(2:Nf)]; % 补上负频率

F=[fliplr(F1),F1(2:Nf)]; % 补上负频率区的频谱

subplot(1,2,1),plot(t,u,'linewidth',1.5),grid

%axis([0,10,0,1.1])

subplot(1,2,2),plot(w,abs(F),'linewidth',1.5),grid

结果显示:

需求的频谱宽度wf= 100000

需求的频谱点数Nf= 100000

将上述程序中对时间t 的划分改为t=linspace(0,T,33);dt=T/32;有明显的频谱泄漏情况,如下图(两个图形中的频谱宽度和频谱点数取得是一样的)

试分别用Laplace 和ilaplace 函数求 (1)()sin()()t f t e at u t -=的Laplace 变换;

(2)2

2()1

s F s s =+的Laplace 反变换。

程序如下: clear

syms t a s

f1=exp(-t)*sin(a*t); F1=laplace(f1)

%求解(2)

F2=s^2/(s^2+1); f2=ilaplace(F2)

结果显示: F1 =

a/((s + 1)^2 + a^2) f2 =

dirac(t) - sin(t)

6、系统零极点及系统分析

已知系统函数分别为

1222

1

()(1)1

()(1,4)

()H s s H s s αα

αβαβ=

=+= ==++ 求以上系统的零极点分布图,并通过显示结果的图形(零极点分布及时域衰减等)来判断系统的稳定性,给出结论。 程序如下: clear syms s

a1=1; b1=4; H1=1/(s+a1);

H2=1/((s+a1)^2+b1^2); b=[1];a=[1,1]; pzmap(b,a)

axis([-1.1,0.1,-0.5,0.5]) %求解H2的零极点图 figure(2)

c=[1];d=[1,2,17]; pzmap(c,d)

axis([-1.1,0.1,-5,5])

结果显示:h1 =

1/exp(t) h2 =

sin(4*t)/(4*exp(t))

然后绘制出h1与h2的图形,结合零极点图判断系统的稳定性

t=linspace(0,10,100); h1 =1./exp(t);

h2 =sin(4*t)./(4*exp(t)); plot(t,h1),legend('h1') figure(2)

plot(t,h2),legend('h2')

通过上图两个零极点图形可以观察到两个系统函数H(s)的极点都位于y 轴左半平面,故可知这两个系统是稳定的。通过绘制出它们各自的时域图形观察到图形都是随时间轴收敛的,故它们是稳定系统。 7、系统频响

1)、已知RC 一阶高通电路图的系统函数H(s)为

()()1()1

R U s R sRC

H s U s SRC R sC

===

++ 其中:R=200Ω,C=0.47F μ。求其幅度频率响应与相位频率响应,并图形表示,分析该系统具有什么滤波特性(低通?高通?等等)。 程序如下:

clear

R=200;C=0.47e-6;

w=[0:50000]; %

b=[R*C,0];a=[R*C,1];

H=polyval(b,j*w)./polyval(a,j*w);

figure(1)

subplot(2,2,1),plot(w,abs(H)),grid % 幅度

title('幅度频率曲线')

subplot(2,2,2),semilogy(w,abs(H)),grid

title('幅度频率曲线')

subplot(2,2,3),plot(w,angle(H)),grid

title('相位频率曲线')

subplot(2,2,4),semilogy(w,angle(H)),grid

title('相位频率曲线')

结果显示

根据上图幅频曲线可以观察到该系统是高通滤波特性,通过两个幅频曲线的对比可知,纵轴为对数时更能清晰的观察到该系统的特性。

2)、已知一RC电路如图所示,系统的输入电压为f(t),输出信号为电阻两端的

-∞<<+∞试求该系统的响应y(t) 电压y(t).当RC=0.04,f(t)=cos5t+cos100t, t

由图可知 ,该电路为一个微分电路,其频率响应为

()11R jw

H jw R jwC jw RC =

=

++

由此可求出余弦信号0cos t ω通过LTI 系统的响应为

000()()c o s (())y t H j w t ω?ω=+

编程序计算该系统响应的MATLAB 程序及响应波形。 程序如下:

>> clear RC=0.04; N=input('N=');

t=linspace(0,4*pi,N);

w=[5,100]; % 输入信号的两个频率分量

U=[1,1];

% 两个频率分量对应的向量(虚部为零)

b=[1,0];a=[1,1/RC]; % 滤波器分子分母系数向量

u1=U*cos(w'*t+angle(U')*ones(1,length(t))); % 输入信号的时间曲线 H=polyval(b,j*w)./polyval(a,j*w); % 求滤波器在两个频点上的频率响应,也可用H=freqs(b,a,w); figure(1)

subplot(2,1,1),plot(w,abs(H)),grid

% 幅度

title('输入信号两个频率构成的频谱曲线') subplot(2,1,2),plot(w,angle(H)),grid % 相位 title('输入信号两个频率构成的相谱曲线')

u21=abs(U(1)*H(1))*cos(5*t+angle(U(1)*H(1))); % 角频率为5的分量

u22=abs(U(2)*H(2))*cos(100*t+angle(U(2)*H(2))); % 角频率为100的分量 u2=u21+u22;

% 求和

figure(2)

% 画出原信号和滤波后信号的波形作比较

subplot(2,1,1),plot(t,u1) title('原信号')

subplot(2,1,2),plot(t,u2)

title('滤波后的信号')结果显示(N 的取值不同,图形显示将不同)

N=100时

N=10000时

8、思考题:使用Matlab时表示连续时间信号需注意哪些问题、运用卷积函数conv时需要注意什么问题?

连续信号是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干个不连续点之外,信号都有确定的值与之对应。严格地说,MATLAB并不能处理连续信号,而是用时间间隔点的样值来近似表示连续信号。当时间间隔足够小时,这些离散的样值就能较好的近似连续信号。

在MATLAB可视化绘图中,对于以t为自变量的连续信号,在绘图时统一用plot函数;而对n为自变量的离散序列,在绘图时统一用stem函数。对于以t为自变量的连续信号,绘图时,随着t取值的间隔变小,绘出的图也将变得更加光滑、更加接近信号表示的曲线。在绘图时函数值必须与对应的变量维数相同,否则绘图时将出现错误。

运用卷积函数conv求解连个信号的卷积时,两个函数的精度必须是相同的,否则将会出现下面错误:

??? Error using ==> conv2

First and second arguments must be single or double.

Error in ==> conv at 40

c = conv2(a(:),b(:),shape);

Error in ==> Untitled at 6

f=conv(f1,f2)

conv函数不能求表达式之间的卷积,只能求解数值之间的卷积,绘制卷积后函数的图形时,需要写一个Function函数来定义两个信号卷积后的结果和卷积后对应自变量的范围,这样才能绘制出卷积后的图形。

9、总结Matlab在求解连续时间信号与系统问题时,自己编程和调用MATLAB 工具箱函数时的知识点。

在编程过程中用到的函数如下(主要是以前没有用过的):

1、impulse

功能:求解连续系统的冲激响应。

调用格式:

impulse(b,a):计算并显示出连续系统的冲激响应h(t)的波形。

impulse(b,a,t):当用户指定t值时,t为实数,将显示连续时间系统在0~t秒间的冲激响应波形,t为向量(t1:dt:t2),则显示指定时间范围内的冲激响应波形。

2、step

功能:求解连续系统的阶跃响应。

调用格式:

step(b,a):计算并显示出连续系统的阶跃响应g(t)的波形。

step(b,a,t):当用户指定t值时,t为实数,将显示连续时间系统在0~t秒间的阶跃响应波形,t为向量(t1:dt:t2),则显示指定时间范围内的阶跃响应波形。

3、lsim

功能:求解连续系统的零状态响应。

调用格式:

lsim(b,a,x,t):计算并显示出连续系统的零状态响应的波形。

4、卷积函数conv

功能:进行两个序列的卷积运算。

调用格式:

y=conv(x,h);用于求解两有限长序列的卷积。

5、pzmap

功能:显示LTI系统的零极点分布图

实验4函数文件

实验四 函数文件 1.定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件。 函数文件: function [e,ln,s,c]=plural(x) e=exp(x); ln=log(x); s=sin(x); c=cos(x); End 命令文件: x=input('请输入一个复数:'); [e,ln,s,c]=plural(x); e ln s c 运行结果: 请输入一个复数:3+4i e = -13.1288 -15.2008i ln = 1.6094 + 0.9273i s = 3.8537 -27.0168i c = -27.0349 - 3.8512i 2.一物理系统可用下列方程组来表示: ? ?????????????=??????????????????????????----g g m m N N a a m m m m 2121212111001cos 000sin 00cos 0sin 0sin cos θθ θθ θθ 从键盘输入m 1、m 2和θ的值,求N a a 121、、和N 2的值。其中g 取9.8,输入 θ时以角度为单位。 函数文件: function [a1,a2,N1,N2]=physis(m1,m2,t) g=9.8; A=[m1*cos(t*pi/180),-m1,-sin(t*pi/180),0;... m1*sin(t*pi/180),0,cos(t*pi/180),0;... 0,m2,-sin(t*pi/180),0;... 0,0,-cos(t*pi/180),1]; B=[0;m1*g;0;m2*g];

MATLAB实验报告(1-4)

信号与系统MATLAB第一次实验报告 一、实验目的 1.熟悉MATLAB软件并会简单的使用运算和简单二维图的绘制。 2.学会运用MATLAB表示常用连续时间信号的方法 3.观察并熟悉一些信号的波形和特性。 4.学会运用MATLAB进行连续信号时移、反折和尺度变换。 5.学会运用MATLAB进行连续时间微分、积分运算。 6.学会运用MATLAB进行连续信号相加、相乘运算。 7.学会运用MATLAB进行连续信号的奇偶分解。 二、实验任务 将实验书中的例题和解析看懂,并在MATLAB软件中练习例题,最终将作业完成。 三、实验内容 1.MATLAB软件基本运算入门。 1). MATLAB软件的数值计算: 算数运算 向量运算:1.向量元素要用”[ ]”括起来,元素之间可用空格、逗号分隔生成行向量,用分号分隔生成列向量。2.x=x0:step:xn.其中x0位初始值,step表示步长或者增量,xn为结束值。 矩阵运算:1.矩阵”[ ]”括起来;矩阵每一行的各个元素必须用”,”或者空格分开; 矩阵的不同行之间必须用分号”;”或者ENTER分开。2.矩阵的加法或者减法运算是将矩阵的对应元素分别进行加法或者减法的运算。3.常用的点运算包括”.*”、”./”、”.\”、”.^”等等。

举例:计算一个函数并绘制出在对应区间上对应的值。 2).MATLAB软件的符号运算:定义符号变量的语句格式为”syms 变量名” 2.MATLAB软件简单二维图形绘制 1).函数y=f(x)关于变量x的曲线绘制用语:>>plot(x,y) 2).输出多个图像表顺序:例如m和n表示在一个窗口中显示m行n列个图像,p 表示第p个区域,表达为subplot(mnp)或者subplot(m,n,p) 3).表示输出表格横轴纵轴表达范围:axis([xmax,xmin,ymax,ymin]) 4).标上横轴纵轴的字母:xlabel(‘x’),ylabel(‘y’) 5).命名图像就在subplot写在同一行或者在下一个subplot前:title(‘……’) 6).输出:grid on 举例1:

matlab实验报告

数学实验报告 班级: 学号: 姓名: 实验序号:1 日期:年 月 日 实验名称:特殊函数与图形 ◆ 问题背景描述:绘图是数学中的一种重要手段,借助图形,可以使抽象的对象得到 明白直观的体现,如函数的性质等。同时,借助直观的图形,使初学者更容易接受新知识,激发学习兴趣。 ◆ 实验目的:本实验通过绘制一些特殊函数的图形,一方面展示这些函数的特点属性, 另一方面,就 Matlab 强大的作图功能作一个简单介绍。 实验原理与数学模型: 1、 球2222x y z R ++= ,x=Rsin φcos θ, y= Rsin φsin θ, z= cos φ, 0≤θ≤2π , 0≤φ≤π 环面 222222222()4(),(cos )cos ,x y z a r a x y x a r φθ+++-=+=- (cos )sin ,sin ,02,02y a r z r φθφφπθπ=-=≤≤≤≤ 2、 平面摆线:2 22 31150,(sin ),(1cos ),0233 x y x a t t y a t t π+-==-=-≤≤ 3、 空间螺线:(圆柱螺线)x=acost , y=asint , z=bt ;(圆锥螺线)22 cos ,sin ,x t t y t t z t === 4、 椭球面sin cos ,sin sin ,cos ,02,0x a y b z c φθφθφθπφπ===≤<≤≤ 双叶双曲面3 tan cos ,tan sin ,sec ,02,22 x a y b z c π φθφθφθπφπ===≤<- << 双曲抛物面2 sec ,tan 2 u x au y bu z θθ=== 实验所用软件及版本:mathematica(3.0) 主要内容(要点): 1、 作出下列三维图形(球、环面) 2、 作出下列的墨西哥帽子 3、 作出球面、椭球面、双叶双曲面,单叶双曲面的图形 4、 试画出田螺上的一根螺线 5、 作出如图的马鞍面

实验五 M文件和MATLAB程序设计

实验五 M文件和MATLAB程序设计 一、实验目的 matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构、控制流、输入输出等能力,本次实验通过熟悉和掌握m文件的建立与使用方法,以及函数与控制程序流程语句的使用,使学生具备一定的编程和程序调试能力。 1.掌握M文件的使用方法。 2.掌握if语句和switch语句的使用 3. 掌握循环语句的使用 4. 通过练习理解MATLAB编程方法。 二、实验原理 1.m文件 用matlab语言编写的程序,称为m文件。M文件根据调用方式的不同分为两类,命令文件(Script file)和函数文件(Function file)。区别? 2.程序控制结构 1)顺序结构 2)选择结构 (1)if语句a) 单分支if语句b) 双分支if语句c) 多分支if语句 (2)switch 语句 (3)try语句 3)循环结构 (1)for 语句 (2)while语句 (3)break语句、continue语句、return使用,区别? 3.函数文件 function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 三、实验要求 1.首先上机练习PPT中各种流程控制语句的有关实例。 2.然后上机练习下面的实验习题。 四、实验习题 1.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 2→1 3→10→5→16→8→4→2→1

6→3→10→5→16→8→4→2→1 运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。 %classic "3n+1" problem from number theory. while 1 n=input('Enter n,negative quits:'); if n<=0 break end a=n; while n>1 if rem(n,2)==0 n=n/2; else n=3*n+1; end a=[a,n]; end a end Enter n,negative quits:3 a = 3 10 5 16 8 4 2 1 2. 编程求满足∑=>m i i 1100002的最小m 值。 a=0; i=1; while (a<10000) a=a+pow2(i); i=i+1; end m=i-1; m 13 3. 编写一个函数,计算下面函数的值,给出x 的值,调用该函数后,返回y 的值。 function [y]=myfun1(x) ?? ???>+-≤<≤=3,630, 0,sin )(x x x x x x x y 选择一些数据测试你编写的函数。 function y=myfun1(x) if x<=0 y=sin(x);

Matlab实验第一次实验答案

实验一Matlab使用方法和程序设计 一、实验目的 1、掌握Matlab软件使用的基本方法; 2、熟悉Matlab的数据表示、基本运算和程序控制语句 3、熟悉Matlab绘图命令及基本绘图控制 4、熟悉Matlab程序设计的基本方法 二、实验内容: 1、帮助命令 使用help命令,查找sqrt(开方)函数的使用方法; 解:sqrt Square root Syntax B = sqrt(X) Description B = sqrt(X) returns the square root of each element of the array X. For the elements of X that are negative or complex, sqrt(X) produces complex results. Remarks See sqrtm for the matrix square root. Examples sqrt((-2:2)') ans = 0 + 1.4142i 0 + 1.0000i

1.0000 1.4142 2、矩阵运算 (1)矩阵的乘法 已知A=[1 2;3 4]; B=[5 5;7 8]; 求A^2*B 解:A=[1 2;3 4 ]; B=[5 5;7 8 ]; A^2*B (2)矩阵除法 已知A=[1 2 3;4 5 6;7 8 9]; B=[1 0 0;0 2 0;0 0 3]; A\B,A/B 解:A=[1 2 3;4 5 6;7 8 9 ]; B=[1 0 0;0 2 0;0 0 3 ]; A\B,A/B (3)矩阵的转置及共轭转置

MATLAB实验报告50059

实验一MATLAB操作基础 实验目的和要求: 1、熟悉MATLAB的操作环境及基本操作方法。 2、掌握MATLAB的搜索路径及设置方法。 3、熟悉MATLAB帮助信息的查阅方法 实验内容: 1、建立自己的工作目录,再设置自己的工作目录设置到MA TLAB搜索路径下,再试 验用help命令能否查询到自己的工作目录。 2、在MA TLAB的操作环境下验证课本;例1-1至例1-4,总结MATLAB的特点。 例1-1

例1-2 例1-3 例1-4

3、利用帮助功能查询inv、plot、max、round等函数的功能。 4、完成下列操作: (1)在matlab命令窗口输入以下命令: x=0:pi/10:2*pi; y=sin(x); (2)在工作空间窗口选择变量y,再在工作空间窗口选择回绘图菜单命令或在工具栏中单击绘图命令按钮,绘制变量y的图形,并分析图形的含义。

5、访问mathworks公司的主页,查询有关MATLAB的产品信息。 主要教学环节的组织: 教师讲授实验目的、开发环境界面、演示实验过程,然后同学上机练习。 思考题: 1、如何启动与退出MA TLAB集成环境? 启动: (1)在windows桌面,单击任务栏上的开始按钮,选择‘所有程序’菜单项,然后选择MA TLAB程序组中的MA TLABR2008b程序选项,即可启动 MATLAB系统。 (2)在MA TLAB的安装路径中找到MA TLAB系统启动程序matlab.exe,然后运行它。 (3)在桌面上建立快捷方式后。双击快捷方式图标,启动MA TLAB。 退出: (1)在MA TLAB主窗口file菜单中选择exitMATLAB命令。 (2)在MA TLAB命令窗口中输入exit或quit命令。 (3)单击MATLAB主窗口的关闭按钮。 2、简述MATLAB的主要功能。 MATLAB是一种应用于科学计算领域的数学软件,它主要包括数值计算和符 号计算功能、绘图功能、编程语言功能以及应用工具箱的扩展功能。 3、如果一个MATLAB命令包含的字符很多,需要分成多行输入,该如何处理?

matlab实验五答案1

实验五 1、编写程序,该程序在同一窗口中绘制函数在 []0,2π之间的正弦曲线和余弦曲线,步长 为200/π,线宽为2个象素,正弦曲线设置为蓝色实线,余弦曲线颜色设置为红色虚线,两条曲线交点处,用红色星号标记并标注sin(x)=cos(x);通过函数方式在生成的图形中添加注释,至少应包括:标题,文本注释,图例和坐标轴标注。%x=linspace(0,2*pi,1000);x=[0:pi/200:2*pi]sinx =sin(x);cosx =cos(x); k=find(abs(sinx-cosx)<1e-2);x1=x(k); plot(x,sinx,'LineWidth',2) hold on ,plot(x,cosx,'r:','LineWidth',2)hold on ,plot(x1,sin(x1),'r*')xlabel('x:(0-2\pi)'); ylabel('y:sin(x)/cos(x)'); title('正弦-余弦曲线'); text(x1+0.1,sin(x1),'sin(x)=cos(x)');legend('sin(x)','cos(x)'); 1 2 34 5 6 7 x:(0-2π) y :s i n (x )/c o s (x ) 正弦-余弦曲线 2、绘制图像:双曲抛物面:22 x y z =- ,1616x -<<,44y -<<,并对绘制的双曲抛物面尝试进行视点控制。 [X,Y]=meshgrid(-16:0.4:16,-4:0.1:4);Z =X.^2/16-Y.^2/4; subplot(1,3,1),plot3(X,Y,Z),view(0,180),title('azimuth =0,elevation =180'); subplot(1,3,2),plot3(X,Y,Z),view(-37.5,-30),title('azimuth =

MATLAB实验五 函数文件

MATLAB实验报告 学院:光电学院 班级:073-1 姓名:刘颖 学号:200713503117

实验五 函数文件 1.定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件。 程序设计: function [e ln s c]=num(x) e=exp(x) ln=log(x) s=sin(x) c=cos(x) end 运行结果: >> num(5i) e = 0.2837 - 0.9589i ln = 1.6094 + 1.5708i s = 0 +74.2032i c = 74.2099 ans = 0.2837 - 0.9589i 2.一物理系统可用下列方程组来表示: ??? ? ??? ???????= ?????? ??? ??? ???????????? ??----g g m m N N a a m m m m 2121212 111001cos 0 0sin 00cos 0 sin 0sin cos θ θθ θθθ 从键盘输入 m 1 、 m 2 和θ的值,求 N a a 121、、和 N 2 的值。其中g 取9.8,输入θ时以角度为单位。 程序设计: 函数文件in.m: function [a1,a2,N1,N2]=in(m1,m2,t) g=9.8; A=[m1*cos(t) -m1 -sin(t) 0;m1*sin(t) 0 cos(t) 0;0 m2 -sin(t) 0;0 0 -cos(t) 1]; C=[0;m1*g;0;m2*g]; B=inv(A)*C; a1=B(1); a2=B(2); N1=B(3); N2=B(4); end 调用in.m 的命令文件: >> m1=1;m2=2;t=30*pi/180; >> [a1,a2,N1,N2]=in(m1,m2,t) 运行结果: a1 = 6.5333 a2 = 1.8860 N1 = 7.5440 N2 = 26.1333 4.设 f(x)= 01 .01 1 .01 ) 3() 2(4 2 +++--x x , 编写一个MATLAB 函数文件fx.m ,使得调用f(x)时,x 可用矩阵代入,得出的f(x)为同阶矩阵。 程序设计: 函数文件fx.m: function A=fx(x) A=1./((x-2).^2+0.1)+1./(((x-3).^4)+0.01) end 调用fx.m 的命令文件: >> A=fx([1 2;2 3;4 3]) 运行结果: A = 0.9716 10.9901 10.9901 100.9091 1.2340 100.9091 5.已知y= ) 20()30() 40(f f f + (1)当f(n)=n+10ln(n 2+5)时,求y 的值。

实验二 MATLAB程序设计 含实验报告

实验二 MATLAB 程序设计 一、 实验目的 1.掌握利用if 语句实现选择结构的方法。 2.掌握利用switch 语句实现多分支选择结构的方法。 3.掌握利用for 语句实现循环结构的方法。 4.掌握利用while 语句实现循环结构的方法。 5.掌握MATLAB 函数的编写及调试方法。 二、 实验的设备及条件 计算机一台(带有MATLAB7.0以上的软件环境)。 M 文件的编写: 启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器(Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正 三、 实验内容 1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因 c b a 、、的不同取值而定) ,这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。并输入几组典型值加以检验。 (提示:提示输入使用input 函数) 2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。 要求:(1)用switch 语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 (提示:注意单元矩阵的用法) 3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 2?1 3?10?5?16?8?4?2?1 6?3?10?5?16?8?4?2?1 运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。 请为关键的Matlab 语句填写上相关注释,说明其含义或功能。 4. 的值,调用该函数后,

实验5 Matlab程序设计1

实验5 Matlab 程序设计1 实验目的: 1、 掌握建立和执行M 文件的方法; 2、 掌握实现选择结构的方法; 3、 掌握实现循环结构的方法。 实验内容: 1. 从键盘输入一个4位整数,按如下规则加密后输出。加密规则:每位数字都加上7,然 后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。 2. 求分段函数的值。 ,x x x x y x x x x x x x ?+- <≠-?=-+ ≤<≠≠??-- ?2226035605231且且及其他 用if 语句实现,分别输出x=-5,-3,0,1,2,2.5,3,5时的y 值。请输入x 的值 x=input('请输入x 的值'); if x<0&x~=-3 y=x*x+x-6; elseif 0<=x&x<5&x~=2&x~=3 y=x*x-5*x+6; else y=x*x-x-1; end y

second 请输入x的值-5 y = 14 second 请输入x的值-3 y = 11 >> second 请输入x的值0 y = 6 >> second 请输入x的值1

y = 2 >> second 请输入x的值2 y = 1 >> second 请输入x的值2.5 y = -0.2500 >> second 请输入x的值3

5 >> second 请输入x的值5 y = 19 >> 3.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E,其中90~100分为A,80~89 分为B,70~79分为C,60~69分为D,60分以下为E。 要求: (1)分别用if语句和swich语句实现。 (2)grade=input('input grade:'); (3)if grade<=100&grade>=90 (4)level='A'; (5)elseif grade<=89&grade>80 (6)level='B'; (7)elseif 70<=grade&grade<=79

实验五.函数文件的编写

闽江学院电子系 实验报告 学生姓名:班级:学号:3142731 课程:函数文件的编写 一、(填实验几,例:试验一):实验五 二、实验地点:实验楼A210 实验目的: 1.掌握函数文件的定义方法,函数头的写法; 2.掌握调用函数文件的方法,了解函数文件的嵌套调用; 3.熟悉MATLAB函数文件的特点。 三、实验内容: 1、定义一个函数文件lifang.m,用于计算一个立方体的表面积和体积。在命令窗口中调用它。函数文件: 命令窗口:

2、当n分别取100、1000、10000时,求下列各式的值: (1) 2 2232 1111 1236 n π ??++++= ? ?? (2) ()() ()() 22 224466 133******** n n n n π ?? ? ??? ???????? = ? ????? ? ????-+ ???????? ?? 要求用函数文件的定义和调用来实现。(1)函数文件的定义: 函数文件的调用: 命令窗口:

(2)函数文件的定义: 函数文件的调用: 命令窗口: 3、利用函数文件,实现极坐标(,)ρθ与直角坐标(,)x y 之间的转换,并通过函数调用加以验证。 直角坐标转化为极坐标函数定义: 极坐标转化为直角坐标函数定义:

函数文件的调用: 命令窗口: 4、利用预定义变量nargin和nargout,实现以下功能的函数:若输入只有一个参数,输出以 该参数为半径的球的体积;若输入有两个参数,输出分别以该参数为底面半径和高的圆柱体积;若输入有三个参数,输出分别以该参数为三条边的长方体的体积;若输入参数多

昆明理工大学MATLAB实验指导书(第二次实验)

************************ MATLAB上机指导书 ************************ 昆明理工大学机电学院 彭用新 2015年3月

实验三符号计算 一、操作部分:在命令窗口执行命令完成以下运算,记录运算结果。 1.findsym:帮助我们获取系统定义的自变量 f= sym('sin(a*x+b*y)'); findsym(f) 2.numden(获取分子分母), sym2poly,(获取多项式时系数)poly2sym(根据多项式系 数获得符号表达式) [n,d]=numden(sym('x*x+y')+sym('y^2')) p=sym('2*x^3+3*x^2+4'); sym2poly(p) x=[2,3,0,4]; poly2sym(x) 3. collect :合并同类项;expand:展开多项式;horner: 分解成嵌套形式;factor:因式 分解;simplify: 对表达式化简 syms x y; collect(x^2*y+y*x-x^2-2*x) collect((x+y)*(x^2+y^2+1), y) syms x y; expand((x-2)*(x-4)) syms x;horner(x^3-6*x^2+11*x-6) syms x;factor(x^3-6*x^2+11*x-6) syms x;simplify((x^2+5*x+6)/(x+2)) 4. finverse :求得符号函数的反函数。 syms x y; finverse(1/tan(x)) f= x^2+y; finverse(f,y) finverse(f) https://www.doczj.com/doc/2f10210751.html,pose 求符号函数的复合函数 syms x y; f = 1/(1 + x^2); g = sin(y); compose(f,g) 6. subs :表达式替换。 syms a b;subs(a+b,a,4)

matlab实验报告

实验一小球做自由落体运动内容:一小球竖直方向做自由落体,并无损做往返运动。程序: theta=0:0.01:2*pi x=cos(theta) y=sin(theta) l=1 v=1 while l<10 for t=1:10 y=y+(-1)^l*v*t plot(x,y,[-1,1],[-56,2],'.') axis equal pause(0.1) end l=l+1 end 结果:

-50 -40 -30 -20 -10 收获:通过运用小球自由落体规律,及(-1)^n 来实现无损往 返运动! 实验二 旋转五角星 内容:一个五角星在圆内匀速旋转 程序:x=[2 2 2 2 2 2] y=[0 4/5*pi 8/5*pi 2/5*pi 6/5*pi 0] y1=2*sin(y) x1=2*cos(y) theta=0:4/5*pi:4*pi

x2=2*cos(theta) y2=2*sin(theta) plot(x,y,x1,y1,x2,y2) axis equal theta1=theta+pi/10 x2=2*cos(theta1) y2=2*sin(theta1) plot(x2,y2) axis equal theta=0:4/5*pi:4*pi for rot=pi/10:pi/10:2*pi x=2*cos(theta+rot) y=2*sin(theta+rot) plot(x,y) pause(0.1) end 结果:

-2 -1.5-1-0.500.51 1.52 -2-1.5-1-0.500.511.5 2 收获:通过theta1=theta+pi/10,我们可以实现五角星在圆内匀速 旋转! 实验三 转动的自行车 内容:一辆自行车在圆内匀速转动 程序:x=-4:0.08:4; y=sqrt(16-x.^2); theta1=-pi/2:0.01*pi:3*pi/2; x3=0.5*cos(theta1); y3=0.5*sin(theta1); theta=-pi/2+0.02*pi for k=1:100

MATLAB第二次上机实验报告

电子科技大学电子工程学院标准实验报告(实验)课程名称MATLAB与数值分析 学生姓名: 学号: 指导教师:

一、实验名称 实验二 线性方程组求解和函数的数值逼近 二、实验目的 通过上机实验,使学生对病态问题、线性方程组求解和函数的数值逼近方法有一个初步的理解。 实验涉及的核心知识点:病态方程求解、矩阵分解和方程组求解、Lagrange 插值。 实验重点与难点:算法设计和MATLAB 编程 三、实验内容 1. 对高阶多项式 ()()() ()()20 1 1220k p x x x x x k ==---=-∏ 编程求下面方程的解 ()190p x x ε+= 并绘图演示方程的解与扰动量ε的关系。 2. 对2 20n =,生成对应的Hilbert 矩阵,计算矩阵的条件数;通过先确定解获得常向量 b 的方法,确定方程组 ()n H x b = 最后,用矩阵分解方法求解方程组,并分析计算结果。 3. 对函数 ()2 1 125f x x = + []1,1x ∈- 的Chebyshev 点 ()()21cos 21k k x n π ?? -= ? ?+? ? ,1,2,,1k n =+ 编程进行Lagrange 插值,并分析插值结果。 四、实验数据及结果分析 1. 对高阶多项式

()()() ()()20 1 1220k p x x x x x k ==---=-∏ 编程求下面方程的解 ()190p x x ε+= 并绘图演示方程的解与扰动量ε的关系。 p=[1,-1]; for i=2:20 n=[1,-i]; p=conv(p,n); % 求多项式乘积 end m=zeros(1,21); % m 的最高次幂为20,有21项 hold on x=1:20; d=[-1,0,0.1,0.5,1]; for i=1:5 delt=d(i); m(2)=delt; y=(roots(p+m))'; % 求多项式的根 plot(x,y,'-o','color',[i/5,i/20,i/10]); end title('方程p(x)=0的解与扰动量delt 的关系') legend('delt=-1','delt=0','delt=0.1','delt=0.5','delt=1') 2468101214161820 010 20 30 40 50 60 方程p(x)=0的解与扰动量delt 的关系 delt=-1delt=0delt=0.1delt=0.5delt=1

参考答案Matlab实验报告

实验一 Matlab基础知识 一、实验目的: 1.熟悉启动和退出Matlab的方法。 2.熟悉Matlab命令窗口的组成。 3.掌握建立矩阵的方法。 4.掌握Matlab各种表达式的书写规则以及常用函数的使 用。 二、实验内容: 1.求[100,999]之间能被21整除的数的个数。(rem) 2.建立一个字符串向量,删除其中的大写字母。(find) 3.输入矩阵,并找出其中大于或等于5的元素。(find) 4.不采用循环的形式求出和式 63 1 2i i= ∑ 的数值解。(sum) 三、实验步骤: ●求[100,199]之间能被21整除的数的个数。(rem) 1.开始→程序→Matlab 2.输入命令: ?m=100:999; ?p=rem(m,21); ?q=sum(p==0) ans=43 ●建立一个字符串向量,删除其中的大写字母。(find) 1.输入命令:

?k=input('’,’s’); Eie48458DHUEI4778 ?f=find(k>=’A’&k<=’Z’); f=9 10 11 12 13 ?k(f)=[ ] K=eie484584778 ●输入矩阵,并找出其中大于或等于5的元素。(find) 1.输入命令: ?h=[4 8 10;3 6 9; 5 7 3]; ?[i,j]=find(h>=5) i=3 j=1 1 2 2 2 3 2 1 3 2 3 ●不采用循环的形式求出和式的数值解。(sum) 1.输入命令: ?w=1:63; ?q=sum(2.^w) q=1.8447e+019

实验二 Matlab 基本程序 一、 实验目的: 1. 熟悉Matlab 的环境与工作空间。 2. 熟悉M 文件与M 函数的编写与应用。 3. 熟悉Matlab 的控制语句。 4. 掌握if,switch,for 等语句的使用。 二、 实验内容: 1. 根据y=1+1/3+1/5+……+1/(2n-1),编程求:y<5时最大n 值以及对应的y 值。 2. 编程完成,对输入的函数的百分制成绩进行等绩转换,90~100为优,80~89为良,70~79为中,60~69为及格。 3. 编写M 函数文件表示函数 ,并分别求x=12和56时的函数值。 4. 编程求分段函数 2226;03 56;0532 1;x x x x y x x x x x x x +-<≠=-+≤<≠≠-+且且及其它,并求输入x=[-5.0,-3.0,1.0,2.0,2.5,3.0,3.5]时的输出y 。 三、 实验步骤: 根据y=1+1/3+1/5+……+1/(2n-1),编程求:y<5时最大n 值以及对应的y 值。 1. 打开Matlab ,新建M 文件 2. 输入命令: 51022-+x

实验五 函数文件的编写

闽 江 学 院 电 子 系 实 验 报 告 学生姓名: 班级: 学 号: 课程:MATLAB 程序设计教程 一、实验题目:函数文件的编写 二、实验地点:A210 三、实验目的: 1、掌握函数文件的定义方法,函数头的写法; 2、掌握调用函数文件的方法,了解函数文件的嵌套调用; 3、熟悉MATLAB 函数文件的特点。 四、实验内容: 1、定义一个函数文件lifang.m ,用于计算一个立方体的表面积和体积。在命令窗口中调用它。 2、当n 分别取100、1000、10000时,求下列各式的值: (1)2223211111236n π??++++= ??? (2)()()( )()2222446613355721212n n n n π??????????????= ? ????? ? ????-+?????????? 要求用函数文件的定义和调用来实现。 3、利用函数文件,实现极坐标(,)ρθ与直角坐标(,)x y 之间的转换,并通过函数调用加以验证。 4、利用预定义变量nargin 和nargout ,实现以下功能的函数:若输入只有一个参数,输出以该参数为半径的球的体积;若输入有两个参数,输出分别以该参数为底面半径和高的圆柱体积;若输入有三个参数,输出分别以该参数为三 条边的长方体的体积;若输入参数多于三个,则报错。 5、 先用函数的递归调用定义一个函数文件求1n m i i =∑,然后调用该函数文件求10050102111 1k k k k k k ===++∑∑∑。

五、实验环境(使用的软硬件):Matlab6.5 六、实验步骤及操作: 1.计算立方体体积 函数文件lifang.m 2求函数值 (1)

(完整版)Matlab实验5选择结构程序结构

实验五、选择与循环结构 一、实验目的: 1、 掌握建立和执行M 文件的方法。 2、 掌握利用if 语句实现选择结构的方法。 3、 掌握利用switch 语句实现多分支选择结构的方法。 4、 掌握try 语句的使用。 5、 掌握利用for 语句实现循环结构的方法。 6、 掌握利用while 语句实现循环结构的方法。 7、 熟悉利用向量运算来代替循环的操作方法。 二、实验内容: 1、 列分段函数的值。 ?? ???--≠≠<≤+--≠<-+=其他且且,632,100,6530,6222x x x x x x x x x x x y 要求: (1) 用if 语句实现,分别输出x =-0.5,-3.0,1.0,2.0,2.5,3.0,5.0时的y 值。 提示:x 的值从键盘输入,可以是向量。 %homework_5_1_1.m x=input('请输入x 的值:x='); if (x<0 & x~=-3) y= x.*x + x - 6 elseif (x>=0 & x<10 & x~=2 & x~=3) y=x.*x-5.*x+6 else y=x.*x-x-6 end >> homework_5_1 请输入x 的值:x=[-0.5 -3.0 1.0 2.0 2.5 3.0 5.0] y = -5.2500 6.0000 -6.0000 -4.0000 -2.2500 0 14.0000 (2) 用逻辑表达式实现上述函数。 %homework_5_1_2.m x=input('请输入x 的值:x=') y=(x<0 & x~=-3).*(x.*x+x-6)... +(x>=0 & x<10 &x~=2 &x~=3).*(x.*x-5.*x+6)... +(x>=10 | x==-3 | x==3 | x==2).*(x.*x-x-6) >> homework_5_1_2 请输入x=[-0.5 -3.0 1.0 2.0 2.5 3.0 5.0] x = -0.5000 -3.0000 1.0000 2.0000 2.5000 3.0000 5.0000 y = -6.2500 6.0000 2.0000 -4.0000 -0.2500 0 6.0000

实验五--M文件和MATLAB程序设计

实验五--M文件和MATLAB程序设计

实验五 M文件和MATLAB程序设计 一、实验目的 matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构、控制流、输入输出等能力,本次实验通过熟悉和掌握m 文件的建立与使用方法,以及函数与控制程序流程语句的使用,使学生具备一定的编程和程序调试能力。 1.掌握M文件的使用方法。 2.掌握if语句和switch语句的使用 3. 掌握循环语句的使用 4. 通过练习理解MATLAB编程方法。 二、实验原理 1.m文件 用matlab语言编写的程序,称为m文件。M文件根据调用方式的不同分为两类,命令文件(Script file)和函数文件(Function file)。区别? 2.程序控制结构 1)顺序结构 2)选择结构 (1)if语句a) 单分支if语句b) 双分

支if语句c) 多分支if语句 (2)switch 语句 (3)try语句 3)循环结构 (1)for 语句 (2)while语句 (3)break语句、continue语句、return使用,区别? 3.函数文件 function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 三、实验要求 1.首先上机练习PPT中各种流程控制语句的有关实例。 2.然后上机练习下面的实验习题。 四、实验习题 1.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如:

3→10→5→16→8→4→2→1 6→3→10→5→16→8→4→2→1 运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。 %classic "3n+1" problem from number theory. while 1 n=input('Enter n,negative quits:'); if n<=0 break end a=n; while n>1 if rem(n,2)==0 n=n/2; else n=3*n+1; end a=[a,n]; end a

第二次数学实验报告Matlab 二维曲线绘图

《数学实验》报告实验名称 Matlab 二维曲线绘图 2011年 5月

一、【实验目的】 学习Matlab 绘图的运用,学会制作二维曲线,三维图形的绘画。 二、【实验任务】 P79 第3,5,9题。 1,在同一图形窗口画三个子图…… 2,绘制圆锥螺线的图像并加各种标注…… 3,画三维曲面z=5-x^2-y^2与平面z=3的交线。 三、【实验程序】 1. >> clear >> x=-pi:pi/50:4*pi; y1=x.*cos(x); y2=x.*tan(1./x).*sin(x.^3); y3=exp(1./x).*sin(x); subplot(3,1,1) plot(x,y1,'r*'),grid on title('y1=xcosx') xlabel('x轴'),ylabel('y轴') axis([-pi pi -pi pi]) gtext('y1=xcosx'),legend('y1=xcosx') subplot(3,1,2),plot(x,y2,'b'),grid on title('y=xtan(1/x)sin(x^3)') gtext('y=xtan(1/x)sin(x^3)') legend('y=xtan(1/x)sin(x^3)') axis([pi 4*pi -2 2]) subplot(3,1,3),plot(x,y3,'y'),grid on title('y=exp(1/x)sinx') xlabel('x轴'),ylabel('y轴') gtext('y=exp(1/x)sinx') legend('y=exp(1/x)sinx') axis([1 8 -3 3]) 2. >> clear >> t=0:pi/50:20*pi; x=t.*cos(pi/6.*t); y=t.*sin(pi/6.*t); z=2.*t; plot3(x,y,z) title('圆锥螺线') xlabel('x轴'),ylabel('y轴'),zlabel('z轴') >> t=0:pi/50:20*pi; x=t.*cos(pi/6.*t);

matlab实验报告

Matlab实验报告 实验二图像处理 一、实验目的 (1)通过应用MA TLAB语言编程实现对图像的处理,进一步熟悉MATLAB软件的编程及应用; (2)通过实验进一步掌握图像处理的基本技术和方法。 二、实验内容及代码 ㈠.应用MA TLAB语言编写显示一幅灰度图像、二值图像、索引图像及彩色图像的程序,并进行相互之间的转换 首先,在matlab页面中的current directory下打开存放图像的文件夹。 1.显示各种图像 ⑴显示彩色图像: ①代码:>> mousetif=imread('tif.TIF'); >> image(mousetif) 显示截图: ②代码:>> mousetif=imread('tif.TIF'); >> imshow(mousetif) 显示截图:

③代码:mousetif=imread('tif.TIF'); subimage(mousetif) 显示截图: 显示截图:

⑵显示二值图像 ①代码:>> I=imread('单色bmp.bmp'); >> imagesc(I,[0 2]) 显示截图: ②代码:>> I=imread('单色bmp.bmp');

>> imshow(I,2) 显示截图: ③代码:>> I=imread('单色bmp.bmp'); >> subimage(I) 显示截图:

⑶显示灰度图像 ①代码:>> I1=imread('256bmp.bmp'); >> imagesc(I1,[0,256]) 显示截图: 代码:>> I1=imread('256bmp.bmp'); >> colormap(gray); >> subplot(1,2,1); >> imagesc(I1,[0,256]); >> title('灰度级为[0 256]的mouse.bmp图'); >> subplot(1,2,2); >> imagesc(I1,[0,64]); >> colormap(gray); >> title('灰度级为[0 64]的mouse.bmp图'); 显示截图:

相关主题
文本预览
相关文档 最新文档