当前位置:文档之家› matlab实验指导2

matlab实验指导2

matlab实验指导2
matlab实验指导2

《数字信号处理》MATLAB实验指导

实验一:离散时间信号和离散时间系统

一、实验目的:

1、以MATLAB 为工具学习离散时间信号的图形表示;

2、以课本提供的例程,练习、理解典型离散信号及其基本运算;

3、通过MATLAB 仿真简单的离散时间系统,研究其时域特性;

4、加深对离散系统的差分方程、冲激响应和卷积分析方法的理解。

二、实验内容:

1、典型序列的产生与显示;

2、序列的简单运算;

3、复合和复杂信号的产生与显示;

4、离散时间系统的仿真:线性和非线性系统、时变和非时变系统的仿真;

5、线性时不变离散时间系统:系统冲激响应、卷积运算、系统的级联、系统的稳

定性;

三、实验例程:

1、参照课本例程产生下列序列,并用plot 、stem 好人subplot 命令绘出其图形:

①单位取样序列()n δ;②单位阶跃序列()n μ;③矩形序列RN(n),④斜变序列()n n μ。所需输入的数据是产生序列的长度L 和抽样频率F T 。

%Program P1_1%Generation of a Unit Sample Sequence clf;%Generate a vector from -10to 20n =-10:20;%Generate the unit sample sequence u =[zeros(1,10)1zeros(1,20)];%Plot the unit sample sequence stem(n,u);xlabel('Time index n');ylabel('Amplitude');title('Unit Sample Sequence');axis([-102001.2]);

2、编写MATLAB 实指数序列程序,

%Program P1_3%Generation of a real exponential sequence clf;n =0:35;a =1.2;K =0.2;x =K*a.^n;

stem(n,x);

xlabel('Time index n');ylabel('Amplitude');

3、编写产生swept frequency sinusoidal序列的程序。

%Program P1_7

%Generation of a swept frequency sinusoidal sequence

n=0:100;

a=pi/2/100;

b=0;

arg=a*n.*n+b*n;

x=cos(arg);

clf;

stem(n,x);

axis([0,100,-1.5,1.5]);

title('Swept-Frequency Sinusoidal Signal');

xlabel('Time index n');

ylabel('Amplitude');

grid;axis;

>>

4、产生正弦振幅调制序列

%Generation of amplitude modulated sequence

clf;

n=0:100;

m=0.4;fH=0.1;fL=0.01;

xH=sin(2*pi*fH*n);

xL=sin(2*pi*fL*n);

y=(1+m*xL).*xH;

stem(n,y);grid;

xlabel('Time index n');ylabel('Amplitude');

5、用滑动平均滤波器平滑带噪信号,讨论滤波器长度对平滑效果、输出平滑后信号与

输入带噪信号之间延时的影响。

%Program P1_5

%Signal Smoothing by Averaging

clf;

R=51;

d=0.8*(rand(R,1)-0.5);%Generate random noise

m=0:R-1;

s=2*m.*(0.9.^m);%Generate uncorrupted signal

x=s+d';%Generate noise corrupted signal

subplot(2,1,1);

plot(m,d','r-',m,s,'g--',m,x,'b-.');

xlabel('Time index n');ylabel('Amplitude');

legend('d[n]','s[n]','x[n]');

x1=[00x];x2=[0x0];x3=[x00];

y=(x1+x2+x3)/3;

subplot(2,1,2);

plot(m,y(2:R+1),'r-',m,s,'g--');

legend('y[n]','s[n]');

xlabel('Time index n');ylabel('Amplitude');

6、编写输入序列、计算输出序列、差分输出并画出输出序列。

%Program P2_4

%Generate the input sequences

clf;

n=0:40;D=10;a=3.0;b=-2;

x=a*cos(2*pi*0.1*n)+b*cos(2*pi*0.4*n);

xd=[zeros(1,D)x];

num=[2.24032.49082.2403];

den=[1-0.40.75];

ic=[00];%Set initial conditions

%Compute the output y[n]

y=filter(num,den,x,ic);

%Compute the output yd[n]

yd=filter(num,den,xd,ic);

%Compute the difference output d[n]

d=y-yd(1+D:41+D);

%Plot the outputs

subplot(3,1,1)

stem(n,y);

ylabel('Amplitude');

title('Output y[n]');grid;

subplot(3,1,2)

stem(n,yd(1:41));

ylabel('Amplitude');

title(['Output due to Delayed Input x[n?',num2str(D),']']);grid; subplot(3,1,3)

stem(n,d);

xlabel('Time index n');ylabel('Amplitude');

title('Difference Signal');grid;

7、编写输入序列和系统单位脉冲响应的卷积程序并画出图形。

%Program P2_7

clf;

h=[321-210-403];%impulse response x=[1-23-4321];%input sequence

y=conv(h,x);

n=0:14;

subplot(2,1,1);

stem(n,y);

xlabel('Time index n');ylabel('Amplitude'); title('Output Obtained by Convolution');grid; x1=[x zeros(1,8)];

y1=filter(h,1,x1);

subplot(2,1,2);

stem(n,y1);

xlabel('Time index n');ylabel('Amplitude'); title('Output Generated by Filtering');grid;

8、编写输入信号经滤波形成的系统输出信号。

%Program P2_9

%Generate the input sequence

clf;

n=0:299;

x1=cos(2*pi*10*n/256);

x2=cos(2*pi*100*n/256);

x=x1+x2;

%Compute the output sequences

num1=[0.50.270.77];

y1=filter(num1,1,x);%Output of System#1 den2=[1-0.530.46];

num2=[0.450.50.45];

y2=filter(num2,den2,x);%Output of System#2 %Plot the output sequences

subplot(2,1,1);

plot(n,y1);axis([0300-22]);

ylabel('Amplitude');

title('Output of System#1');grid;

subplot(2,1,2);

plot(n,y2);axis([0300-22]);

xlabel('Time index n');ylabel('Amplitude'); title('Output of System#2');grid;

9、

四、本实验用到的matlab命令

Stem plot sin abs cos conv clf subplot filter impz

实验二:时域连续时间信号和频域抽样理论的验证与观察

一、实验目的:

1、理解并掌握信号时域采样和频率抽样理论涉及的过程和效果;

2、通过编程加深理解奈奎斯特采样定理,理解不满足采样条件的对时域和频域采样造成的混叠现象。

二、实验内容:

1、时域的采样过程、采样定理和混叠效果;

2、频域中的采样效果;

3、学习buttworth模拟低通滤波器的设计命令;

三、实验例程

1、连续时间信号的理想抽样及其混叠效果

clf;

T=0.4;f=25;

n=(0:T:1)';

xs=cos(2*pi*f*n);

t=linspace(-0.5,1.5,500)';

ya=sinc((1/T)*t(:,ones(size(n)))-(1/T)*n(:,ones(size(t)))')*xs;

plot(n,xs,'o',t,ya);grid;

xlabel('Time,msec');ylabel('Amplitude');

title('Reconstructed continuous-time signal y_{a}(t)');

axis([01-1.21.2])

2、.频率抽样及其混叠效果

clf;

t=0:0.002:50;

xa=2*t.*exp(-t);

subplot(4,2,1)

plot(t,xa);grid

xlabel('Time,msec');ylabel('Amplitude');

title('Continuous-time signal x_{a}(t)');

subplot(4,2,2)

wa=0:10/511:10;

ha=freqs(2,[121],wa);

plot(wa/(2*pi),abs(ha));grid;

xlabel('Frequency,kHz');ylabel('Amplitude');

title('|X_{a}(j\Omega)|');

axis([05/pi02]);

subplot(4,2,3)

T=1;

n=0:T:10;

xs=2*n.*exp(-n);

k=0:length(n)-1;

stem(k,xs);grid;

xlabel('Time index n');ylabel('Amplitude');

title('Discrete-time signal x[n]');

subplot(4,2,4)

wd=0:pi/255:pi;

hd=freqz(xs,1,wd);

plot(wd/(T*pi),T*abs(hd));grid;

xlabel('Frequency,kHz');ylabel('Amplitude');

title('|X(e^{j\omega})|');

axis([01/T02])

3、buttworth模拟低通滤波器的设计命令并画出该滤波器图形。

clf;

Fp=3500;Fs=4500;

Wp=2*pi*Fp;Ws=2*pi*Fs;

[N,Wn]=buttord(Wp,Ws,0.5,30,'s');

[b,a]=butter(N,Wn,'s');

wa=0:(3*Ws)/511:3*Ws;

h=freqs(b,a,wa);

plot(wa/(2*pi),20*log10(abs(h)));grid

xlabel('Frequency,Hz');ylabel('Gain,dB');

title('Gain response');

axis([03*Fs-605]);

四、本实验用到的matlab命令

Butter buttord freqs freqz sinc hist

实验三:离散时间信号与离散时间系统系统的频域分析

一、实验目的:

1、掌握matlab编写基于离散时间傅立叶变换(DTFT)、z变换和离散傅立叶变换

(DFT)的程序,并通过本训练加深对这些概念和算法的理解;

2、理解DTFT、ZT和DFT的相互关系。

3、掌握离散系统的频率响应分析;

4、理解零、极点分布的概念。

5、理解帕斯瓦尔定理。

二、实验内容:

1、离散时间傅立叶变换(DTFT)的定义、计算和基本性质;

2、Z变换分析;

3、系统传输函数和频率响应;

4、系统传输函数的类型;

5、系统稳定性测试;

6、离散傅立叶变换(DFT)的计算和基本性质;

7、利用FFT实现线性卷积;

8、利用FFT显示理解帕斯瓦尔定理。

三、实验例程

1、用MATLAB编写离散时间信号的傅里叶变换(DTFT)并绘出8点幅频和相频曲线。%Program P3_1

%Evaluation of the DTFT

clf;

%Compute the frequency samples of the DTFT

w=-4*pi:8*pi/511:4*pi;

num=[21];den=[1-0.6];

h=freqz(num,den,w);

%Plot the DTFT

subplot(2,1,1)

plot(w/pi,real(h));grid

title('Real part of H(e^{j\omega})')

xlabel('\omega/\pi');

ylabel('Amplitude');

subplot(2,1,2)

plot(w/pi,imag(h));grid

title('Imaginary part of H(e^{j\omega})')

xlabel('\omega/\pi');

ylabel('Amplitude');

pause

subplot(2,1,1)

plot(w/pi,abs(h));grid

title('Magnitude Spectrum|H(e^{j\omega})|')

xlabel('\omega/\pi');

ylabel('Amplitude');

subplot(2,1,2)

plot(w/pi,angle(h));grid

title('Phase Spectrum arg[H(e^{j\omega})]')

xlabel('\omega/\pi');

ylabel('Phase in radians');

2、MATLAB验证实序列的离散时间傅立叶变换的对称关系。

N=8;

k=0:N-1;

gamma=0.5;

x=exp(gamma*k);

y=exp(gamma*fliplr(k));

xev=0.5*([zeros([1,N-1])x]+[y zeros([1,N-1])]);

xod=0.5*([zeros([1,N-1])x]-[y zeros([1,N-1])]);

[X,w]=freqz(x,1,512);

[Xev,w]=freqz(xev,1,512);

[Xod,w]=freqz(xod,1,512);

Xev=exp(j*w*(N-1)).*Xev;

Xod=exp(j*w*(N-1)).*Xod;

%Verify real(X)=Xev,and imag(X)=Xod

r=0:511;

w0=-pi*r/512;

X1=freqz(x,1,w0');

%Verify X=conj(X1)

%real(X)=real(X1)and imag(X)=-imag(X1)

%abs(X)=abs(X1)and angle(X)=-angle(X1)

3、用MATLAB计算序列Modulation Property of DTFT并给出其调制图形。%Program P3_5

%Modulation Property of DTFT

clf;

w=-pi:2*pi/255:pi;

x1=[1357911131517];

x2=[1-11-11-11-11];

y =x1.*x2;h1=freqz(x1,1,w);h2=freqz(x2,1,w);h3=freqz(y,1,w);subplot(3,1,1)plot(w/pi,abs(h1));grid title('Magnitude Spectrum of First Sequence')subplot(3,1,2)plot(w/pi,abs(h2));grid title('Magnitude Spectrum of Second Sequence')subplot(3,1,3)plot(w/pi,abs(h3));grid title('Magnitude Spectrum of Product Sequence')

4、用MATLAB 计算序列[]?????≤≤--=otherwise N n N N n n y 0

12的N 点离散傅立叶变换,N 取3,5,7,9。比较在1,,1,0,

/2-==N k N k π?时计算得到的离散时间傅立叶变换的结果。

N =16;

clf;

N =input('The value of N =');

k =-N:N;

y1=ones([1,2*N+1]);

y2=y1-abs(k)/N;

w =0:2*pi/255:2*pi;

Y2=freqz(y2,1,w);

Y2dft =fft(y2);

k =0:1:2*N;plot(w/pi,abs(Y2),k*2/(2*N+1),abs(Y2dft),'o');

xlabel('Normalized frequency');ylabel('Amplitude');

4、用MATLAB 研究滤波器的系统函数及其冲激响应,产生零极点图,最终显示出零点的位置。

clf;

b =[1-8.530.5-63];

num1=[b 81fliplr(b)];

num2=[b 8181fliplr(b)];

num3=[b 0-fliplr(b)];

num4=[b 81-81-fliplr(b)];

n1=0:length(num1)-1;

n2=0:length(num2)-1;

subplot(2,2,1);stem(n1,num1);

xlabel('Time index n');ylabel('Amplitude');grid;

title('Type1FIR Filter');

subplot(2,2,2);stem(n2,num2);

xlabel('Time index n');ylabel('Amplitude');grid;

title('Type2FIR Filter');

subplot(2,2,3);stem(n1,num3);

xlabel('Time index n');ylabel('Amplitude');grid;

title('Type3FIR Filter');

subplot(2,2,4);stem(n2,num4);

xlabel('Time index n');ylabel('Amplitude');grid;

title('Type4FIR Filter');

pause

subplot(2,2,1);zplane(num1,1);

title('Type1FIR Filter');

subplot(2,2,2);zplane(num2,1);

title('Type2FIR Filter');

subplot(2,2,3);zplane(num3,1);

title('Type3FIR Filter');

subplot(2,2,4);zplane(num4,1);

title('Type4FIR Filter');

disp('Zeros of Type1FIR Filter are');

disp(roots(num1));

disp('Zeros of Type2FIR Filter are');

disp(roots(num2));

disp('Zeros of Type3FIR Filter are');

disp(roots(num3));

disp('Zeros of Type4FIR Filter are');

disp(roots(num4));

4.用MATLAB产生序列的圆周移位,并画图观察该现象,clf;

x=[0246810121416];

N=length(x)-1;n=0:N;

y=circshift(x,5);

XF=fft(x);

YF=fft(y);

subplot(2,2,1)

stem(n,abs(XF));grid

title('Magnitude of DFT of Original Sequence');

subplot(2,2,2)

stem(n,abs(YF));grid

title('Magnitude of DFT of Circularly Shifted Sequence'); subplot(2,2,3)

stem(n,angle(XF));grid

title('Phase of DFT of Original Sequence');

subplot(2,2,4)

stem(n,angle(YF));grid

title('Phase of DFT of Circularly Shifted Sequence');

5、用MATLAB编写快速傅里叶变换,并实现偶序列的DFT的虚实部,采用图形表示。%Program P3_11

%Relations between the DFTs of the Periodic Even

%and Odd Parts of a Real Sequence

x=[1242632642zeros(1,247)];

x1=[x(1)x(256:-1:2)];

xe=0.5*(x+x1);

XF=fft(x);

XEF=fft(xe);

clf;

k=0:255;

subplot(2,2,1);

plot(k/128,real(XF));grid;

ylabel('Amplitude');

title('Re(DFT\{x[n]\})');

subplot(2,2,2);

plot(k/128,imag(XF));grid;

ylabel('Amplitude');

title('Im(DFT\{x[n]\})');

subplot(2,2,3);

plot(k/128,real(XEF));grid;

xlabel('Time index n');ylabel('Amplitude');

title('Re(DFT\{x_{e}[n]\})');

subplot(2,2,4);

plot(k/128,imag(XEF));grid;

xlabel('Time index n');ylabel('Amplitude');

title('Im(DFT\{x_{e}[n]\})');

6、编写稳定性测试程序

%Program P4_4

%Stability Test

clf;

den=input('Denominator coefficients=');

ki=poly2rc(den);

disp('Stability test parameters are');

disp(ki);

7、用MATLABD编写基于FFT的帕斯瓦尔定理。

%Program P3_12

%Parseval's Relation

x=[(1:128)(128:-1:1)];

XF=fft(x);

a=sum(x.*x)

b=round(sum(abs(XF).^2)/256)

四、本实验用到的matlab命令

filter Freqz impz filrfilt residuez tf2zp zp2sos zplane fft sinc zplane

实验四:IIR&FIR数字滤波器的设计

一、实验目的:

1、熟悉无限冲激响应(IIR)和有限冲激响应(FIR)网络结构,对比学习模拟滤

波器和数字滤波器的常用指标;

2、熟悉冲激响应不变法和双线性变换法设计低通滤波器的程序编写,并深化理解;

3、熟悉FIR线性相位滤波器的概念及其表示;

4、熟悉FIR滤波器窗函数设计法;

5、熟悉两种滤波器设计过程,并可修改其设计指标,对比输出效果。

二、实验内容:

1、IIR(无限冲激响应滤波器)阶数估计及其buttworth和chybyshev滤波器设计;

2、冲激响应不变法和双线性变换法设计;

3、FIR滤波器设计中出现频域出现吉布斯现象的来由;

3、有限冲激响应滤波器窗函数设计法;

三、实验计算及例程

1、设低通DF的3dB带宽频率wc=0.2π,止带频率ws=0.4π,在w=ws 处的止带衰减20lg|H(ejws)|=-15dB,试用脉冲响应不变法(冲激不变法)设计一个Butterworth低通DF。(设采样频率fs=20kHz)

Wp=input('Normalized passband edge=');

Ws=input('Normalized stopband edge=');

Rp=input('Passband ripple in dB=');

Rs=input('Minimum stopband attenuation in dB=');

[N,Wn]=buttord(Wp,Ws,Rp,Rs);

[b,a]=butter(N,W

n);

[h,omega]=freqz(b,a,512);

plot(omega/pi,20*log10(abs(h)));

grid;

xlabel('\omega/\pi');

ylabel('Gain dB');

title('IIR Butterworth Lowpass Filter');

2无限冲激响应滤波器阶数估计和滤波器设计巴特沃兹带阻滤波器

Ws=[0.40.6];Wp=[0.20.8];Rp=0.4;Rs=50;

%Estimate the Filter Order

[N1,Wn1]=buttord(Wp,Ws,Rp,Rs);

%Design the Filter

[num,den]=butter(N1,Wn1,'stop');

%Display the transfer function

disp('Numerator Coefficients are');disp(num);

disp('Denominator Coefficients are');disp(den);

%Compute the gain response

[g,w]=gain(num,den);

%Plot the gain response

plot(w/pi,g);grid

axis([01-605]);

xlabel('\omega/\pi');ylabel('Gain in dB');

title('Gain Response of a Butterworth Bandstop Filter')

3、吉布斯环的生成;

在FIR窗函数设计法中,频域傅立叶变换的无限振荡谐波数列叠加合成时,会产生尖锐不连续的区间,好比方波的下降及上升,这就是吉布斯现象,这种现象产生的不仅与谐波的叠加合成的数量有关,而且其变化的宽度随合成的个数增加而变窄。

单位方波:

傅立叶级数表示:

function y=gibbs(x,M,duty)

%GIBBS

%x:待估价的值(0

%M:区间

%duty:占空比(0-1)

%

if(nargin<3)

duty=0.5;

end

p=(-M:M);

for(j=1:length(x))

y(j)=sum(duty*sinc(duty*p).*exp(-i*2*pi*p*abs(x(j))));

end

正规重构:覆盖整个单位方波范围

s=linspace(-0.5,0.5,200);

plot(s,gibbs(s,M));

4、有限冲激响应滤波器阶数估计和滤波器设计;

用凯塞窗设计一FIR

低通滤波器,低通边界频率

,阻带边界频率

,阻带衰减不小于50dB。

计算与例程

由过渡带宽和阻带衰减来决定凯塞窗的N

凯塞窗设计对应的MATLAB程序为:

wn=kaiser(30,4.55);

nn=[0:1:29];

alfa=(30-1)/2;

hd=sin(0.4*pi*(nn-alfa))./(pi*(nn-alfa));

h=hd.*wn';

[h1,w1]=freqz(h,1);

plot(w1/pi,20*log10(abs(h1)));

axis([0,1,-80,10]);

grid;

xlabel('归一化频率/π')

ylabel('幅度/dB')

5、试用双线性变换法设计Butterworth低通DF。

已知低通DF的3dB带宽频率,止带起始频率,在处的止带衰减

要求进行计算机MATLAB仿真并得出结果。

解:使用Matlab软件仿真仿真的程序如下:

π

ω2.0

=

c

π

ω4.0

=

s s

ω

ω=dB

e

H s jw15

)

(

lg

20-

=

clc;

clear all;

OmegaP=2*pi*2000;

OmegaS=2*pi*4000;

Rp=3;

As=15;

g=sqrt((10^(As/10)-1)/(10^(Rp/10)-1));

OmegaR=OmegaS/OmegaP;

N=ceil(log10(g+sqrt(g*g-1))/log10(OmegaR+sqrt(OmegaR*OmegaR-1)));

OmegaC=OmegaS;

[z0,p0,k0]=cheb2ap(N,As);

a0=real(poly(p0));

aNn=a0(N+1);p=p0*OmegaC;a=real(poly(p));

aNu=a(N+1);b0=real(poly(z0));M=length(b0);

bNn=b0(M);z=z0*OmegaC;b=real(poly(z));

bNu=b(M);k=k0*(aNu*bNn)/(aNn*bNu);

b=k*b

w0=[OmegaP,OmegaS];

[H,w]=freqs(b,a);

Hx=freqs(b,a,w0);

dbHx=-20*log10(abs(Hx)/max(abs(H)))

plot(w/(2*pi)/1000,20*log10(abs(H)));

xlabel('f(kHz)');ylabel('dB');axis([-1,12,-55,1]);

set(gca,'xtickmode','manual','xtick',[0,1,2,3,4,5,6,7,8,9]);

set(gca,'ytickmode','manual','ytick',[-50,-40,-30,-20,-10,0]);

grid;

6、设计一线性相位FIR数字滤波器截止频率wc=0.2π,过滤带宽度△w<0.4π,阻带衰减As>40db,用Hanning汉宁窗、hamming汉明窗以及Blackman窗设计(可以查阅相关表格),并用MATLAB软件实现(包括画图)。

解:查资料有如下表1

各种窗函数的基本参数

窗函数旁瓣峰值幅度/dB过渡带宽阻带最小衰减/dB

矩形窗-134π/N-12

三角形窗-258π/N-25

汉宁窗-318π/N-44

哈明窗-418π/N-53

布莱克窗-5712π/N-74

凯塞窗(α=7.865)-5710π/N-80

由上表并经计算可知N的取值为N=20

表2

不同的β值对应的凯塞窗

β过渡带宽B/rad阻带最小衰减/dB

2.210

3.0030

3.3844,4640

4.538

5.8650

5.6587.2460

6.76412.870

由表可知β=3.384

则用Matlab软件仿真的程序如下:

clc;

clear all;

N=20;n=1:N;beta=3.384;

wdhn=hanning(N);

wdhm=hamming(N);wdbl=blackman(N);wdks=kaiser(N,beta);

plot(n',[wdhn,wdhm,wdbl,wdks])

legend('hn','hm','bl','ks')

仿真的结果如下图:

四、本实验用到的matlab命令

Blackman butter buttord chebwin chev1ord chev2ord cheby1cheby2ellip ellipord freqs freqz sinc fir1fir2hanning hamming Kaiser remez remezord

Matlab上机实验答案

Matlab上机实验答案 实验一 MATLAB运算基础 1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。 >> z1=2*sin(85*pi/180)/(1+exp(2)) z1 = >> x=[2 1+2i; 5]; >> z2=1/2*log(x+sqrt(1+x^2)) z2 = - + + -

>> a=::; >> z3=(exp.*a)-exp.*a))./2.*sin(a++log(+a)./2) (>> z33=(exp*a)-exp*a))/2.*sin(a++log(+a)/2)可以验证z3==z33,是否都为1) z3 = Columns 1 through 5 + + + + + Columns 6 through 10 + + + + + Columns 11 through 15 + + + + + Columns 16 through 20 + + + + +

Columns 21 through 25 + + + + + Columns 26 through 30 + + + + + Columns 31 through 35 + + + + + Columns 36 through 40 + + + + + Columns 41 through 45 + + + + + Columns 46 through 50

+ + + + + Columns 51 through 55 + + + + + Columns 56 through 60 + + + + + Column 61 + (4) 2 2 4 2 01 112 2123 t t z t t t t t ?≤< ? =-≤< ? ?-+≤< ? ,其中t=0:: >> t=0::; >> z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3).*(t.^ 2-2.*t+1) z4 =

Matlab实验指导书

实验一 Matlab使用方法和程序设计 一、实验目的 1、掌握Matlab软件使用的基本方法; 2、熟悉Matlab的数据表示、基本运算和程序控制语句; 3、熟悉Matlab绘图命令及基本绘图控制; 4、熟悉Matlab程序设计的基本方法。 二、实验内容 1、帮助命令 2、矩阵运算 (1)矩阵的乘法和乘方 已知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。 ( 3 )矩阵的转置及共轭转置 已知A=[5+i,2-i,1;6*i,4,9-i],求该复数矩阵的转置A',共轭转置A.' ( 4 )使用冒号选出指定元素 已知:A=[1 2 3:4 5 6:7 8 9];求A中第3列前2个元素;A中第2、3行元素。 ( 5 )方括号[] 用magic函数生成一个4阶魔术矩阵,删除该矩阵的第四列 3、多项式 (1)求多项式P(x)=x3-2x-4的根 ( 2 )已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4].,构造多项式,并计算多项式值为20的解。 4、基本绘图命令 ( 1 ) 绘制余弦曲线 ] 2,0[ ), cos(π ∈ =t t y 。 ( 2 ) 在同一坐标系中绘制曲线 ] 2,0[ ), 5.0 sin( ), 25 .0 cos( yπ ∈ - = - =t t y t 5、基本绘图控制 绘制 ] 4,0[π 区间上的y=10sint曲线,并要求: (1)线形为点划线,颜色为红色,数据点标记为加号; (2)坐标轴控制:显示范围,刻度线,比例,网络线; (3)标注控制:坐标轴名称,标题,相应文本。 6、基本程序设计 (1)编写命令文件:计算1+2+....+n<2000时的最大n值; (2)编写函数文件:分别用n和which循环结构编写程序,求2的0到n次幂的和. n=input('输入正数n:') ji=1: for i=1:n; ji=ji+2^i: end ji input('输入正数n:') ji-1:i-1: While i<=n ji=ji+2^i; i=i+1; end ji (3)如果想对一个变量x赋值,当从键盘输入y或Y时,x自动赋为1;当从键盘输入n或N时,x自 动赋为0;输入其他字符时终止程序。 k=input('shuruX:'.'s'): if k=='y' k=='Y' x=1 ; else k=='n' k=='N' x=0; else ruturn end >> n=input('输入正数n:') 输入正数n:20 n =20

MATLAB全部实验及答案

MATLAB全部实验及答案 实验一、MATLAB基本操作 实验内容及步骤 4、有关向量、矩阵或数组的一些运算 (1)设A=15;B=20;求C=A+B与c=a+b? (2)设A=[1 2 3;4 5 6;7 8 9],B=[9 8 7;6 5 4;3 2 1];求A*B与 A.*B? A*B就是线代里面的矩阵相乘 A.*B是对应位置的元素相乘(3)设a=10,b=20;求i=a/b=0.5与j=a\b=2? (4)设a=[1 -2 3;4 5 -4;5 -6 7] 请设计出程序,分别找出小于0的矩阵元素及其位置(单下标、全 下标的形式),并将其单下标转换成全下标。 clear,clc a=[1 -2 3;4 5 -4;5 -6 7]; [x,y]=find(a<0); c=[]; for i=1:length(x) c(i,1)=a(x(i),y(i)); c(i,2)=x(i); c(i,3)=y(i); c(i,4)=(y(i)-1)*size(a,2)+x(i); end c

(5)在MATLAB命令行窗口运行A=[1,2;3,4]+i*[5,6;7,8];看结果如何?如果改成运行A=[1,2;3,4]+i[5,6;7,8],结果又如何?前面那 个是虚数矩阵,后面那个出错 (6)请写出完成下列计算的指令: a=[1 2 3;3 4 2;5 2 3],求a^2=?,a.^2=? a^2= 22 16 16 25 26 23 26 24 28 a.^2= 1 4 9 9 16 4 25 4 9 (7)有一段指令如下,请思考并说明运行结果及其原因 clear X=[1 2;8 9;3 6]; X( : ) 转化为列向量 (8)使用三元组方法,创建下列稀疏矩阵 2 0 8 0 0 0 0 1 0 4 0 0 6 0 0 0 方法一: clear,clc

MATLAB实验指导书

实验一MATLAB 工作环境熟悉及简单命令的执行 一、 实验目的:熟悉MATLAB 的工作环境,学会使用MATLAB 进行一些简单的运算。 二、 实验内容:MATLAB 的启动和退出,熟悉MATLAB 的桌面(Desktop ),包括菜单 (Menu )、工具条(T oolbar )、命令窗口(Command Window)、历史命令窗口、工作 空间(Workspace)等;完成一些基本的矩阵操作;学习使用在线帮助系统。 三、实验步骤: 1、启动MATLAB ,熟悉MATLAB 的桌面。 2、在命令窗口执行命令完成以下运算,观察workspace 的变化,记录运算结果。 (1)(365-52?2-70)÷3; (2)area=pi*2.5^2; (3)已知x=3,y=4,在MATLAB 中求z : ()23 2y x y x z -= ; (4)将下面的矩阵赋值给变量m1,在workspace 中察看m1在内存中占用的字节数。 m1=???? ? ???? ???11514412679810115133216 执行以下命令 >>m1( 2 , 3 ) >>m1( 11 ) >>m1( : , 3 ) >>m1( 2 : 3 , 1 : 3 ) >>m1( 1 ,4 ) + m1( 2 ,3 ) + m1( 3 ,2 ) + m1( 4 ,1) (5)执行命令>>help abs 查看函数abs 的用法及用途,计算abs( 3 + 4i ); (6)执行命令 >>x=0:0.1:6*pi; >>y=5*sin(x); >>plot(x,y) (7)运行MATLAB 的演示程序,>>demo ,以便对MATLAB 有一个总体了解。 四、思考题 1、以下变量名是否合法?为什么? (1)x2; (2)3col ; (3)_row ; (4)for ;

实验二 Matlab程序设计基本方法1

实验二Matlab程序设计基本方法 覃照乘自092 电气工程学院 一、实验目的: 1、熟悉MATLAB 程序编辑与设计环境 2、掌握各种编程语句语法规则及程序设计方法 3、函数文件的编写和设计 4、了解和熟悉跨空间变量传递和赋值 二、实验基本知识: ◆for循环结构 语法:for i=初值:增量:终值 语句1 …… 语句n end 说明:1.i=初值:终值,则增量为1。 2.初值、增量、终值可正可负,可以是整数,也可以是小数,只须符合数学逻辑。 ◆while 循环结构 语法:while 逻辑表达式 循环体语句 end 说明:1、whiIe结构依据逻辑表达式的值判断是否执行循环体语勾。若表达式的值为真,执行循环体语句一次、在反复执行时,每次都要进行判断。若表达 式的值为假,则程序执行end之后的语句。 2、为了避免因逻辑上的失误,而陷入死循环,建议在循环体语句的适当位 置加break语句、以便程序能正常执行。(执行循环体的次数不确定; 每一次执行循环体后,一定会改变while后面所跟关系式的值。) 3、while循环也可以嵌套、其结构如下:

while逻辑表达式1 循环体语句1 while逻辑表达式2 循环体语句2 end 循环体语句3 end ◆if-else-end分支结构 if 表达式1 语句1 else if 表达式2(可选) 语句2 else(可选) 语句3 end end 说明:1.if结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出if结构。 2.else if表达式2与else为可选项,这两条语句可依据具体情况取舍。 3.注意:每一个if都对应一个end,即有几个if,记就应有几个end。 ◆switch-case结构 语法:switch表达式 case常量表达式1 语句组1 case常量表达式2 语句组2 …… otherwise 语句组n end

Matlab实验五分支结构程序设计答案

实验五分支结构程序设计 实验内容 (1)从键盘输入一个数,将它反向输出,例如输入693,输出为396 >> clear >> format long g s=input('s=') n=fix(log10(s)); A=0; for i=1:n a=fix(s/10^n); x=fix(mod(s,10^i)/10.^(i-1)); A=A+x*10^(n+1-i); end A+a s=693 s = 693 ans = 396 (2)输入一个百分制成绩,要求输出成绩等级A,B,C,D,E其中90-100位A,80-89为B,70-79为C,60-69为D,60以下为E 1)分别用if语句和switch语句实现 2)输入百分制成绩后要判断成绩的合理性,对不合理的成绩应输出出错信息 If语句 >> a=input('输入成绩') if a>=90&a<=100 disp('A 成绩合理'); elseif a>=80&a<90 disp('B 成绩合理'); elseif a>=70&a<80 disp('C 成绩合理');

elseif a>=60&a<70 disp('D 成绩合理'); elseif a<60 disp('E 成绩合理'); else disp('成绩错误') end 输入成绩98 a = 98 A 成绩合理 >> a=input('输入成绩') if a>=90&a<=100 disp('A 成绩合理'); elseif a>=80&a<90 disp('B 成绩合理'); elseif a>=70&a<80 disp('C 成绩合理'); elseif a>=60&a<70 disp('D 成绩合理'); elseif a<60 disp('E 成绩合理'); else disp('成绩错误') end 输入成绩148 a = 148 成绩错误 switch语句 >> a=input('输入成绩') switch a; case num2cell(0:59) disp('E 成绩合理'); case num2cell(60:69) disp('D 成绩合理'); case num2cell(70:79) disp('C 成绩合理'); case num2cell(80:89) disp('B 成绩合理'); case num2cell(90:100) disp('A 成绩合理'); otherwise disp('成绩错误'); end

MATLAB)课后实验答案

实验一 MATLAB 运算基础 1. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。 (1) 012 2sin 851z e =+ (2) 21ln(2 z x =,其中2 120.45 5i x +??=? ?-?? (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022 a a e e a z a a --+= ++=--L (4) 22 42011 122123t t z t t t t t ?≤

4. 完成下列操作: (1) 求[100,999]之间能被21整除的数的个数。 (2) 建立一个字符串向量,删除其中的大写字母。解:(1) 结果: (2). 建立一个字符串向量例如: ch='ABC123d4e56Fg9';则要求结果是:

实验二 MATLAB 矩阵分析与处理 1. 设有分块矩阵33322322E R A O S ?????? =? ??? ,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证22 E R RS A O S +?? =???? 。 解: M 文件如下; 5. 下面是一个线性方程组: 1 231 1 12340.951110.673450.5211145 6x x x ?? ??????????????=??? ?????????????????? ? ch = 123d4e56g9

(1) 求方程的解。 (2) 将方程右边向量元素b 3改为0.53再求解,并比较b 3的变化和解的相对变化。 (3) 计算系数矩阵A 的条件数并分析结论。 解: M 文件如下: 实验三 选择结构程序设计 1. 求分段函数的值。 2226035605231x x x x y x x x x x x x ?+-<≠-? =-+≤<≠≠??--? 且且及其他 用if 语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y 值。 解:M 文件如下:

matlab实验二

实验2 MATLAB数值计算、符号运算功能 一、实验目的 1、掌握建立矩阵、矩阵分析与处理的方法。 2、掌握线性方程组的求解方法。 3、掌握数据统计和分析方法、多项式的常用运算。 4、掌握求数值导数和数值积分、常微分方程数值求解、非线性代数方程数值求解的方法。 5、掌握定义符号对象的方法、符号表达式的运算法则及符号矩阵运算、符号函数极限及导数、符号函数定积分和不定积分的方法。 二、预习要求 (1)复习4、5、6章所讲内容; (2)熟悉MATLAB中的数值计算和符号运算的实现方法和主要函数。 三、实验内容 1、已知 29618 20512 885 A -?? ?? =?? ?? - ?? ,求A的特征值及特征向量,并分析其数学意义。 >> A=[-29,6,18;20,5,12;-8,8,5]; >> [V,D]=eig(A) V = 0.7130 0.2803 0.2733 -0.6084 -0.7867 0.8725 0.3487 0.5501 0.4050 D = -25.3169 0 0 0 -10.5182 0 0 0 16.8351 V为A的特征向量,D为A的特征值,3个特征值是-25.3169、10.5182和16.8351。 >> A*V ans = -18.0503 -2.9487 4.6007 15.4017 8.2743 14.6886 -8.8273 -5.7857 6.8190 >> V*D

ans = -18.0503 -2.9487 4.6007 15.4017 8.2743 14.6886 -8.8273 -5.7857 6.8190 经过计算,A*V=V*D 。 2、 不用rot90函数,实现方阵左旋90°或右旋90°的功能。例如,原矩阵为A ,A 左旋后得到B ,右旋后得到C 。 147102581136912A ????=??????,101112789456123B ??????=??????,321654987121110B ??????=?????? 提示:先将A 转置,再作上下翻转,则完成左旋90°;如将A 转置后作左右翻转,则完成右旋转90°,可用flipud 、fliplr 函数。 >> a=[1 4 7 10;2 5 8 11;3 6 9 12] a= 1 4 7 10 2 5 8 11 3 6 9 12 >> B=rot90(a) B = 10 11 12 7 8 9 4 5 6 1 2 3 >>C= rot90(s,3) C= 3 2 1 6 5 4 9 8 7 12 11 10

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实验题答案

1、求以下变量的值,并在MATLAB中验证。( 1 ) a = 1 : 2 : 5 a = 1 3 5 ( 2 ) b = [ a' , a' , a' ;a ] b = 1 1 1 3 3 3 5 5 5 1 3 5 ( 3 ) c = a + b ( 2 , : ) c = 4 6 8 2、下列运算是否合法,为什么?如合法, 结果是多少? >> result2=a*b Error using * Inner matrix dimensions must agree. >> result3=a+b result3 = 3 6 2 5 8 11 >> result4=b*d result4 = 31 22 22 40 49 13 >> result5=[b;c']*d result5 = 31 22 22 40 49 13 -5 -8 7 >> result6=a.*b result6 = 2 8 -3 4 1 5 30 >> result7=a./b result7 = 0.5000 0.5000 -3.0000 4.0000 1.6667 1.2000>> result8=a.c Attempt to reference field of non-structure array. >> result9=a.\b result9 = 2.0000 2.0000 -0.3333 0.2500 0.6000 0.8333 >> result10=a.^2 result10 = 1 4 9 16 25 36 >> result11=2.^a result11 = 2 4 8 16 32 64 3、用MATLAB求解下面的的方程组。 (1) ? ? ? ? ? ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - 1 7 4 13 2 3 1 5 11 2 2 2 3 15 9 2 1 2 7 4 3 2 1 x x x x >> A=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13] >> B=[4 7 -1 0] >> B=B' >> x=inv(A)*B (2) ? ? ? ? ? ? ? = - + + = - - = - + + = + + 5 6 5 3 3 3 3 2 8 2 1 w z y x w y x w z y x z y x >> A1=[1 1 1 0;1 2 1 -1;2 -1 0 -3;3 3 5 -6] >> B2=[1;8;3;5] >> x2=inv(A1)*B2 4、已知 ? ? ? ? ? ? ? ? ? ? ? ? - - - - = 13 2 3 1 5 11 2 2 2 3 15 9 2 1 2 7 A

MATLAB实验报告实验二

实验二 MATLAB矩阵及其运算 学号:3121003104 姓名:刘艳琳专业:电子信息工程1班日期:2014.9.20 一实验目的 1、掌握Matlab数据对象的特点以及数据的运算规则。 2、掌握Matlab中建立矩阵的方法以及矩阵处理的方法。 3、掌握Matlab分析的方法。 二实验环境 PC_Windows 7旗舰版、MATLAB 7.10 三实验内容 4、1. (1)新建一个.m文件,验证书本第15页例2-1; (2)用命令方式查看和保存代码中的所有变量;

(3)用命令方式删除所有变量; (4)用命令方式载入变量z。 2. 将x=[4/3 1.2345e-6]在以下格式符下输出:短格式、短格式e方式、长格式、长格式e方式、银行格式、十六进制格式、+格式。 短格式 短格式e 长格式

长格式e方式 银行格式 十六进制格式 3.计算下列表达式的值 (1)w=sqrt(2)*(1+0.34245*10^(-6)) (2)x=(2*pi*a+(b+c)/(pi+a*b*c)-exp(2))/(tan(b+c)+a) a=3.5;b=5;c=-9.8; (3)y=2*pi*a^2*((1-pi/4)*b-(0.8333-pi/4)*a) a=3.32;b=-7.9; (4)z=0.5*exp(2*t)*log(t+sqrt(1+t*t)) t=[2,1-3i;5,-0.65];

4. 已知A=[1 2 3 4 5 ;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20],对其进行如下操作:(1)输出A在[ 7, 10]范围内的全部元素; (2)取出A的第2,4行和第1,3,5列; (3)对矩阵A变换成向量B,B=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]; (4)删除A的第2,3,4行元素; (1) (2)

MATLAB实验二(修改)

实验二 信号的表示及其基本运算 一、实验目的 1、掌握连续信号及其MATLAB 实现方法; 2、掌握离散信号及其MA TLAB 实现方法 3、掌握离散信号的基本运算方法,以及MA TLAB 实现 4 熟悉应用MATLAB 实现求解系统响应的方法 4、了解离散傅里叶变换的MA TLAB 实现 5、了解IIR 数字滤波器设计 6、了解FIR 数字滤波器设计1 二、实验设备 计算机,Matlab 软件 三、实验内容 (一)、 连续信号及其MATLAB 实现 1、 单位冲激信号 ()0,0()1,0 t t t dt ε ε δδε-?=≠??=?>??? 例1.1:单位冲击信号的MATLAB 实现程序如下: t1=-4; t2=4; t0=0; dt=0.01; t=t1:dt:t2; n=length(t); x=zeros(1,n); x(1,(-t0-t1)/dt+1)=1/dt; stairs(t,x); axis([t1,t2,0,1.2/dt]); 2、 任意函数 ()()()f t f t d τδττ+∞ -∞ =-? 例1.2:用MA TLAB 画出如下表达式的脉冲序列 ()0.4(2)0.8(1) 1.2() 1.5(1) 1.0(2)0.7(3)f n n n n n n n δδδδδδ=-+-+++++++ 3 单位阶跃函数 1,0()0, t u t t ?≥?=?

t=-0.5:0.001:1; t0=0; u=stepfun(t,t0); plot(t,u) axis([-0.5 1 -0.2 1.2]) 4 斜坡函数 0()()g t B t t =- 例1.4:用MA TLAB 实现g(t)=3(t-1) clear all; t=0:0.01:3; B=3; t0=1; u=stepfun(t,t0); n=length(t); for i=1:n u(i)=B*u(i)*(t(i)-t0); end plot(t,u) axis([-0.2 3.1 -0.2 6.2]) 5 抽样信号 抽样信号Sa(t)=sin(t)/t 在MATLAB 中用 sinc 函数表示。 定义为 )/(sin )(πt c t Sa = t=-3*pi:pi/100:3*pi; ft=sinc(t/pi); plot(t,ft); grid on; axis([-10,10,-0.5,1.2]); %定义画图范围,横轴,纵轴 title('抽样信号') %定义图的标题名字 6 指数函数 ()at f t Ae = 例1.5:用MA TLAB 实现0.5()3t f t e = 7 正弦函数 2()cos( )t f t A T π?=+ 例1.6:用MA TLAB 实现正弦函数f(t)=3cos(10πt+1) 8 虚指数信号 例 虚指数信号 调用格式是f=exp((j*w)*t) t=0:0.01:15;

MATLAB上机实验(答案)

MATLAB工具软件实验(1) (1)生成一个4×4的随机矩阵,求该矩阵的特征值和特征向量。程序: A=rand(4) [L,D]=eig(A) 结果: A = 0.9501 0.8913 0.8214 0.9218 0.2311 0.7621 0.4447 0.7382 0.6068 0.4565 0.6154 0.1763 0.4860 0.0185 0.7919 0.4057 L = -0.7412 -0.2729 - 0.1338i -0.2729 + 0.1338i -0.5413 -0.3955 -0.2609 - 0.4421i -0.2609 + 0.4421i 0.5416 -0.4062 -0.0833 + 0.4672i -0.0833 - 0.4672i 0.4276 -0.3595 0.6472 0.6472 -0.4804 D = 2.3230 0 0 0 0 0.0914 + 0.4586i 0 0 0 0 0.0914 - 0.4586i 0 0 0 0 0.2275 (2)给出一系列的a值,采用函数 22 22 1 25 x y a a += - 画一组椭圆。 程序: a=0.5:0.5:4.5; % a的绝对值不能大于5 t=[0:pi/50:2*pi]'; % 用参数t表示椭圆方程 X=cos(t)*a; Y=sin(t)*sqrt(25-a.^2); plot(X,Y) 结果: (3)X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2], (a)写出计算其负元素个数的程序。程序: X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2]; L=X<0; A=sum(L) 结果: A =

Matlab实验

MATLAB实验报告 学校:湖北文理学院 学院:物理与电子工程学院 专业:电子信息工程 学号: 2013128182 姓名:张冲 指导教师:宋立新

实验一 MATLAB环境的熟悉与基本运算 一、实验目的: 1.熟悉MATLAB开发环境 2.掌握矩阵、变量、表达式的各种基本运算 二、实验内容 1、学习使用help命令,例如在命令窗口输入help eye,然后根据帮助说明, 学习使用指令eye(其它不会用的指令,依照此方法类推) 2、学习使用clc、clear,观察command window、command history和workspace 等窗口的变化结果。 3、初步程序的编写练习,新建M-file,保存(自己设定文件名,例如exerc1、 exerc2、exerc3……),学习使用MATLAB的基本运算符。 三、练习 1)help rand,然后随机生成一个2×6的数组,观察command window、 command history和workspace等窗口的变化结果。 2)学习使用clc、clear,了解其功能和作用。 3)用逻辑表达式求下列分段函数的值 4)求[100,999]之间能被21整除的数的个数。(提示:rem,sum的用法) 四、实验结果 1)

2)clc:清除命令窗口所有内容,数值不变;clear:初始化变量的值。3) 4)

实验二 MATLAB数值运算 一、实验目的 1、掌握矩阵的基本运算 2、掌握矩阵的数组运算 二、实验内容 1)输入C=1:2:20,则C(i)表示什么?其中i=1,2,3, (10) 2)输入A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2; 3 3 3],在命令窗 口中执行下列表达式,掌握其含义: A(2, 3) A(:,2) A(3,:) A(:,1:2:3) A(:,3).*B(:,2) A(:,3)*B(2,:) A*B A.*B A^2 A.^2 B/A B./A 3)二维数组的创建和寻访,创建一个二维数组(4×8)A,查询数组A第2 行、第3列的元素,查询数组A第2行的所有元素,查询数组A第6列的所有 元素。 4)两种运算指令形式和实质内涵的比较。设有3个二维数组A 2×4,B 2×4 ,C 2×2 , 写出所有由2个数组参与的合法的数组运算和矩阵指令。 5)学习使用表4列的常用函数(通过help方法) 6)学习使用表5数组操作函数。 7)生成一个3行3列的随机矩阵,并逆时针旋转90°,左右翻转,上下翻转。 8)已知a=[1 2 3],b=[4 5 6],求a.\b和a./ b 9)用reshape指令生成下列矩阵,并取出方框内的数组元素。 三、实验结果 1)C(i)表示C中的第i个的数值;

河南城建学院MATLAB上机实验答案

一熟悉Matlab工作环境 1、熟悉Matlab的5个基本窗口 思考题: (1)变量如何声明,变量名须遵守什么规则、是否区分大小写。 答:变量一般不需事先对变量的数据类型进行声明,系统会依据变量被赋值的类型自动进行类型识别,也就是说变量可以直接赋值而不用提前声明。变量名要遵守以下几条规则:?变量名必须以字母开头,只能由字母、数字或下划线组成。 ?变量名区分大小写。 ?变量名不能超过63个字符。 ?关键字不能作为变量名。 ?最好不要用特殊常量作为变量名。 (2)试说明分号、逗号、冒号的用法。 分号:分隔不想显示计算结果的各语句;矩阵行与行的分隔符。 逗号:分隔欲显示计算结果的各语句;变量分隔符;矩阵一行中各元素间的分隔符。 冒号:用于生成一维数值数组;表示一维数组的全部元素或多维数组某一维的全部元素。 (3)linspace()称为“线性等分”函数,说明它的用法。 LINSPACE Linearly spaced vector. 线性等分函数 LINSPACE(X1, X2) generates a row vector of 100 linearly equally spaced points between X1 and X2. 以X1为首元素,X2为末元素平均生成100个元素的行向量。 LINSPACE(X1, X2, N) generates N points between X1 and X2. For N < 2, LINSPACE returns X2. 以X1为首元素,X2为末元素平均生成n个元素的行向量。如果n<2,返回X2。 Class support for inputs X1,X2: float: double, single 数据类型:单精度、双精度浮点型。 (4)说明函数ones()、zeros()、eye()的用法。 ones()生成全1矩阵。 zeros()生成全0矩阵。 eye()生成单位矩阵。 2、Matlab的数值显示格式

昆明理工大学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/2515653868.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实验二

实验二DFS和DFT 实验任务 1、阅读并输入实验原理中介绍的例题程序,观察输出的图形曲线,理解每一条语句的含义。 2、已知一个信号序列的主值为x(n)=[0,1,2,3,2,1,0],显示两个周期的信号序列波形,要求: (1)用DFS求信号的幅度频谱和相位频谱,用图形表示; (2)求IDFS的图形,并与原信号进行比较。 N = 7; xn = [0,1,2,3,2,1,0]; xn = [xn xn]; n = 0:2*N-1; k = 0:2*N-1; Xk = xn*exp(-j*2*pi/N).^(n'*k); x = (Xk*exp(j*2*pi/N).^(n'*k))/(2*2*N); subplot(2,2,1),stem(n,xn); title('x(n)');axis([-2,2*N,1.1*min(xn),1.1*max(xn)]); subplot(2,2,2),stem(n,abs(x)); title('IDFS|X(k)|');axis([-2,2*N,1.1*min(xn),1.1*max(xn)]); subplot(2,2,3),stem(k,abs(Xk)); title('|X(k)|');axis([-2,2*N,1.1*min(abs(Xk)),1.1*max(abs(Xk))]); subplot(2,2,4),stem(k,angle(Xk)); title('arg|X(k)|');axis([-2,2*N,1.1*min(angle(Xk)),1.1*max(angle(Xk)) ]);

3、已知有限长序列x(n)=[7,6,5,4,3,2],求x(n)的DFT 和IDFT ,要求: (1) 画出DFT 对应的()X k 和()arg X k ????的图形。 (2)画出原信号与傅里叶逆变换IDFT[X(k)]图形进行比较 xn = [7 6 5 4 3 2]; N = length(xn); n = 0:N-1; k = 0:N-1; Xk = xn*exp(-j*2*pi/N).^(n'*k); x = (Xk*exp(j*2*pi/N).^(n'*k))/N; figure,subplot(2,2,1),stem(n,xn); title('x(n)'); subplot(2,2,2),stem(n,abs(x)); title('IDFT|X(k)|'); subplot(2,2,3),stem(k,abs(Xk)); title('|X(k)|'); subplot(2,2,4),stem(k,angle(Xk)); title('arg|X(k)|'); axis([0,N,1.1*min(angle(Xk)),1.1*max(angle(Xk))]) 4、一周期序列的主值x(n)=[7,6,5,4,3,2],求x(n)周期周期重复次数为3次时的DFS 。要求: (1)画出原主值和信号周期序列信号; (2)画出序列傅里叶变换对应的()X k %和()arg X k ????%的图形。 xn = [7 6 5 4 3 2];

matlab实验内容答案

实验报告说明: matlab 课程实验需撰写8个实验报告,每个实验报告内容写每次实验内容中标号呈黑体大号字显示的题目。 第一次实验内容: 实验一 MATLAB 运算基础 一、实验目的 1.熟悉启动和退出MA TLAB 的方法。 2.熟悉MA TLAB 命令窗口的组成。 3.掌握建立矩阵的方法。 4.掌握MA TLAB 各种表达式的书写规则以及常用函数的使用。 二、实验内容 1.先求下列表达式的值,然后显示MA TLAB 工作空间的使用情况并保存全部变量。 (1)2 2sin 8511z e ?= + (2 )12ln(2 z x =+ ,其中2120.45 5i +? ? =? ?-?? (3)0.30.33sin(0.3), 3.0, 2.9, 2.8,,2.8,2.9,3.02 a a e e z a a --= +=--- 提示:利用冒号表达式生成a 向量,求各点的函数值时用点乘运算。 (4)2 2 2 01 41 1221 23 t t z t t t t t ?≤

12344347873657A -????=??????,131203327B -???? =????-?? 求下列表达式的值: (1)A+6=B 和A-B+I(其中I 为单位矩阵)。 (2)A*B 和A.*B 。 (3)A^3和A^.3 。 (4)A/B 和B\A 。 (5)[A ,B]和[A([1,3],;);B^2] 。 3.设有矩阵A 和B 12345678910111213141516171819202122232425A ????????=????????, 30 161769 23497041311B ?? ?? -?? ??=-?? ????? ? (1) 求它们的乘积C 。 (2) 将矩阵C 的右下角3×2子矩阵赋给D (3) 查看MA TLAB 工作空间使用情况。 4.完成下列操作: (1)求[100,999]之间能被21整除的数的个数。 提示:先利用冒号表达式,再利用find 和length 函数。 (2)建立一个字符串向量,删除其中的大写字母。 提示:利用find 函数和空矩阵。 第二次实验内容: 实验三 选择结构程序设计 一、实验目的 1. 掌握建立和执行M 文件的方法。 2. 掌握利用if 语句实现选择结构的方法。 3. 掌握利用switch 语句实现多分支选择结构的方法。 4. 掌握try 语句的使用。 二 、实验内容

MATLAB实验指导书(学生定稿)

实验一 MATLAB语言平台及基本运算 一、实验目的 1、熟悉MATLAB基本的操作界面。 2、掌握MATLAB中变量、数组、向量等对象的生成方法。 3、掌握矩阵的生成和基本运算方法。 4、掌握MATLAB中的常用绘图命令使用方法 二、实验设备 计算机,MATLAB语言环境 三、实验指导原理 1、常见数学函数 如:输入 x=[-4.85 -2.3 -0.2 1.3 4.56 6.75],则 ceil(x)= -4 -2 0 2 5 7 fix(x) = -4 -2 0 1 4 6 floor(x) = -5 -3 -1 1 4 6 round(x) = -5 -2 0 1 5 7 系统的在线帮助 (1) help 命令: 1).当不知系统有何帮助内容时,可直接输入 help以寻求帮助: >> help(回车) 2).当想了解某一主题的内容时,如输入: >> help syntax (了解 Matlab 的语法规定) 3).当想了解某一具体的函数或命令的帮助信息时,如输入: >> help sqrt (了解函数 sqrt 的相关信息)

(2) lookfor 命令 现需要完成某一具体操作,不知有何命令或函数可以完成,如输入: >> lookfor line (查找与直线、线性问题有关的函数) 3、常量与变量 系统的变量命名规则:变量名区分字母大小写;变量名必须以字母打头,其后 可以是任意字母,数字,或下划线的组合。此外,系统内部预先定义了几个有特殊意义和用途的变量,见下表: (1)数值型向量(矩阵)的输入 1).任何矩阵(向量),可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔;行与行之间用分号(;)分隔。所有元素处于一方括号([ ]内;例1: >> Time = [11 12 1 2 3 4 5 6 7 8 9 10] >> X_Data = [2.32 3.43;4.37 5.98] 2).系统中提供了多个命令用于输入特殊的矩阵: 上面函数的具体用法,可以用帮助命令 help 得到。如:help zeros ZEROS Zeros array. ZEROS(N) is an N-by-N matrix of zeros. ZEROS(M,N) or ZEROS([M,N]) is an M-by-N matrix of zeros.等等 4、数组(矩阵)的点运算 运算符:+(加)、-(减)、./(右除)、.\(左除)、.^(乘方), 例4: >> g = [1 2 3 4];h = [4 3 2 1]; >> s1 = g + h, s2 = g.*h, s3 = g.^h, s4 = g.^2, s5 = 2.^h 5、矩阵的运算

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