信号处理与MATLAB实践 实验报告.docx
- 文档编号:23397631
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:17
- 大小:464.65KB
信号处理与MATLAB实践 实验报告.docx
《信号处理与MATLAB实践 实验报告.docx》由会员分享,可在线阅读,更多相关《信号处理与MATLAB实践 实验报告.docx(17页珍藏版)》请在冰豆网上搜索。
信号处理与MATLAB实践实验报告
信号处理与MATLAB实践
实验报告
班级:
140200
学生姓名:
陈艺飞
学号:
14020016
指导教师:
孙中华、张延华
完成时间:
2016.12
一、任选题
1、作业要求
作业-1太阳黑子活动周期的分析
太阳黑子的活动是周期的,大约每11年达到一个爆发高峰。
试证明这一点。
设计提示:
①首先下载太阳黑子的数据,可以从比利时皇家天文台(RoyalObservatoryofBelgium)的太阳影响数据分析中心(SolarInfluencesDataAnalysisCenter-SIDC)下载,网址是:
http:
//sidc.oma.be/index.php3
下载数据的时间段可以从1741年1月一直到当前。
②以横坐标表示年份,纵坐标表示黑子出现的数量,绘制Wolfer图。
③、应用FFT技术分析Wolfer数,在复平面上可以直接绘制出由Y给出的傅立叶系数的分布图。
④、绘制周期图(Y的模的平方被定义为功率,功率与频率的关系曲线则被定义为周期图)。
注:
要获得太阳黑子的活动周期,你可以使用月度数据。
该数据可以通过点击太阳影响数据分析中心网页左边的导航条Sunspots→downloadofdata→monthlyandmonthlysmoothedsunspotnumber下载。
下载的数据文件的第1列是年和月,第3列是该月太阳黑子的平均数,第4列是平滑后该月太阳黑子的平均数。
为了分析太阳黑子的活动规律,即可以取任一时间段的数据,也可以取下载的全部数据。
为分析方便,建议用Excel将数据文件读进表格并且存到MATLAB工作路径。
2、流程图
标出周期
3、解题步骤
①下载自http:
//sidc.oma.be/silso/datafiles页面内的Totalsunspotnumber——Yearlymeantotalsunspotnumber[1700-now],CSV格式,并将其根据Matlab语法要求将其重命名为a14020016.csv。
②保存太阳黑子数据(a14020016.csv)至MATLAB工作路径
③装载太阳黑子的数据
loada14020016.csv;%读取太阳黑子数据
④以横坐标表示年份,纵坐标表示黑子出现的数量,绘制Wolfer图。
year=a14020016(:
1);%读取年份信息
wolfer=a14020016(:
2);%读取黑子数据
plot(year,wolfer);%画出时域图
xlabel(‘年份’);ylabel(‘太阳黑子数据’)%标注横纵坐标
title(‘太阳黑子数据’)%标注标题
figure;%控制画图窗口
⑤应用FFT技术分析Wolfer数,在复平面上可以直接绘制出由Y给出的傅立叶系数的分布图。
Y=fft(wolfer);%对全部数据做fft变换
Y
(1)=[];%舍弃第一点
plot(Y,'ro')%在富平面做图
title('傅立叶系数分布图');%标注标题
xlabel('实轴');%标注横坐标
ylabel('虚轴');%标注纵坐标
set(gca,'YTick',[],'XTick',[]);%删除横纵轴刻度
figure;%控制画图窗口
⑥绘制周期图(Y的模的平方被定义为功率,功率与频率的关系曲线则被定义为周期图)。
n=length(Y);%取FFT结果长度为n
power=abs(Y(1:
n/2)).^2;%取前n/2个数据求功率
nyquist=1/2;%取最大频率为0.5
freq=(1:
n/2)/(n/2)*nyquist;%将FFT转换为DTFT
plot(freq,power);%画周期图
xlabel('次/年');%标注横坐标
title('周期图');%标注标题
figure;%控制画图窗口
⑦标注太阳黑子活动周期
period=1./freq;%将横坐标单位转换为年/周期
plot(period,power);%画周期图
axis([05002e+7]);%坐标轴设置
ylabel('频率');xlabel('年/周期');%标注横纵坐标
holdon;%为标注最大点做准备(防止图像刷新)
index=find(power==max(power));%找到频率最大点
mainPeriodStr=num2str(period(index));%把数值转化成字符串,方便输出(在图上标注)
plot(period(index),power(index),'r.','MarkerSize',25);text(period(index)+2,power(index),['周期=',mainPeriodStr]);%画实心点并文字标注该点
holdoff;
据截图可知,计算出的太阳黑子活动周期为10.9年。
4、运行环境matlab
5、运行代码汇总
loada14020016.csv;%读取太阳黑子数据
year=a14020016(:
1);%读取年份信息
wolfer=a14020016(:
2);%读取黑子数据
plot(year,wolfer);%画出时域图
xlabel(‘年份’);ylabel(‘太阳黑子数据’)%标注横纵坐标
title(‘太阳黑子数据’)%标注标题
figure;%控制画图窗口
Y=fft(wolfer);%对全部数据做fft变换
Y
(1)=[];%舍弃第一点
plot(Y,'ro')%在富平面做图
title('傅立叶系数分布图');%标注标题
xlabel('实轴');%标注横坐标
ylabel('虚轴');%标注纵坐标
set(gca,'YTick',[],'XTick',[]);%删除横纵轴刻度
figure;%控制画图窗口
n=length(Y);%取FFT结果长度为n
power=abs(Y(1:
n/2)).^2;%取前n/2个数据求功率
nyquist=1/2;%取最大频率为0.5
freq=(1:
n/2)/(n/2)*nyquist;%将FFT转换为DTFT
plot(freq,power);%画周期图
xlabel('次/年');%标注横坐标
title('周期图');%标注标题
figure;%控制画图窗口
period=1./freq;%将横坐标单位转换为年/周期
plot(period,power);%画周期图
axis([05002e+7]);%坐标轴设置
ylabel('频率');xlabel('年/周期');%标注横纵坐标
holdon;%为标注最大点做准备(防止图像刷新)
index=find(power==max(power));%找到频率最大点
mainPeriodStr=num2str(period(index));%把数值转化成字符串,方便输出(在图上标注)
plot(period(index),power(index),'r.','MarkerSize',25);text(period(index)+2,power(index),['周期=',mainPeriodStr]);%画实心点并文字标注该点
holdoff;
二、双号必选题:
1、题目1
对模拟周期信号进行频谱分析
信号:
选择采样频率
=64Hz,变换区间N=16,32,64,在这三种情况下进行频谱分析。
分别打印其幅频特性,进行分析和讨论。
①代码:
N=input('N=');%样点个数
t=0:
1/64:
(N-1)/64;
y=cos(8*pi*t)+cos(16*pi*t)+cos(20*pi*t);
figure
(1);
plot(t,y);
fs=64;%采样频率
z=fft(y);进行fft转换
figure
(2);
plot((0:
N-1)*fs/N,abs(z));
②截图
N=16
N=32
N=64
③分析
由图可见,在采样频率
=64Hz的情况下,进行此频谱分析,N=16的时候,波形一侧有一个波峰;N=32的时候,波形一侧有两个波峰;N=64的时候,波形一侧有三个波峰。
这说明N(变换区间)越大,分辨率越高,所显示的结果波形的分辨能力越清楚,越精细。
2、题目2
设计滤波器,要求2Hz以下信号最大衰减不能超过3dB,8Hz以上信号衰减不能低于20dB。
设计滤波器代码:
①代码
w1=2;
w2=8;
[N,wn]=buttord(w1,w2,3,20,'s');
[B,A]=butter(N,wn,'s');
[num,den]=bilinear(B,A,64);
[h,w]=freqz(num,den);
f=w/pi*200;
figure
(1);
plot(f,20*log10(abs(h)));
axis([0,10,-30,5]);
grid;
xlabel('频率/Hz')
ylabel('幅度/db')
②截图
波形
三、心得与体会
对于这次Matlab的实验,我是真的收获良多。
我是第一次是用Matlab这个软件,虽然在课堂学习中已经学习并且了解过Matlab这个软件,但是真正自己使用的时候还是非常吃力。
对我而言,我觉得最大的难点就是语法问题。
这个语法和平时使用的C语言或者C++语言或者汇编语言都不太一样,甚至连文件的命名都有着严格的规范要求。
不过,即使有着很多的困难和麻烦,在经过我不断的查阅书籍和资料,上网查看其它人的经验以及向同学请教,还是能够比较顺利的进行实验。
在任选题中我选择的是太阳黑子题目。
之所以选择这个题目是因为我对于这方面比较感兴趣,同时我认为这个题目算是比较容易的。
从比利时皇家天文台(RoyalObservatoryofBelgium)的太阳影响数据分析中心纯英文界面下载太阳黑子的数据对我来说也是一种纯新的体验。
在完成的过程中,我还查阅了很多英文网站来获取信息、下载装载数据、生成曲线和傅立叶变换等不太复杂的算法。
总体来说,太阳黑子题目的实验让我理解了Matlab在实际工程中的应用,算是对我一个帮助。
因为在太阳黑子题目中我已经熟悉了Matlab的操作和很多语句以及算法,所以在做必选题目的实验中,难度就小了很多。
而且谱分析和滤波器的设计我已经在数字信号处理导论中学习过,所以原理方面的知识我也了解得比较清楚,也正是因为这样,必选题目我还是比较轻松的就完成了。
我发现,Matlab这个软件对于我今后的学习还是会有着很大的帮助,尤其是在建立各种各样的模型以及在运用原理完成设计方面,Matlab有着得天独厚的优势。
也感谢张延华老师和孙中华老师本学期对我的教导使我了解并粗略学会了使用Matlab。
今后我将继续探索学习使用Matlab,争取进一步掌握此软件。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号处理与MATLAB实践 实验报告 信号 处理 MATLAB 实践 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)