matlab综合实验一二三报告.docx
《matlab综合实验一二三报告.docx》由会员分享,可在线阅读,更多相关《matlab综合实验一二三报告.docx(20页珍藏版)》请在冰豆网上搜索。
matlab综合实验一二三报告
《信号与系统分析实习》
实验报告
第三组
组长:
胡佳南
组员
学号
胡佳南
094821529
毛盼盼
094821776
董榕
094821499
何良
094821505
杨样
094821744
上海第二工业大学通信与信息系
2012.5
综合实验一matlab基础编程
一、实验目的
1.熟悉Matlab编程环境和编程规范。
2.掌握Matlab语言语法和常见函数的使用。
3.掌握利用MATLAB帮助文件。
4.掌握信号与系统分析matlab基础编程。
二、实验环境
1.WINDOWS2000,WINDOWSXP或WINDOWS98
2.MATLAB6.5以上
三、实验内容和步骤
1.数据的基本处理
1)现有三个城市一个月的每日气温记录表如下,将该表格存为Excel文件:
temps.xls。
上海
北京
厦门
12
8
18
15
9
22
14
5
19
12
8
23
11
6
22
15
9
19
8
9
15
19
10
20
12
7
18
14
7
18
11
10
19
9
8
17
8
7
23
15
8
19
8
8
18
10
9
18
12
7
20
9
7
17
12
8
22
12
8
19
9
8
21
12
9
20
12
12
17
10
10
18
13
6
20
9
7
22
10
5
21
14
7
18
12
10
23
10
11
24
15
12
22
13
11
20
12
9
19
2)编写matlab程序,从Excel文件temps.xls中读取数据,并在同一幅图中绘制每个城市的温度曲线(用不同颜色的连续曲线表示,并进行标注)。
注:
①Excel文件的读入matlab语句:
x=xlsread('文件名',''工作表名','数据范围');
例:
x=xlsread('aa.xls','sheet1','A2:
B2')
②标注:
legend(在matlab命令窗口输入:
helplegend,学习其用法)
程序:
prog11.m
x=xlsread('temps.xls','sheet1','A2:
C34');
plot(x);
legend('上海','北京','厦门',-1);
xlabel('日期/日');title('城市月温度曲线');ylabel('温度/摄氏度');
图形:
3)编制函数function[x_max,x_min,x_avg]=calc_mm(x),该函数能计算一组数据的最高值、最低值和平均值,并将该函数存为calc_mm.m。
注:
求最大、最小、平均的matlab语句分别为:
max(x),min(x),mean(x)(学习这些语句用法)
%函数:
calc_mm.m
function[x_max,x_min,x_avg]=calc_mm(x)
function[x_max,x_min,x_avg]=calc_mm(x)
x_max=max(x);
x_min=min(x);
x_avg=mean(x);
disp([x_max,x_min,x_avg])
4)调用函数calc_mm.m,找出每个城市最高气温、最低气温和平均气温,显示在命令窗口中。
注:
在命令窗口中显示文字的语句为:
disp('文字');
程序:
prog12.m
clear
clc
x=xlsread('temps.xls','sheet1','A2:
A34');
disp('上海的最高、最低和平均气温:
');
disp('y1=')
calc_mm(x);
x=xlsread('temps.xls','sheet1','B2:
B34');
disp('北京的最高、最低和平均气温:
');
disp('y2=')
calc_mm(x);
x=xlsread('temps.xls','sheet1','C2:
C34');
disp('厦门的最高、最低和平均气温:
');
disp('y3=')
calc_mm(x);
显示结果:
(示例)
5)对上海的温度数据进行L点滑动平均,公式为:
y(n)=
(本例设:
L=9)
在同一幅图中分别以不同颜色显示原信号x(n)与滑动平均后的信号y(n)。
注:
相似程序见书p120)例3-41(倒数第2行开始)
实验要求:
%程序:
prog13.m
x=xlsread('temps.xls','sheet1','A2:
A34');
b=[1/3,1/3,1/3];a=1;
y=filter(b,a,x);
plot([x,y]);
legend('平滑前','平滑后');
问:
信号经滑动平均后有何变化?
2.利用Matlab帮助系统学习matlab编程
1)在命令窗口用"helpXXX"格式分别学习下列函数的使用方法:
zeros,ones,linspace,wavread,wavwrite,sound,randn。
描述上述函数的主要功能:
zeros:
产生元素为0的矩阵
ones:
产生元素为1的矩阵
linspace:
产生范围内一定点数的行向量
wavread:
从WAV文件中读取音频
wavwrite:
向WAV中写入音频文件
sound:
播放WAV文件
randn:
产生随机数
2)在同一个文件中编写程序,分别完成以下功能:
1产生1行5个零。
2产生1行5个1。
3产生范围从0到2π,点数为200的行向量x,并画出x的波形。
4读取音乐文件chirp.wav,存入变量x,显示x的波形,并播放。
5给chirp.wav文件加上随机噪声(点数是该文件的长度,幅度为0.1)后显示并播放。
%程序:
prog14.m
clear
clc
%a=zeros(1,5)
%b=ones(1,5)
%t=linspace(0,2*pi,200);
%plot(t);
w=wavread('chirp.wav');
sound(w);
d=0.1*randn(1,length(w));
z=d+w';
figure(3);
plot(z);title('¼ÓÔëÐźŲ¨ÐÎ');
wavwrite(z,'123.wav');
sound(z);
四、实验小结(100~200字)
1.实验过程中遇到的问题和解决的途径
遇到了读声音函数不能正常读取音频文件的问题。
通过helpwavread在matlab中找到了函数的用法,结果是声音文件没有加引号。
2.本次实验心得体会
本次实验掌握了matlab在引用外部数据文件的用法,今后可以很方便的对数据文件的matlab处理。
另外本次试验还完全理解matlab中函数的定义和调用,对于以后进一步使用matlab奠定了基础。
综合实验二信号的时域分析和频域分析
一、实验目的
1.掌握连续和离散信号的时域分析方法
2.掌握连续和离散信号的Matlab仿真方法
3.掌握信号和系统的频域分析方法
二、实验环境
1.WINDOWS2000,WINDOWSXP或WINDOWS98
2.MATLAB6.5以上
三、实验内容和步骤
1.本实验可能用到的函数有exp(),sqrt(),sin(),cos(),real(),image(),abs(),angle(),fft(),ifft(),
用"help"学习这些函数的用法,并简单描述这些函数的功能:
exp:
求指数函数
sqrt:
开平方
sin:
正弦
cos:
余弦
real:
实部
image:
虚部
abs:
幅频
angle:
相频
fft:
傅里叶变换
ifft:
傅里叶逆变换
2.选择适当的时间范围,编程产生下列信号,并显示波形:
(1)
(t=0~1,步长为0.01)
%程序prog21.m
A=5;w0=10*pi;phi=pi/3;
t=0:
0.01:
1;
xt=A*sin(w0*t+phi);
plot(t,abs(xt));
(2)
(t=0~8,步长为0.001),选择适当参数a,ω(举例说明),使该信号成为:
①实指数信号:
a=1;ω=0
②纯虚指数信号:
a=0;ω=1
③直流信号:
a=0;ω=0
④复指数信号:
a=1;ω=1
%程序prog22.m(编程可参考:
《信号与系统分析实训指导书》p1)四1
(1))
clear
clc
A=4;
sig=input('衰减因子sig=');
w=input('角频率w=');
t=0:
0.001:
8;
ft=A*exp((sig+j*w)*t);
subplot(221);plot(t,real(ft));grid on;title('ft的实部');
subplot(212);plot(t,imag(ft));grid on;title('ft的虚部');
分别显示4种情况的实部和虚部波形:
*(3)对x2(t)信号进行奇偶分解(a=-2,ω=0),即x2(t)=x2e(t)+x2o(t),
画出:
奇分量x2o(t)和偶分量x2e(t)。
注:
x2e(t)=0.5*[x2(t)+x2(-t)];x2o(t)=0.5*[x2(t)-x2(-t)]。
%程序prog23.m(编程可参考:
《信号与系统分析实训指导书》p4)三
(1)中加/乘法和翻转函数。
x2=4*exp(-2*t);
x22=4*exp(-2*(-t));
stem(x2);
x2e=0.5*(x2+x22);
figure
(2);stem(x2e);
x2o=0.5*(x2-x22);
figure(3);stem(x2o);
波形:
(4)
(k=0~100),画出该离散波形。
%程序prog24.m
k=0:
1:
100;
x3=5*(0.8.^k).*cos(0.9*pi*k);
stem(x3);
波形:
3.采用fft函数对信号x3(k)进行频谱分析(N=128),在同一幅图中画出其幅频谱、相频谱和功率谱(功率谱=幅频谱平方/N)。
%程序prog25.m
x=0:
1:
20;N=128;
y1=abs(fft(x,N));
y2=angle(fft(x,N));
y3=(abs(fft(x,N))).^2;
subplot(221);stem(y1);
title('幅频谱');
subplot(222);stem(y2);
title('相频谱');
subplot(223);stem(y3);
title('功率谱');
波形:
*4.已知某LTI系统的频响特性如图所示,采用ifft函数求:
该系统的单位冲激响应h(t),并画出h(t)的波形。
1
H(jω)=|H(jω)|ejΦ(ω)=|H(j)|e-jω(-pi/3<ω%程序prog26.m
w=-pi/3:
0.01*pi:
pi/3;
N1=ceil(200/3);
H=[zeros(1,N1)exp(-j*w)zeros(1,N1)];
h=ifft(H);
plot(fftshift(real(h)));
波形:
四、实验小结
1.
信号的频率是多少?
如果将其频率改成原来的100倍,原程序是否还能用,如果不能,采样频率该如何修正?
Fs=w/2*pi不能用了Fs>2fc
2.在对信号进行fft频谱分析后,其横坐标代表什么?
频率点
3.对本次实验的心得体会。
本次实验最大的收获就是发挥了组员之间的相互合作,在不到两个小时的时间里,做完了本次试验的全部内容。
综合实验三数字滤波器的应用设计
一、实验目的
1.掌握求解离散时间系统响应(滤波)的matlab实现方法。
2.掌握数字陷波器、数字谐振器的设计方法。
二、实验环境
1.WINDOWS2000,WINDOWSXP或WINDOWS98
2.MATLAB6.5以上
三、实验原理
1.一个N阶常系数线性差分方程表达式(见书p993-40式):
2.系统函数H(z)与X(z),Y(z)的关系为:
H(z)=Y(z)/X(z)。
3.H(z)零点定义为:
H(z)=0时的z;H(z)极点定义为:
H(z)分母为零。
4.本实验涉及的Matlab函数
1)求解差分方程(数字滤波):
y=filter(b,a,x)
其中:
x---输入信号;y---差分方程的解(滤波输出);b,a----输入/输出信号前的系数(也是H(z)分子/分母系数)。
2)画零极点图:
zplane(b,a,n)
其中:
b,a----H(z)分子/分母系数;n—点数。
3)求H(z)的频响特性H(ejw):
[H,w]=freqz(b,a,N)
其中:
b,a----H(z)分子/分母系数;N—点数;w---数字频率。
四、实验内容
1.数字陷波器
陷波器是一种简单的二阶IIR滤波器,其幅度响应在某一频率上为零,可用来消除某个频率分量,如:
滤除信号中由电源引起的50Hz工频干扰。
其系统函数为:
<1>
其中:
ω0=2πf0/fs---陷波数字频率(rad);f0---陷波频率(Hz);fs---取样频率(Hz);
r----常数。
实验要求:
编程实现以下功能:
1)设陷波频率f0=50Hz,取样频率fs=600Hz,r=0.9,画H(z)的幅频和相频特性。
2)画H(z)的零极点图,体会陷波原理。
3)利用该陷波器对信号:
x(n)=2*sin(2*pi*50/fs*n)+sin(2*pi*100/fs*n)(n=0~599)进行滤波,画出x(n)及滤波输出y(n)。
f0=50;fs=600;r=0.9;n=0:
599;
w0=2*pi*f0/fs;
b=[1-2*cos(w0)1];a=[1-2*r*cos(w0)r^2];
[H,w]=freqz(b,a);
x=2*sin(2*pi*50/fs*n)+sin(2*pi*100/fs*n);
y=filter(b,a,x);
subplot(231);plot(w/pi,abs(H));
title('幅频特性');
subplot(232);plot(w/pi,angle(H));
title('相频特性');
subplot(233);zplane(b,a);
title('零极点图');
subplot(234);plot(y);
title('滤波输出');
subplot(235);plot(abs(fft(x)));
title('滤波前');
subplot(236);plot(abs(fft(y)));
title('滤波之后');
2.数字谐振器
谐振器如同LC并联谐振回路那样,在指定的谐振频率上信号达到最大,而在该频率之外急剧衰减。
其系统函数为:
<2>
其中:
ω0=2πf0/fs---谐振数字频率(rad);f0---谐振频率(Hz);fs---取样频率(Hz);
r----常数;
。
实验要求:
编程实现以下功能:
1)设ω0=π/3,r=0.99,画H(z)的幅频和相频特性。
2)画H(z)的零极点图,体会谐振原理。
3)利用该谐振器对信号:
x(n)=2*sin(pi/3*n)+sin(pi/6*n)(n=0~599)进行滤波,画出x(n)及滤波输出y(n)。
r=0.99;n=0:
599;
w0=pi/3;
b0=(1-r)*sqrt(1+r^2-2*r*cos(2*w0));
b=[b000];a=[1-2*r*cos(w0)r^2];
[H,w]=freqz(b,a);
x=2*sin(pi/3*n)+sin(pi/6*n);
y=filter(b,a,x);
subplot(231);plot(w/pi,abs(H));
title('幅频特性');
subplot(232);plot(w/pi,angle(H));
title('相频特性');
subplot(233);zplane(b,a);
title('零极点图');
subplot(234);plot(y);
title('滤波输出');
subplot(235);plot(abs(fft(x)));
title('滤波前');
subplot(236);plot(abs(fft(y)));
title('滤波之后');