频谱分析的作用

首先补充:

randn()函数用来产生正态分布的随机数或矩阵

conj()函数用来求负数的共轭:如果Z是一个复数组,那么conj(Z) = real(Z) - i*imag(Z)其中real(Z),imag(Z)分别代表Z的实部和虚部

1.首先看一下频谱分析下,频谱图像展现的特征:

x = sin(2*pi*50*t)的原图和频谱图:

代码:

 1 clear;
 2 clc;
 3 t = 0:0.001:0.25;
 4 x = sin(2*pi*50*t);
 5 %x = 2*sin(2*pi*50*t+pi);
 6 %x = sin(2*pi*50*t) + 2*sin(2*pi*140*t);
 7 %x = sin(100*pi*t)+cos(280*pi*t);
 8 figure(1);
 9 plot(t,x);
10 xlabel(‘t‘); ylabel(‘f(t)‘);
11 y = x;
12 Y = fft(y,256);
13 Pyy = Y.*conj(Y)/256;   %计算Y的模的长度
14 f = 1000/256*(0:127);
15 figure(2);
16 plot(f,Pyy(1:128));
17 title(‘Power spectral density‘);
18 xlabel(‘Frequency (Hz)‘);

结果图为:

频谱图中,峰值是正好是原函数的周期的频率。  变下初始相位呢?

x = 2*sin(2*pi*50*t+pi);

代码:

 1 clear;
 2 clc;
 3 t = 0:0.001:0.25;
 4 %x = sin(2*pi*50*t);
 5 x = 2*sin(2*pi*50*t+pi);
 6 %x = sin(2*pi*50*t) + 2*sin(2*pi*140*t);
 7 %x = sin(100*pi*t)+cos(280*pi*t);
 8 figure(1);
 9 plot(t,x);
10 xlabel(‘t‘); ylabel(‘f(t)‘);
11 y = x;
12 Y = fft(y,256);
13 Pyy = Y.*conj(Y)/256;   %计算Y的模的长度
14 f = 1000/256*(0:127);
15 figure(2);
16 plot(f,Pyy(1:128));
17 title(‘Power spectral density‘);
18 xlabel(‘Frequency (Hz)‘);

结果图为:

仍然满足那个结论。那么组合一下呢?

x = sin(2*pi*50*t) + 2*sin(2*pi*140*t);

代码:

 1 clear;
 2 clc;
 3 t = 0:0.001:0.25;
 4 %x = sin(2*pi*50*t);
 5 %x = 2*sin(2*pi*50*t+pi);
 6 x = sin(2*pi*50*t) + 2*sin(2*pi*140*t);
 7 %x = sin(100*pi*t)+cos(280*pi*t);
 8 figure(1);
 9 plot(t,x);
10 xlabel(‘t‘); ylabel(‘f(t)‘);
11 y = x;
12 Y = fft(y,256);
13 Pyy = Y.*conj(Y)/256;   %计算Y的模的长度
14 f = 1000/256*(0:127);
15 figure(2);
16 plot(f,Pyy(1:128));
17 title(‘Power spectral density‘);
18 xlabel(‘Frequency (Hz)‘);

结果图为:

频谱图中竟然把50Hz和140Hz都显示出来哎,unbelievable!.不行,再试试,换成cos试试?

x = sin(100*pi*t)+cos(280*pi*t);

代码:

 1 clear;
 2 clc;
 3 t = 0:0.001:0.25;
 4 %x = sin(2*pi*50*t);
 5 %x = 2*sin(2*pi*50*t+pi);
 6 %x = sin(2*pi*50*t) + 2*sin(2*pi*140*t);
 7 x = sin(100*pi*t)+cos(280*pi*t);
 8 figure(1);
 9 plot(t,x);
10 xlabel(‘t‘); ylabel(‘f(t)‘);
11 y = x;
12 Y = fft(y,256);
13 Pyy = Y.*conj(Y)/256;   %计算Y的模的长度
14 f = 1000/256*(0:127);
15 figure(2);
16 plot(f,Pyy(1:128));
17 title(‘Power spectral density‘);
18 xlabel(‘Frequency (Hz)‘);

结果图为:

也是如此。这下终于可以放心了。原来频谱图是这个作用~。

(2)还是有点不放心。如果加上噪声呢,还能识别出来么?

先测试下噪声:

 1 clear;
 2 clc;
 3 t = 0:0.001:0.25;
 4 figure(1);
 5 y = 2*randn(size(t));
 6 plot(t,y);
 7 xlabel(‘t‘);ylabel(‘y‘);
 8 Y = fft(y,256);
 9 Pyy = Y.*conj(Y)/256;   %计算Y的模的长度
10 f = 1000/256*(0:127);
11 figure(2);
12 plot(f,Pyy(1:128));
13 title(‘Power spectral density‘);
14 xlabel(‘Frequency (Hz)‘);

结果图为:

杂乱无章。。。再测一次试试:

还是杂乱无章,峰值也没有个确定的值。确定为噪声无疑了。

好,那么现在就用你加到上面的正弦函数图像上去!

代码:

 1 clear;
 2 clc;
 3 t = 0:0.001:0.25;
 4 x = sin(100*pi*t)+cos(280*pi*t);
 5 figure(1);
 6 plot(t,x);
 7 xlabel(‘t‘); ylabel(‘f(t)‘);
 8 y = x + 2*randn(size(t));
 9 figure(2);
10 plot(t,y);
11 xlabel(‘t‘);ylabel(‘y(t)‘);
12 Y = fft(y,256);
13 Pyy = Y.*conj(Y)/256;   %计算Y的模的长度
14 f = 1000/256*(0:127);
15 figure(3);
16 plot(f,Pyy(1:128));
17 title(‘Power spectral density‘);
18 xlabel(‘Frequency (Hz)‘);

结果图为:比较下两图可以知道,由于受到噪声干扰。图像几乎很难分辨出信号图像。

频谱分析图这里,竟然有两个突出的峰值:

仔细观察,竟然就是50Hz和140Hz。这下好了,合成的信号用频谱分析竟然可以清楚的找到原来的正弦信号~。

咳咳,总结:经过傅里叶变换之后,频谱图的确能够帮助我们分析信号的成分,便于对信号进行处理。

时间: 2024-10-13 16:19:38

频谱分析的作用的相关文章

再续FFT:信号的频谱分析

摘自:http://www.ilovematlab.cn/thread-119939-1-1.html http://www.360doc.com/content/13/1208/18/13670635_335496776.shtml 对于下面这句话该怎么理解? 假设采样频率为Fs,信号频率F,采样点数为N.那么FFT之后结果就是一个为N点的复数.每一个点就对应着一个频率点.这个点的模值,就是该频率值下的幅度特性.具体跟原始信号的幅度有什么关系呢?假设原始信号的峰值为A,那么FFT的结果的每个点

【Delphi】如何在三轴加速器的频谱分析中使用FFT(快速傅里叶变换)算法

关于傅里叶变换的作用,网上说的太过学术化,且都在说原理,已经如何编码实现,可能很多人有个模糊影响,在人工智能,图像识别,运动分析,机器学习等中,频谱分析成为了必备的手段,可将离散信号量转换为数字信息进行归类分析. 今天这里将的不是如何实现,而是如何使用傅里叶变换 但频谱分析中,涉及到的信号处理知识对大部分软件开发的人来说,太过于晦涩难懂,傅里叶变换,拉普拉斯,卷积,模相,实数,虚数,复数,三角函数等等,已经能让软件工程师望而却步,造成懂知识的人无法开发,懂开发的人无法分析,而同时具备两种技能的人

@jsonignore的作用

作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响. 如下: package com.hzboy.orm; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.pe

配置虚拟域名,hosts文件起作用

快速打开hosts方法 开始->运行->system32->回车 当前路径文件夹drivers\etc\hosts hosts文件起作用,目前楼主知道有两个可能原因 1.刷新dns cmd里面运行 ipconfig /flushdns 2.没配置前访问了一次域名,配置完之后浏览器没重启.所以不起作用 重新启动浏览器或者换一个浏览器

Linux中的环境变量配置文件及其作用

登录相关的配置文件: /etc/profile 范围:对所有用户生效 作用: a.定义USER变量 b.定义LOGNAME变量 c.定义MAIL变量 d.定义PATH变量 e.定义HOSTNAME变量 f.定义HISTSIZE变量 g.定义umask值 i.调用/etc/profile.d/*.sh文件 /etc/profile.d/*.sh 范围:对所有用户生效 说明:这是一族sh文件,没个都会被调用 例如: /etc/profile.d/lang.sh 作用:调用/etc/sysconfg/

表单的作用

①input的作用分为:单选按钮.文本框.密码框.复选按钮.隐藏表单域.文本选择框.图片按钮.普通按钮.提交按钮.重置按钮 ②select的作用:可创建单选或多选菜单,含有<option>标签 在HTML5中的新属性:1.autofocus属性            值autofocus                     规定在页面加载后文本区域自动获得焦点: 2.disabled                        disabled                      

shell中各种括号的作用

小括号里是命令大括号是变量值   一.小括号,圆括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格. ②命令替换.等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令.有些shell不支持,如tcsh. ③用于初始化数组.如:array=(a b

VMware Tools的安装及其作用(redhat5.5为例)

VMware Tools是VMware虚拟机中自带的一种增强工具,相当于VirtualBox中的增强功能(Sun VirtualBox Guest Additions),是VMware提供的增强虚拟显卡和硬盘性能.以及同步虚拟机与主机时钟的驱动程序. 只有在VMware虚拟机中安装好了VMware Tools,才能实现主机与虚拟机之间的文件共享,同时可支持自由拖拽的功能,鼠标也可在虚拟机与主机之前自由移动(不用再按ctrl+alt),且虚拟机屏幕也可实现全屏化. 在vm上安装完redhat系统后

磁盘阵列RAID的功能作用介绍

RAID是一个我们经常能见到的名词.但却因为很少能在实际环境中体验,所以很难对其原理能有很清楚的认识和掌握.RAID是英文Redundant Array of Independent Disks的缩写,中文简称为独立磁盘冗余阵列.RAID就是一种由多块硬盘构成的冗余阵列.虽然RAID包含多块硬盘,但是在操作系统下是作为一个独立的大型存储设备出现.上海天盾数据恢复中心的专家告诉我们,利用RAID技术于存储系统的好处主要有以下三种: 1.通过把多个磁盘组织在一起作为一个逻辑卷提供磁盘跨越功能; 2.