MATLAB应用实践解读.docx
《MATLAB应用实践解读.docx》由会员分享,可在线阅读,更多相关《MATLAB应用实践解读.docx(42页珍藏版)》请在冰豆网上搜索。
MATLAB应用实践解读
浦江学院
实习报告
(2013—2014学年第一学期)
课程名称:
MATLAB应用实践
班级:
学号:
姓名:
指导教师:
2013年12月
实验1
练习1、
练习2、
1、源程序:
clearall
n=input('n=');
s=0;
fori=1:
2:
2*n-1
s=s+i;
end
s
结果:
2、源程序:
functiony=f(x)
x=input('input:
n=');
n=length(x);
ifx>0&x<1
y=x;
elseifx>=1&x<=2
y=2-x;
else
y=0;
end
end
结果:
练习3、
LX0701源程序:
A=[1,1,1;1,2,3;1,3,6]
B=[8,1,6;3,5,7;4,9,2]
C=A+B
D=A-B
结果:
LX0702源程序:
X=[2345
1221];
Y=
[011
110
001
100];
Z=X*Y
结果:
源程序:
X=[-102];
a=2*X;
结果:
源程序:
X=[-102];
Y=[-2,-1,1];
Z=dot(X,Y)
结果:
LX0703源程序:
a=[123];
b=[456];
c=cross(a,b)
结果:
LX0704源程序:
a=[1,2,3];
b=[456];
c=[-3,6,-3];
x=dot(a,cross(b,c))
结果:
LX0751源程序:
A=[123;221;343];
inv(A)
结果:
LX0752源程序:
B=[1,2,3,1,0,0;2,2,1,0,1,0;3,4,3,0,0,1];
C=rref(B)%化行最简形
X=C(:
4:
6)
结果:
LX0706源程序:
A=[123;221;343];
D=det(A)
结果:
例3-7
A=sym(‘[1/x,1/(x+1);1/(x+2),1/(x+3)]’);
B=sym(‘[x,1;x+2,0]’)
C=B-A
D=A\B
结果:
LX0710源程序:
symsxy
p=expand((x+1)^3)
q=expand(sin(x+y))
结果:
LX0714源程序:
A=[1-223;-24-13;-1203;0623;2-634];
B=rank(A)
结果:
LX0715源程序:
a1=[1-223]';
a2=[-24-13]';
a3=[-1203]';
a4=[0623]';
a5=[2-634]';
A=[a1a2a3a4a5]
formatrat%以有理格式输出
B=rref(A)%求A的行最简形
LX0716源程序:
A=[56000
15600
01560
00156
00015];
B=[10001]';
R_A=rank(A)
X=A\B
例5-2源程序:
A=[11-3-1;3-1-34;15-9-8];
B=[140]';
X=A\B
实验二
(1)单位脉冲源程序:
n1=-4;
n2=4;
n0=0;
n=n1:
n2;
x=[n==n0];
stem(n,x,'filled');
title('单位脉冲序列');
xlabel('时间(n)');
ylabel('序列值x(n)');
(2)单位阶跃源程序:
n1=-4;
n2=4;
n0=0;
n=n1:
n2;
x=[n>n0];
stem(n,x,'filled');
title('单位阶跃序列');
xlabel('时间(n)');
ylabel('序列值x(n)');
(3)矩形源程序:
n=1:
40;
x=sign(sign(8-n)+1);
stem(n,x,'filled');
title('矩形序列');
xlabel('时间(n)');
ylabel('序列值x(n)');
(3)正弦源程序:
fs=40;n=10;
n=0:
n-1;
x=sin(pi*n/5+pi/3);
stem(n,x,'filled');
title('正弦波序列');
xlabel('时间(n)');
ylabel('序列值x(n)');
text(11,0.8,'x=sin(10*pi*n)');
(4)任意源程序:
①
n=-5:
7;
x=[zeros(1,5),1,2,3,4,5,zeros(1,3)];
stem(n,x,'filled');
title('任意序列');
xlabel('时间(n)');
ylabel('序列值x(n)');
②
n=-5:
5;
h=[zeros(1,5),1,2,3,4,zeros(1,2)];
stem(n,h,'filled');
title('任意序列');
xlabel('时间(n)');
ylabel('序列值h(n)');
卷积源程序:
n=-5:
7;
x=[zeros(1,5),1,2,3,4,5,zeros(1,3)];
h=[zeros(1,5),1,2,3,4,zeros(1,4)];
y=conv(h,x);
subplot(4,1,1);
stem(h,'filled');
title('h');
xlabel('时间(n)');
ylabel('序列值h(n)');
subplot(4,1,2);
stem(x,'filled');
title('x');
xlabel('时间(n)');
ylabel('序列值x(n)');
subplot(4,1,3);
stem(y,'filled');
title('y');
xlabel('时间(n)');
ylabel('序列值y(n)');
移位反褶累加源程序:
n=-5:
7;
x=[zeros(1,5),1,2,3,4,5,zeros(1,3)];
stem(n,x,'fill');
y=circshift(x,[0,2]);%右移两位
h=fliplr(x);%反褶
a=cumsum(x);%累加
subplot(1,3,1);stem(n,y,'b');xlabel('n');ylabel('y');title('移位');
axis([-37-13]);gridon;
subplot(1,3,2);stem(n,h,'g');xlabel('n');ylabel('h');title('反褶');
axis([-57-13]);gridon;
subplot(1,3,3);stem(n,a,'c');xlabel('n');ylabel('a');title('累加');
和积源程序:
n=-5:
7;
x=[zeros(1,5),1,2,3,4,5,zeros(1,3)];
h=[zeros(1,5),1,2,3,4,zeros(1,4)];
y=x+h;%相加
a=x.*h;%相乘
b=dot(x,h)%标乘
subplot(1,2,1);stem(n,y,'b');xlabel('n');ylabel('y');title('相加');
axis([-57-410]);gridon;
subplot(1,2,2);stem(n,a,'g');xlabel('n');ylabel('a');title('相乘');
axis([-57-418]);gridon;
方波锯齿波源程序:
clearall;closeall;clc;
nx=0:
5;
x1=[000333];
x2=[012345];
ny=0:
17;y1=zeros(1,18);y2=zeros(1,18);
fori=0:
17
y1(i+1)=x1(mod(i,6)+1);
y2(i+1)=x2(mod(i,6)+1);
end
subplot(2,2,1),stem(nx,x1,'.');grid;axis([-118-16]);
xlabel('n');ylabel('x1(n)');title('原序列');
subplot(2,2,2),stem(ny,y1,'.');grid;axis([-118-16]);
xlabel('n');ylabel('y1(n)');title('方波信号');
subplot(2,2,3),stem(nx,x2,'.');grid;axis([-118-16]);
xlabel('n');ylabel('x2(n)');title('原序列');
subplot(2,2,4),stem(ny,y2,'.');grid;axis([-118-16]);
xlabel('n');ylabel('y2(n)');title('锯齿波信号');
gridon;
实验三
语音频谱分析源程序:
clearall;
[y,fs,bit]=wavread('huli.wav');
sound(y,fs,bit);
n=length(y)
Y=fft(y,n);
subplot(2,1,1);
plot(y);
title('原始信号波形');
subplot(2,1,2);
plot(abs(Y));
title('原始信号频谱')
FIR带通源程序:
clearall;
[y,fs,bits]=wavread('huli.wav');
sound(y,fs,bits);%话音回放
n=length(y)%求出语音信号的长度
Y=fft(y,n);
fs=20000;
fp1=1200;fp2=3000;
fs1=1000;fs2=3200;
As=100;
Ws1=(fp1+fs1)/fs;Ws2=(fp2+fs2)/fs;
w=(fp1-fs1)/fs;
M=ceil((As-7.95)/(14.36*w));
juxing=boxcar(M+1);
boxb=fir1(M,[Ws1,Ws2],juxing);
freqz(boxb,1,fs,fs);
[h,w]=freqz(boxb,1);
z22=fftfilt(boxb,y);
sound(z22);
m22=fft(z22);%求滤波后的信号
subplot(2,2,1);
plot(abs(Y),'g');
title('滤波前信号的频谱');
grid;
subplot(2,2,2);
plot(abs(m22),'r');
title('滤波后信号的频谱');
grid;
subplot(2,2,3);
plot(y);
title('滤波前信号的波形');
grid;
subplot(2,2,4);
plot(z22);
title('滤波后的信号波形');
grid;
wavwrite(y,'FIR带通.wav');
FIR低通频谱分析源程序:
clearall;
[y,fs,bits]=wavread('huli.wav');%x:
语音数据;fs:
采样频率;bits:
采样点数sound(y,fs,bits);%话音回放
n=length(y)%求出语音信号的长度
Y=fft(y,n);%傅里叶变换
Ft=8000;
Fp=1000;
Fs=1200;
wp=2*Fp/Ft;
ws=2*Fs/Ft;
rp=1;
rs=100;
p=1-10.^(-rp/20);%通带阻带波纹
s=10.^(-rs/20);
fpts=[wpws];
mag=[10];
dev=[ps];
[n21,wn21,beta,ftype]=kaiserord(fpts,mag,dev);
b21=fir1(n21,wn21,Kaiser(n21+1,beta));%由fir1设计滤波器
[h,w]=freqz(b21,1);%得到频率响应
z21=fftfilt(b21,y);
sound(z21);
m21=fft(z21);%求滤波后的信号
subplot(2,2,1);
plot(abs(Y),'g');
title('滤波前信号的频谱');
grid;
subplot(2,2,2);
plot(abs(m21),'r');
title('滤波后信号的频谱');
grid;
subplot(2,2,3);
plot(y);
title('滤波前信号的波形');
grid;
subplot(2,2,4);
plot(z21);
title('滤波后的信号波形');
grid;
wavwrite(y,'FIR低通.wav');
FIR高通频谱分析源程序:
clearall;
[y,fs,bits]=wavread('huli.wav');%x:
语音数据;fs:
采样频率;bits:
采样点数
sound(y,fs,bits);%话音回放
n=length(y)%求出语音信号的长度
Y=fft(y,n);%傅里叶变换
Ft=8001;
Fp=4000;
Fs=3500;
wp=2*Fp/Ft;
ws=2*Fs/Ft;
rp=1;
rs=100;
p=1-10.^(-rp/20);
s=10.^(-rs/20);
fpts=[wswp];
mag=[01];
dev=[ps];
[n22,wn22,beta,ftype]=kaiserord(fpts,mag,dev);
b22=fir1(n22,wn22,'high',Kaiser(n22+1,beta));%由fir1设计滤波器
[h,w]=freqz(b22,1);
z22=fftfilt(b22,y);
sound(z22);
m22=fft(z22);%求滤波后的信号
subplot(2,2,1);
plot(abs(Y),'g');
title('滤波前信号的频谱');
grid;
subplot(2,2,2);
plot(abs(m22),'r');
title('滤波后信号的频谱');
grid;
subplot(2,2,3);
plot(y);
title('滤波前信号的波形');
grid;
subplot(2,2,4);
plot(z22);
title('滤波后的信号波形');
grid;
wavwrite(y,'FIR高通.wav');
IIR带通源程序:
clearall;
[y,fs,bits]=wavread('huli.wav');%x:
语音数据;fs:
采样频率;bits:
采样点数
sound(y,fs,bits);%话音回放
n=length(y)%求出语音信号的长度
Y=fft(y,n);%傅里叶变换
fp1=1200;fp2=3000;
fs1=1000;fs2=3200;
rp=1;rs=100;
fs=10000;
T=1/fs;
wc=[2*fs1/fs,2*fs2/fs];
wp=[2*fp1/fs,2*fp2/fs];
[N,W]=buttord(wc,wp,rp,rs,'s');
[b,a]=butter(N,W);
[h,w]=freqz(b,a);
z12=filter(b,a,y);
sound(z12);
m12=fft(z12);%求滤波后的信号
subplot(2,2,1);
plot(abs(Y),'g');
title('滤波前信号的频谱');
grid;
subplot(2,2,2);
plot(abs(m12),'r');
title('滤波后信号的频谱');
grid;
subplot(2,2,3);
plot(y);
title('滤波前信号的波形');
grid;
subplot(2,2,4);
plot(z12);
title('滤波后的信号波形');
grid;
wavwrite(y,'IIR带通.wav');
IIR低通源程序:
clearall;
[y,fs,bits]=wavread('huli.wav');%x:
语音数据;fs:
采样频率;bits:
采样点数
sound(y,fs,bits);%话音回放
n=length(y)%求出语音信号的长度
Y=fft(y,n);%傅里叶变换
Ft=8000;
Fp=1000;
Fs=1200;
wp=2*pi*Fp/Ft;
ws=2*pi*Fs/Ft;
fp=2*Ft*tan(wp/2);
fs=2*Fs*tan(wp/2);
[n11,wn11]=buttord(wp,ws,1,50,'s');%求低通滤波器的阶数和截止频率
[b11,a11]=butter(n11,wn11,'s');%求S域的频率响应的参数
[num11,den11]=bilinear(b11,a11,0.5);
[h,w]=freqz(num11,den11);%根据参数求出频率响应
z11=filter(num11,den11,y);
sound(z11);
m11=fft(z11);%求滤波后的信号
subplot(2,2,1);
plot(abs(Y),'g');
title('滤波前信号的频谱');
grid;
subplot(2,2,2);
plot(abs(m11),'r');
title('滤波后信号的频谱');
grid;
subplot(2,2,3);
plot(y);
title('滤波前信号的波形');
grid;
subplot(2,2,4);plot(z11);
title('滤波后的信号波形');
grid;
wavwrite(y,'IIR低通.wav');
IIR高通源程序:
clearall;
[y,fs,bits]=wavread('huli.wav');%x:
语音数据;fs:
采样频率;bits:
采样点数
sound(y,fs,bits);%话音回放
n=length(y)%求出语音信号的长度
Y=fft(y,n);%傅里叶变换
Ft=8000;
Fp=5000;
Fs=4800;
wp1=tan(pi*Fp/Ft);%高通到低通滤波器参数转换
ws1=tan(pi*Fs/Ft);
wp=1;
ws=wp1*wp/ws1;
[n12,wn12]=cheb1ord(wp,ws,1,100,'s');%求模拟的低通滤波器阶数和截止频率
[b12,a12]=cheby1(n12,1,wn12,'s');%求S域的频率响应的参数
[num,den]=lp2hp(b12,a12,wn12);%将S域低通参数转为高通的
[num12,den12]=bilinear(num,den,0.5);%利用双线性变换实现频率响应S域到Z域转换
[h,w]=freqz(num12,den12);
z12=filter(num12,den12,y);
sound(z12);
m12=fft(z12);%求滤波后的信号
subplot(2,2,1);
plot(abs(Y),'g');
title('滤波前信号的频谱');
grid;
subplot(2,2,2);
plot(abs(m12),'r');
title('滤波后信号的频谱');
grid;
subplot(2,2,3);
plot(y);
title('滤波前信号的波形');
grid;
subplot(2,2,4);
plot(z12);
title('滤波后的信号波形');
grid;
wavwrite(y,'IIR高通.wav');
实验四
任务一、
波形:
任务二、
任务三、
2、
波形:
任务三
3、
波形、