用MATLAB编程计算任意周期性连续函数的单边频谱
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用MATLAB编程计算任意周期性连续函数的单边频谱相关的知识,希望对你有一定的参考价值。
参考技术A matlab所有的连续函数基本上都需要转换到离散域处理,所有应该用fft实现。下面是我自己写的一段小代码,用上了数字信号处理中的离散域和数字域上处理的对应关系:)
%计算傅里叶变换的函数,Fs是采样频率,s是时域信号
function [F,f]=Fourier(s,Fs);
fftn=2^nextpow2(length(s));
F=fft(s,fftn);
f=linspace(0,Fs/2,fftn/2)';
figure;
plot(f,abs(F(1:fftn/2))/Fs);
F=F/Fs;
xlabel('Frequency/Hz');
ylabel('Ampitude');
title('Fourier');追问
为什么不能用傅里叶级数的余弦计算公式完成?如果要该怎么办?
追答没注意到你问题中说的周期性。周期信号的Fourier变换应该是一个一个的冲击函数,其系数是傅里叶级数的系数。你说用傅里叶级数的余弦计算公式是说求傅里叶级数吧,如果要求的话应该也是用离散化的方式,因为是要求积分嘛,这个我没有做过。另也任意周期的信号的Fourier变换其实可以视为非周期信号的Fourier的抽样,典型例子是方波信号。可以利用我上面提供函数计算单周期的Fourier变换再在特定的频率上取点就行了吧,取样点应该是时域频率的整数倍。
参考技术B 给你发怒以上是关于用MATLAB编程计算任意周期性连续函数的单边频谱的主要内容,如果未能解决你的问题,请参考以下文章
数字信号处理 频域采样及恢复(离散频谱到连续频谱) MATLAB