关于信号的频谱分析

关于信号和图像的频谱分析

频谱分析可以将一种复杂的信号分解为较简单的信号,找出一个信号在不同频率下的信息。频谱是指一个时域的信号在频域下的表示方式,通过对信号进行傅里叶变换得到“幅度频谱”和“相位频谱”。
刚开始我不是很理解频谱图是如何形成的,后来理解了之后觉得下面这幅图可以帮助小白理解了。一个信号可以分解为不同频率的正弦波,从正面看我们看到的是它的时域波形图,从侧面看横坐标就变成了频率,即为频谱图,可以看到信号是由哪些频率合成。
在这里插入图片描述
画一个信号的频谱图,需要有采样频率fs,根据奈归斯特定理:采样频率要大于等于信号最高频率的两倍,不然会发生频谱混叠。还需要采样点数N。假定已有一个信号x,对信号进行傅里叶变换,N个采样点经过傅里叶变换就是N个复数,每个复数对应一个频率值以及该频率信号的幅值和相位。第一个点对应的频率为0hz,为直流分量DC。某点n所表示的频率为:fn=(n-1)*fs/N,该点的模值除以N/2就是对应该频率下的信号的幅值(对于直流信号除以N),fn所能分辨到的频率为fs/N;比如fs=1000HZ,N=1000,则能分辨到的频率为1HZ,采样时间为1s,采样时间和频率分辨率为倒数关系,要提高频率分辨率就必须增加采样点数。该频率下信号的相位可以用函数atan2(b,a)计算。

这里我的数据比较大且集中,所以画出来不明显

i=imread('lena512.bmp');
a=imnoise(i,'gaussian',0.05);
[m,n]=size(a);
f1=fft(a,[],2);    %傅里叶变换
f1_mean=sum(f1)/m;
N=512;
n=0:N-1;
fs=1000;
f=n*fs/N;  %横坐标变换
figure;
plot(f,abs(f1_mean))


如果使用fftshift函数进行处理后画频谱图会好看一点,它会对频谱进行搬移,将零频分量搬移到频谱中心。

 i=imread('lena512.bmp');
a=imnoise(i,'salt & pepper',0.05);
[m,n]=size(a);
f1=fft(a,[],2);
f1_mean=fftshift(sum(f1)/m);
N=length(f1_mean);
n=0:N-1;
fs=1000;
f=(n/N-1/2)*fs;
plot(f,abs(f1_mean)*2/l)
  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值