西北工业大学Matlab实验报告.docx
- 文档编号:30602947
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:41
- 大小:1.65MB
西北工业大学Matlab实验报告.docx
《西北工业大学Matlab实验报告.docx》由会员分享,可在线阅读,更多相关《西北工业大学Matlab实验报告.docx(41页珍藏版)》请在冰豆网上搜索。
西北工业大学Matlab实验报告
西北工业大学
《基于MATLAB的数字信号处理》实验报告
学院:
计算机学院
学 号:
姓 名:
专业:
计算机科学与技术
西北工业大学
2017年07月
实验一MATLAB基本编程实验
一、实验目的及要求
1.熟悉MATLAB运行环境;
2.掌握MATLAB的基本语法和函数;
3.掌握MATLAB的基本绘图功能
二、实验设备(环境)及要求
1.计算机
2.Matlab软件编程实验平台
三、实验容与步骤
1.设
求使
2.分别用for或while循环结构编写程序,求出
。
并考虑一种避免循环语句的程序设计算法实现同样的运算。
3.将图形窗口4等分,按顺序绘制出下列函数的曲线图及曲面图并标记。
四、设计思想
1.,则X=B*inv(A)
2.
编写循环程序,循环105次,每次循环中计算
的值
对
做数学运算,可以得到
3.使用subplot将图形窗口分为四个子窗口,在子窗口中进行绘图
五、程序代码及注释
%question1*************
%计算矩阵B*inv(A)
A=[021
2-13
-33-4];
B=[123
2-31];
X=B*inv(A)
%*************************
%question2***************
%分别使用for及while循环计算矩阵K的值
K=0;
fori=1:
105
K=K+sqrt(3)/2^(i);
end
K
%-------------------------
K=0;
i=1;
whilei<106
K=K+sqrt(3)/2^(i);
i=i+1;
end
K
%*************************
%question3*************
%首先计算x,y1,y2,y3,X,Y,Z的值,然后画图
x=0:
0.1:
2*pi;
y1=cos(x);
y2=2*sin(2*x);
y3=x.*cos(x);
[X,Y]=meshgrid(-2:
0.1:
2,-4:
0.4:
4);
Z=X.^2/2^2+Y.^2/4^2;
subplot(2,2,1)
plot(x,y1)
axis([06.5min(y1)-0.1max(y1)+0.1]);
xlabel('x')
ylabel('y1')
title('x-y1graph')
subplot(2,2,2)
plot(x,y2)
axis([06.5min(y2)-0.1max(y2)+0.1]);
xlabel('x')
ylabel('y2')
title('x-y2graph')
subplot(2,2,3)
plot(x,y3)
axis([06.5min(y3)-0.1max(y3)+0.1]);
xlabel('x')
ylabel('y3')
title('x-y3graph')
subplot(2,2,4)
surf(X,Y,Z);
axis([-22-4402]);
xlabel('X')
ylabel('Y')
zlabel('Z')
title('X-Y-Zgraph')
%*************************
六、实验结果
1.
2.K=1.7321
3.
实验二MATLAB基本编程实验
一、实验目的及要求
1.回顾数字信号处理的主要容;
2.掌握利用MATLAB进行信号处理的方法;
3.了解信号处理工具箱中一些函数的功能;
二、实验设备(环境)及要求
1.计算机
2.Matlab软件编程实验平台
三、实验容
1.任何实数序列x(n)都能分解成为它的偶部分量和奇部分量之和,编写一个MATLAB函数文件,该函数的功能是将一给定序列分解成为它的偶部分量和奇部分量。
并通过M文件或命令行调用该函数文件将以下序列分解成为偶部分量和奇部分量。
2.一数字滤波器由频率响应函数描述
1)写出其差分方程表示;
2)画出上面滤波器的幅频和相频图;
3)产生信号的200个样本,通过该滤波器得到输出y(n),试将输出y(n)的稳态部分与x(n)作比较,说明这两个正弦信号的幅度和相位是如何受该滤波器影响的。
3.设计带通滤波器(Butterworth、椭圆、窗函数),采样率fs=2000Hz,通带围为300-600Hz,阶数自选,画出频率响应并分析比较。
四、设计思想
1.首选对原始序列做折叠处理,得到折叠后的序列,再利用计算公式求的序列的奇偶分量
2.
差分方程如下
根据频率响应函数,使用freqz函数计算幅频和相频图
取样出x(n)的200个样本,通过filter函数求出滤波器作用后的y(n),对比输入输出信号,进行分析
3.首先设定带通滤波器阶数,本实验设定为10阶,窗函数部分使用了矩形窗,然后根据通带围频率求得各个滤波器设计所需的参数,然后调用matlab滤波器生成函数,生成相应的滤波器。
五、程序代码及注释
代码1
function[xe,xo,m]=Calculatexexo(x,n)
%输入一个序列,输出分解后的奇偶序列
%2017-8-19byBinwang
m=-fliplr(n);
n2=min([n,m]);
n3=max([n,m]);
m=n2:
n3;%计算折叠处理之后的横轴坐标
I=find(m==n
(1));
x1=zeros(1,length(m));
x1(I:
I+length(n)-1)=x;%在新的横轴坐标域表示原始序列
x=x1;
xe=0.5*(x+fliplr(x));
xo=0.5*(x-fliplr(x));%计算奇偶分量
end
%计算序列的奇偶分量
n=0:
100;
x=exp(-0.05*n).*sin(0.1*pi*n+pi/3);%生成序列
[xe,xo,m]=Calculatexexo(x,n);%计算序列奇偶分量
subplot(2,1,1)
stem(n,x,'ro');%原始序列
title('originalgraph')
subplot(2,2,3)
stem(m,xe,'*');%偶分量
title('xegraph')
subplot(2,2,4)
stem(m,xo,'*');%奇分量
title('xograph')
代码2.2
fs=1000;
b=[10001];%表达式分子系数
a=[1000-0.8145]%表达式分母系数
[H,w]=freqz(b,a,256,fs);
mag=abs(H);%计算幅值
ph=angle(H);%计算相位
ph=ph*180/pi;
subplot(2,1,1)
plot(w,mag);grid;
xlabel('frequencyHz');
ylabel('magnitude');
subplot(2,1,2)
plot(w,ph);grid;
xlabel('frequencyHz');
ylabel('phase');
代码2.3
n=1:
0.025:
5;
x=sin(pi*n/2)+5*cos(pi*n);
stem(n,x)
b=[10001];%表达式分子系数
a=[1000-0.8145];%表达式分母系数
y=filter(b,a,x);
holdon
stem(n,real(y),'r*')
legend('x(n)','y(n)');
title('输入输出序列对比')
代码3
fs=2000;
fc1=300;
fc2=600;
N=10;%阶数设置为10
wlp=fc1/(fs/2);
whp=fc2/(fs/2);
wn=[wlp,whp];%计算带通围
%矩形窗带通滤波器
w1=boxcar(N);%矩形窗时域响应
b1=fir1(N-1,wn,w1);
[h,w]=freqz(b1,1,256,fs);
subplot(2,3,1)
plot(w,20*log10(abs(h)));
xlabel('frequencyHz');
ylabel('magnitude/dB');
title('矩形窗函数的幅频特性');
subplot(2,3,4)
plot(w,180/pi*unwrap(angle(h)));
xlabel('frequencyHz');
ylabel('phase');
title('矩形窗函数的相频特性');
%巴特沃斯带通滤波器
[b,a]=butter(N,wn);
[h1,w1]=freqz(b,a,256,fs);
subplot(2,3,2)
plot(w1,20*log10(abs(h1)/max(abs(h1))));
xlabel('frequencyHz');
ylabel('magnitude/dB');
title('巴特沃斯的幅频特性');
subplot(2,3,5)
plot(w1,180/pi*(angle(h1)));
xlabel('frequencyHz');
ylabel('phase');
title('巴特沃斯的相频特性');
%椭圆带通滤波器
rs=60;rp=0.1;%椭圆带通滤波器的指标
[B,A]=ellip(N,rp,rs,wn)
[h2,w2]=freqz(B,A,256,fs);
subplot(2,3,3)
plot(w2,20*log10(abs(h2)/max(abs(h2))));
xlabel('frequencyHz');
ylabel('magnitude/dB');
title('椭圆滤波器的幅频特性');
subplot(2,3,6)
plot(w2,180/pi*(angle(h2)));
xlabel('frequencyHz');
ylabel('phase');
title('椭圆滤波器的相频特性');
六、实验结果
1.原始序列及得到的奇偶序列如下图所示
2.1差分方程表示如下
2.2计算出的幅频和相频图如下
2.3输入序列与滤波器的输出序列如下图所示
分析结果可知,输出相对于输入在相位上有一定的延迟,幅度上有了提升。
两个正弦信号在对应的频率处均有一定给上的幅度增加和相位延迟
3.带通滤波器设计
根据上图结构可以看出:
巴特沃斯带通滤波器的通带无波动,且设计出来的滤波器结构简单,相频变化表现较差,但带外衰减速度较慢。
椭圆滤波器的通带有一定的波动起伏,边带截止频率非常陡峭,相频表现差。
矩形窗函数带通滤波器通带有一定的波动,边带截止频率变现位于三者的中等,相频变化表现较好。
实验三基于MATLAB的图像处理实验
一、实验目的及要求
1.了解图像处理的基本概念和功能;
2.掌握利用MATLAB进行图像处理的方法;
3.了解图像处理工具箱中一些函数的功能;
二、实验设备(环境)及要求
1.计算机
2.Matlab软件编程实验平台
三、实验容
1.对cameraman.tif图像分别添加椒盐噪声(密度为0.03)和高斯白噪声(均值为0,方差为0.02)的图像,利用三种方法进行去噪,显示原始图像、加噪图像和去噪图像并对实验结果进行分析。
2.对lena.bmp图像进行DCT变换,分别选取最大的1/5、1/10、1/15个变换系数(其余置为0),进行反DCT得到重构图像,显示原图像和各重构图像并分别计算重构图像的峰值信噪比。
四、设计思想
1.使用matlab的imnoise函数为图像添加椒盐噪声和高斯白噪声,并分别使用均值滤波器(fspecial)中值滤波器(medfilt2),维纳滤波器(wiener
)三种方法进行降噪处理
2.对lena图片进行灰度化,然后进行分块DCT变换,块大小设置为8x8,则共有64个参数,设置不同的mask矩阵,分别选取其中的1/5、1/10、1/15个参数进行反变换。
五、程序代码及注释
代码1:
pic=imread('cameraman.tif');
Jpic=imnoise(pic,'salt&pepper',0.03);%加入椒盐噪声
Gpic=imnoise(pic,'gaussian',0,0.02);%加入高斯白噪声
subplot(1,3,1)
imshow(pic);title('原始图片');
subplot(1,3,2)
imshow(Jpic);title('加入椒盐噪声图片');
subplot(1,3,3)
imshow(Gpic);title('加入高斯白噪声图片');
%均值滤波复原处理
figure;
J1=filter2(fspecial('average',3),Jpic)/255;%模板尺寸为3
J2=filter2(fspecial('average',7),Jpic)/255;%模板尺寸为7
subplot(2,3,1)
imshow(Jpic);title('椒盐噪声图片');
subplot(2,3,2)
imshow(J1);title('3x3均值滤波');
subplot(2,3,3)
imshow(J2);title('7x7均值滤波');
G1=filter2(fspecial('average',3),Gpic)/255;%模板尺寸为3
G2=filter2(fspecial('average',7),Gpic)/255;%模板尺寸为7
subplot(2,3,4)
imshow(Gpic);title('高斯白噪声图片');
subplot(2,3,5)
imshow(G1);title('3x3均值滤波');
subplot(2,3,6)
imshow(G2);title('7x7均值滤波');
%中值滤波复原图像
figure;
JJ1=medfilt2(Jpic,[33]);%%模板尺寸为3
JJ2=medfilt2(Jpic,[77]);%%模板尺寸为7
subplot(2,3,1)
imshow(Jpic);title('椒盐噪声图片');
subplot(2,3,2)
imshow(JJ1);title('3x3中值滤波');
subplot(2,3,3)
imshow(JJ2);title('7x7中值滤波');
GG1=medfilt2(Gpic,[33]);%%模板尺寸为3
GG2=medfilt2(Gpic,[77]);%%模板尺寸为7
subplot(2,3,4)
imshow(Gpic);title('高斯白噪声图片');
subplot(2,3,5)
imshow(GG1);title('3x3中值滤波');
subplot(2,3,6)
imshow(GG2);title('7x7中值滤波');
%维纳滤波复原图像
figure;
JJJ1=wiener2(Jpic,[33]);%%模板尺寸为3
JJJ2=wiener2(Jpic,[77]);%%模板尺寸为7
subplot(2,3,1)
imshow(Jpic);title('椒盐噪声图片');
subplot(2,3,2)
imshow(JJJ1);title('3x3维纳滤波');
subplot(2,3,3)
imshow(JJJ2);title('7x7维纳滤波');
GGG1=wiener2(Gpic,[33]);%%模板尺寸为3
GGG2=wiener2(Gpic,[77]);%%模板尺寸为7
subplot(2,3,4)
imshow(Gpic);title('高斯白噪声图片');
subplot(2,3,5)
imshow(GGG1);title('3x3维纳滤波');
subplot(2,3,6)
imshow(GGG2);title('7x7维纳滤波');
代码2
pic=imread('lena.bmp');%输入灰度图像
subplot(2,2,1);
imshow(pic);
title('原始图片lena');
pic=rgb2gray(pic);
subplot(2,2,2);
imshow(pic);
title('灰度图片lena');
pic=im2double(pic);
%将lena图片进行分块压缩,块大小为8x8,共64个DCT变换系数
D=dctmtx(8);
C=blkproc(pic,[8,8],'P1*x*P2',D,D');%D'为D的转置
%分别保留1/5,1/10,1/15个系数进行DCT变换,设置mask
mask1=[11110000
11100000
11100000
11000000
10000000
00000000
00000000
00000000];%保留1/5个系数
mask2=[11100000
11000000
10000000
00000000
00000000
00000000
00000000
00000000];%保留1/10个系数
mask3=[11000000
10000000
10000000
00000000
00000000
00000000
00000000
00000000];%保留1/15个系数
X=blkproc(C,[8,8],'P1.*x',mask1);%保留1/5个系数
I1=blkproc(X,[8,8],'P1*x*P2',D',D);%重构图像
X2=blkproc(C,[8,8],'P1.*x',mask2);%保留1/10个系数
I2=blkproc(X2,[8,8],'P1*x*P2',D',D);%重构图像
X3=blkproc(C,[8,8],'P1.*x',mask3);%保留1/15个系数
I3=blkproc(X3,[8,8],'P1*x*P2',D',D);%重构图像
subplot(2,3,4);imshow(I1);title('保留1/5个系数');
subplot(2,3,5);imshow(I2);title('保留1/10个系数');
subplot(2,3,6);imshow(I3);title('保留1/15个系数');
I1p=imPSNR(pic,I1);
I2p=imPSNR(pic,I2);
I3p=imPSNR(pic,I3);
disp(['DCT变换保留1/5个系数的PSNR:
',num2str(I1p)]);
disp(['DCT变换保留1/10个系数的PSNR:
',num2str(I2p)]);
disp(['DCT变换保留1/15个系数的PSNR:
',num2str(I3p)]);
function[PSNR]=imPSNR(J,I)
%imPSNRSummaryofthisfunctiongoeshere
%Iisaimagewithhighquality
%Jisaimagewithnoise
%thefunctionwillreturnthePSNRofthenoiseimage
width=size(I,2);
heigh=size(I,1);
if(width~=size(J,2)||heigh~=size(J,1))
disp('Pleasechecktheinputimagehavethesamesize');
return
end
K=(I-J).*(I-J);
PSNR=sum(sum(K,1));
PSNR=PSNR/(width*heigh);
PSNR=10*log10(255*255/PSNR);
end
六、实验结果
1.加入噪声图片及复原图片
本次实验分别使用均值滤波,中值滤波,维纳滤波三种方法对加入噪声的图片进行复原。
每种方法分别采用了3x3和7x7的模板大小进行处理,最终得到的结果如上图所示。
分析图片结果可以得到:
均值滤波方法更适合处理椒盐噪声的图片,针对椒盐噪声图片,7x7模板处理效果趋于模糊,3x3模板的效果更好。
中值滤波同样更适合处理椒盐噪声图片,3x3模板处理效果非常好,基本接近于原始图片,7x7模板处理效果有一定程度上的模糊。
维纳滤波跟适合处理高斯噪声,对比不同模板大小的处理效果,7x7模板的处理效果要明显好于3x3的效果,其处理结果基本近似原始图片。
2.DCT变换结果的均方误差及重构图片结果如下图所示:
分析上述结果可以看出,DCT变换保留1/5个数的系数时,重构的图像质量最好。
减少DCT变换系数的个数,图像质量略有下降。
实验四基于MATLAB神经网络编程实验
一、实验目的及要求
1.了解神经网络的基本概念和原理;
2.掌握用MATLAB实现神经网络的思路和方法;
3.了解神经网络工具箱函数的功能。
二、实验设备(环境)及要求
1.计算机
2.Matlab软件编程实验平台
三、实验容
1、产生2维20组二类可分数据,进行标记并构成训练集(输入输出模式对),利用2输入的MP模型实现二类分类问题,给出实验结果并分析。
2、用多层前向网络的BP算法拟合下列函数
说明:
1)网络结构为三层(输入层、1个隐层和输出层);
2)获取两组数据,一组作为训练集,一组作为测试集;
3)用训练集训练网络;
4)用测试集检验训练结果。
四、设计思想
1.随机产生一个2x20的数组P,并利用y=x+2.1直线进行分类,标签存储在
数组T中,利用函数newp生成一个仅包含一个单元的感知器,设置训练次数,进行训练,利用训练好的网络对随机生成的2x100数组p进行分类,并显示最终结果。
2.生成指定x,y围的2001组数据,随机选取其中的1900组作为训练集,其余101组作为测试机,利用newff函数生成一个三层的BP网络,隐层包含5个节点,训练网络,并进行最后的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西北工业大学 Matlab 实验 报告