《信号处理matlab仿真》大作业_matlab仿真大作业

2020-02-28 其他范文 下载本文

《信号处理matlab仿真》大作业由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“matlab仿真大作业”。

中国石油大学(华东)信息与控制工程学院

《信号处理matlab仿真》结课作业

专业班级:电子班 学

号:***** 姓

名:****** 任课老师:***** 2088年11月12日

《信号处理matlab仿真》结课作业

一、实现算法及设计思路

1、基本信号显示

正弦信号的显示,可以对它的幅度、角频率以及初相位进行设置输入。

A1=get(handles.edit1,'String');A=str2num(A1);

w1=get(handles.edit2,'String');w=str2num(w1);

p1=get(handles.edit3,'String');p=str2num(p1);t=-2*pi:0.01:2*pi;y=A*sin(w*t+p);plot(t,y,'r-.');grid

title('正弦信号');

方波信号:

t0=-6*pi;t1=6*pi;dt=1;t=t0:dt:t1;y1=square(t);plot(t,y1,'r-');grid

title('方波信号')锯齿信号:

t0=-6*pi;t1=6*pi;dt=0.05;t=t0:dt:t1;

f=sawtooth(pi/5*t,0);plot(t,f,'r-')grid

title('锯齿信号')单位阶跃信号:

t=-5:0.01:5 y1=u(t);plot(t,y1,'r');grid

title('单位阶跃信号')

《信号处理matlab仿真》结课作业

U(t):

function f=u(t)f=(t>0);%t>0时,f为1,否则为0 end 抽样信号:

t=-15:0.01:15;t1=t/pi;y4=sinc(t1);plot(t,y4,'r-');grid title('抽样信号');指数信号:

clc t=0:.001:10;ft=exp(t);plot(t,ft,'r-'),grid title('指数信号)')

2、序列运算

单位脉冲序列,可以对位移量进行设置:

t=str2num(get(handles.edit1,'String'));k=[t-3:t+7];fk=[(k-t)==0];stem(k,fk)title('单位脉冲序列')单位阶跃序列,可以对位移量进行设置:

t=str2num(get(handles.edit2,'String'));k=[t-3:t+7];fk=[(k-t)>=0];stem(k,fk)title('单位阶跃序列')指数序列,可以对底数进行设置:

t=str2num(get(handles.edit3,'String'));

《信号处理matlab仿真》结课作业

k=[0:10];fk=t.^k;stem(k,fk)title('指数序列')序列卷积,可以对卷积幅度进行设置(针对了特定的两个序列): t=str2num(get(handles.edit4,'String'));k1=-1:3;k2=-1:3;f1=[0 1 3 2 0 ];f2=[0 4 3 2 1 ];y=t*conv(f1,f2);k0=k1(1)+k2(2);k3=length(f1)+length(f2)-2;k=k0:k0+k3;stem(k,y)title('卷积序列')

3、卷积与傅里叶变换

卷积,针对两个特定的信号,对卷积幅度进行设置: clc

t=str2num(get(handles.edit1,'String'));t11=0;

t12=1;

t21=0;

t22=2;

t1=t11:0.001:t12;ft1=2*rectpuls(t1-0.5,1);t2=t21:0.001:t22;ft2=t2;

《信号处理matlab仿真》结课作业

t3=t11+t21:0.001:t12+t22;ft3=conv(ft1,ft2);ft3=t*ft3*0.001;plot(t3,ft3)title('f1(t)*f2(t)')方波傅里叶分析,对方波幅度进行设置: clc f=str2num(get(handles.edit2,'String'));t=0:0.01:2*pi;y=f*sin(t);plot(t,y),hold on y=f*(sin(t)+sin(3*t)/3);plot(t,y),hold on y=f*(sin(t)+sin(3*t)/3+sin(5*t)/5);plot(t,y),hold on y=f*(sin(t)+sin(3*t)/3+sin(5*t)/5+sin(7*t)/7);plot(t,y),hold on y=f*(sin(t)+sin(3*t)/3+sin(5*t)/5+sin(7*t)/7+sin(9*t)/9);plot(t,y),hold on y=f*(sin(t)+sin(3*t)/3+sin(5*t)/5+sin(7*t)/7+sin(9*t)/9+sin(11*t)/11);plot(t,y),grid title('方波傅立叶分析')

《信号处理matlab仿真》结课作业

离散傅里叶变化,针对指数信号,对底数进行设置: t=str2num(get(handles.edit3,'String'));n=-5:5;x=t.^n;k=-200:200;w=(pi/100)*k;X=x*(exp(-j*pi/100)).^(n'*k);p=abs(X);plot(w/pi,p),grid title('离散傅立叶变换');快速傅里叶变化,针对指数信号,对底数进行设置: N=str2num(get(handles.edit3,'String'));x0=sin(N*2*pi*[1:8]/8)*5;dt=2*pi/8;w=linspace(0,2*pi,1000)/dt;x0=x0*exp(-j*[1:length(x0)]'*w)*dt;plot(w,abs(x0))title('快速傅立叶变换')

4、滤波器设计

FIR低通滤波器,可以对阶数、截止频率进行设置:

A1=get(handles.edit1,'String');N=str2num(A1);w1=get(handles.edit2,'String');Wn=str2num(w1);b=fir1(N,Wn,'low');

《信号处理matlab仿真》结课作业

fs=2000;[h,f]=freqz(b,1,1024,fs)plot(f,20*log10(abs(h)));FIR高通滤波器,可以对阶数、截止频率进行设置: A1=get(handles.edit3,'String');N=str2num(A1);w1=get(handles.edit4,'String');Wn=str2num(w1);b=fir1(N,Wn,'high');fs=2000;[h,f]=freqz(b,1,1024,fs)plot(f,20*log10(abs(h)));FIR带通滤波器,可以对阶数、截止频率进行设置: A1=get(handles.edit5,'String');N=str2num(A1);w1=get(handles.edit6,'String');Wn=str2num(w1);b=fir1(N,Wn);fs=2000;[h,f]=freqz(b,1,1024,fs)plot(f,20*log10(abs(h)));巴特沃斯低通滤波器:

《信号处理matlab仿真》结课作业

[b,a]=butter(11,0.5);figure(1);freqz(b,a,512,1000)n=0:40;x1=[(n-3)>=0];x2=[(n-20)>=0];x=x1-x2;y=filter(b,a,x);figure(2)subplot(1,2,1)stem(n,x);axis([0,35,-0.3,1.3]);grid title('x(n)');subplot(1,2,2)stem(n,y)grid title('y=filter(b,a,x)');切比雪夫I型滤波器: wp1=1000;ws1=1500;wc=3000;

《信号处理matlab仿真》结课作业

wp=wp1/wc;ws=ws1/wc;[n,wn]=cheb1ord(wp,ws,1,15);[b,a]=cheby1(n,1,wn);freqz(b,a,512,6000);axis([0,3000,-40,5]);

5、简单图像处理:

打开图片:

[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},' 载入图像 ');%选择路径打开图像

if isequal(filename,0)|isequal(pathname,0)%若 filename 为 0 或 pathname为 0,即未选中文件

errordlg('未选中文件 ','警告');%建立一个名为警告的错误对话框,内容为“未选中文件 ”

return;else

file=[pathname,filename];%将文件名和目录名组合成一个完整的路径

x=imread(file);%读入图像

set(handles.axes1,'HandleVisibility','ON');%设置图形对象属性,可从命令窗口中和 GUIs 中访问

axes(handles.axes1);%定义图形区域 axes1

imshow(x);%显示图像

《信号处理matlab仿真》结课作业

set(handles.axes1,'HandleVisibility','OFF');%设置图形对象属性,不可从命令窗口中和 GUIs 中访问

axes(handles.axes2);%定义图形区域 axes2 imshow(x);%显示图像

handles.img=x;%把图像发给handles.img end 灰度处理:

global T %定义全局变量

axes(handles.axes2);%定义图形区域 axes2 T=getimage;%从坐标轴获取图像数据

x=rgb2gray(handles.img);%利用 rgb2gray函数对源图像进行灰度处理 imshow(x);%显示图像

xlabel('灰度图像 ');% x 轴名为“灰度图像 ”

handles.img=x;%把图像发给 handles.img 傅里叶变换:

axes(handles.axes2);i1=handles.img;%获取图像

i2=im2double(i1);%图像矩阵转换成双精度浮点类型

f1=fft2(i2);%对图像进行二维离散傅里叶变换

fc1=fftshift(f1);%将变换后的图象频谱中心从矩阵的原点移到矩阵的中心

i=log(1+abs(fc1));%对变换后的图像矩阵数据求绝对值后取自然对数 imshow(i);

《信号处理matlab仿真》结课作业

xlabel('傅里叶变换图像 ');handles.img=i;直方图均衡化:

axes(handles.axes2);%定义图形区域 axes2 T=getimage;%从坐标轴获取图像数据

x=rgb2gray(handles.img);%利用 rgb2gray函数对源图像进行灰度处理 h=histeq(x);%对图像进行直方图均衡化处理

imshow(h);%显示图像

xlabel('直方图均衡化后的图像 ');handles.img=h;低通滤波器处理: axes(handles.axes2);y1=handles.img;%获取图像

x=rgb2gray(handles.img);%灰度变换

f=double(x);%数据类型转换为双精度数值

g=fft2(f);%二维离散傅里叶变换

g=fftshift(g);%将变换后的图象频谱中心从矩阵的原点移到矩阵的中心

[M,N]=size(g);%返回矩阵 g 的大小,即 M 为行数,N 为列数

nn=2;%二阶巴特沃斯低通滤波器 d0=50;%截止频率 50Hz m=fix(M/2);

n=fix(N/2);%取矩阵 g 的行数和列数一半的整数

《信号处理matlab仿真》结课作业

for i=1:M

for j=1:N % 循环

d=sqrt((i-m)^2+(j-n)^2);

h=1/(1+0.414*(d/d0)^(2*nn));%计算低通滤波器传递函数

result(i,j)=h*g(i,j);%结果返回到 result

end end result=ifftshift(result);%将图象频谱中心从矩阵的中心移到矩阵的原点 y2=ifft2(result);%二维离散傅里叶反变换

y3=uint8(real(y2));%把矩阵 y2 实部转换成 8 位无符号数据

imshow(y3);%显示低通滤波后的图像

xlabel('低通滤波图像 ');handles.img=y3;高通滤波器处理: axes(handles.axes2);x=handles.img;%获取图像

y=rgb2gray(handles.img);%灰度变换

f=double(y);%数据类型转换为双精度数值 k=fft2(f);%二维离散傅里叶变换

g=fftshift(k);%将变换后的图象频谱中心从矩阵的原点移到矩阵的中心

[M,N]=size(g);%返回矩阵 g 的大小,即 M 为行数,N 为列数

nn=2;%二阶

《信号处理matlab仿真》结课作业

d0=25;%截止频率 25Hz m=fix(M/2);n=fix(N/2);for i=1:M

for j=1:N %循环 d=sqrt((i-m)^2+(j-n)^2);if d

y2=ifft2(result);%二维离散傅里叶反变换

y3=uint8(real(y2));%把矩阵 y2 实部转换成 8 位无符号数据 imshow(y3);%显示高通滤波后的图像

xlabel('高通滤波图像 ');handles.img=y3;上下翻转:

axes(handles.axes2);

T= getimage;%从坐标轴获取图像数据 f=flipud(handles.img);%将图像矩阵上下翻转

《信号处理matlab仿真》结课作业

imshow(f);%显示翻转后的图像

xlabel('上下翻转后的图像 ');handles.img=f;左右翻转:

axes(handles.axes2);T= getimage;%从坐标轴获取图像数据 f=fliplr(handles.img);%将图像矩阵左右翻转

imshow(f);%显示翻转后的图像

xlabel('左右翻转后的图像 ');handles.img=f;

二、调试分析

这个错误主要是不细心造成,检查发现右括号少了,加上就解决了。

对变量没有定义,直接进行使用,在程序开始之前对其进行了重新定义。

《信号处理matlab仿真》结课作业

Freqz错误使用,对程序及freqz参数调整,得到解决。

跟上面的问题一样,都是对freqz重新调整,得到解决。如图所示:

没有对axes1进行定义,直接使用,程序加了:axes(handles.axes1);得到解决。

《信号处理matlab仿真》结课作业

这个错误开始的时候以为是图窗设计的不合理,或者是程序的问题,就把图窗和.m文件都删了重新设计,还是这个错误,排除了图窗设计错误,就对程序进行重新设计,最后实现了简单的图像处理按钮的编写并且没有了错误。

直接对.img进行了使用,对程序作了一下改动,此问题得到解决:

三、测试结果

1、仿真系统开始界面:

《信号处理matlab仿真》结课作业

2、基本信号显示:

①:正弦信号的显示:

②:方波信号的显示:

③:锯齿信号的显示:

《信号处理matlab仿真》结课作业

④:单位阶跃信号的显示:

⑤:抽样信号的显示:

《信号处理matlab仿真》结课作业

⑥:指数信号的显示:

3、序列运算:

①:单位脉冲序列:

②:单位阶跃序列:

③:指数序列:

《信号处理matlab仿真》结课作业

④:序列卷积:

4、卷积与傅里叶变换:

①:卷积:

②:方波傅里叶分析:

《信号处理matlab仿真》结课作业

③:离散傅里叶变换:(主要是对指数信号)

④:快速傅里叶变换:(主要是对指数信号)

《信号处理matlab仿真》结课作业

5、滤波器设计:

①:FIR低通滤波器:

②:FIR高通滤波器:

③:FIR带通滤波器:

④:巴特沃斯低通滤波器:(幅频与相频图线)

《信号处理matlab仿真》结课作业

⑤:切比雪夫I型滤波器:

6、简单图像处理:

①:选择图片打开:

《信号处理matlab仿真》结课作业

②:灰度处理:

③:傅里叶变换:

④:直方图均衡化:

《信号处理matlab仿真》结课作业

⑤:低通滤波器处理:

⑥:高通滤波器处理:

⑦:上下翻转:

《信号处理matlab仿真》结课作业

⑧:左右翻转:

注:每项操作完成后,都有一个返回主界面按钮,为退出此项操作,这里不一一展示。

四、课程总结及心得体会

通过近一段的学习,我明确了matlab是一款集数据分析、矩阵运算、信号处理和图形显示于一体,可方便地应用于数学计算、算法开发、数据采集、系统建模和仿真、数据分析和可视化、科学和应用软件开发等方面的强悍软件,是研究人员、工程人员研究工作中不可多得的工具,也是我们学习过程中必不可少的软件。而正因为其强

《信号处理matlab仿真》结课作业

大之处,以及可视性及可交互性使我对它的学习产生了浓厚的兴趣。开学至今,我们学习了 matlab 矩阵及其运算、matlab 程序设计、m文件操作、m文件 调试、m文件编程以及 matlab 绘图等,一段时间下来,对 matlab 还是有了一定的框架性认识及编程能力。并且在学习 matlab 过程中,我感觉到它和 c 语言有许多相似之处,它有c语言的特征,但是比 c 语言编程计算更加简单,适合于复杂的数学运算。以上就是我对此课程的总结和心得体会。

根据自己学习的过程提出以下两点建议:

1、针对上课学习: 对于软件类的学习存在这样一个问题,我们可以上课时带电脑到课堂上或机房授课,一方面老师在讲台上演示,另 一方面同学们在下面即时练习,这样印象会更加深刻。

2、针对课下学习:近期 matlab 学习,老师给的课下作业很少,仅有实验,也许老师考虑同学们比较忙,以及可能交上来的作业效果质量达不到预期效果。但我认为适量的课下作业还是非常有必要的,尤其是对于我们这些普遍自制力较差的情况,这点显得更加有意义。课下作业可以布置那些老师演示过的程序或 ppt 中程序略加改动,让我们下课后及时完成上交。可以使我们及时巩固。

《《信号处理matlab仿真》大作业.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
《信号处理matlab仿真》大作业
点击下载文档
相关专题 matlab仿真大作业 作业 信号处理 matlab matlab仿真大作业 作业 信号处理 matlab
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文