用matlab求离散时间信号的傅里叶变换F(exp(j*w))……

用matlab求离散时间信号的傅里叶变换F(exp(j*w))……,第1张

首先你得确定一个采样频率Fs,然后再用快速傅里叶分析。这是我的一个程序,f0=18;

T0=1/f0;

t=0:Ts:(Np-1)Ts;

x=sin(2pif0t)

是周期为T的周期函数,在周期 内满足狄利克雷条件

则 可以表示为:

函数向量的点积是这么定义的:

正交定义为:

则向量函数 的正交基为 ,而 则是向量函数 在正交基中的坐标。

根据欧拉公式

可得:

综合 、 、 ,指数形式的傅里叶级数展开可以表示为:

任何一个非周期函数可以看成 的周期函数,所以对于任意的函数有:

其中

对于有限长度为N的信号

采样频率 ,频率 的取值也是离散的,取0、 、 、 、 、 、

首先,离散付立叶变换的定义本身比连续付立叶变换少了一个dt(采样时间间隔);

然后,对于单频率成分的信号来说,经过矩形窗截断后的频谱在其信号频率处将放大T(做谱时间长度)倍,同样,对于相隔较远的多频率成分信号来说,相应的频率成分的幅值均将因截断而被放大T倍

综合考虑这两种原因的话,也就是说我们用FFT做出的谱实际上是放大了T/dt=N(做谱点数)倍,因此,必须将此结果除以N

单边谱乘以2就是实际的幅值

处理的是离散的时域信号,相当于时域信号与采样函数(周期单位的脉冲函数,多个偏移量不同的脉冲信号加和,单位脉冲信号经傅里叶变换后恒为1)相乘,根据傅里叶变换的乘法定律,变换后的频域函数会以采样频率 重复

根据奈奎斯特采样定律,如果信号的频率范围是 ~ ,采样频率要高于 ,才不会发生混叠。

离散傅里叶变换(discrete Fourier transform) 傅里叶分析方法是信号分析的最基本方法,傅里叶变换是傅里叶分析的核心,通过它把信号从时间域变换到频率域,进而研究信号的频谱结构和变化规律。但是它的致命缺点是: 计算量太大,时间复杂度太高,当采样点数太高的时候,计算缓慢, 由此出现了DFT的快速实现,即下面的快速傅里叶变换FFT。

这里原始信号的三个正弦波的频率分别为,200Hz、400Hz、600Hz,最大频率为600赫兹。根据采样定理,fs至少是600赫兹的2倍,这里选择1400赫兹,即在一秒内选择1400个点。

1400

[-418864943e-12+0j 966210986e-05-004305756j 386508070e-04-008611996j

869732036e-04-012919206j 154641157e-03-017227871j]

换之后的结果数据长度和原始采样信号是一样的

每一个变换之后的值是一个复数,为a+bj的形式下标为0和 N /2的两个复数的虚数部分为0,下标为i和 N - i 的两个复数共辄,也就是其虚部数值相同、符号相反。再用ifft()从频域转回时域之后,出现了由误差引起的很小的虚部,用npreal()取其实部即可.

 由于一半是另一半的共轭,因此只需要关心一半数据.fft转换后下标为0的实数表示时域信号中的直流成分(不随时间变化)

振幅谱的纵坐标很大,而且具有对称性

Y=A1+A2 cos(2πω2+φ2)+A3 cos(2πω3+φ3)+A4cos(2πω4+φ4)

经过FFT之后,得到的“振幅图”中,

第一个峰值(频率位置)的模是A1的N倍,N为采样点,本例中为N=1400,此例中没有,因为信号没有常数项A1

第二个峰值(频率位置)的模是A2的N/2倍,N为采样点,

第三个峰值(频率位置)的模是A3的N/2倍,N为采样点,

第四个峰值(频率位置)的模是A4的N/2倍,N为采样点,

STFT短时傅里叶变换,实际上是对一系列加窗数据做FFT。有的地方也会提到DCT(离散傅里叶变换),而DCT跟FFT的关系就是:FFT是实现DCT的一种快速算法。

FFT有个参数N,表示对多少个点做FFT,如果一帧里面的点的个数小于N就会zero-padding到N的长度。每个点对应一个频率点,某一点n(n从1开始)表示的频率为:

第一个点(n=1,Fn等于0)表示直流信号,最后一个点N的下一个点(实际上这个点是不存在的)表示采样频率Fs。

FFT后我们可以得到N个频点,比如,采样频率为16000,N为1600,那么FFT后就会得到1600个点,FFT得到的1600个值的模可以表示1600个频点对应的振幅。因为FFT具有对称性,当N为偶数时取N/2+1个点,当N为奇数时,取(N+1)/2个点,比如N为512时最后会得到257个值。

scipysignalstft(x,fs = 10,window =‘hann’,nperseg = 256,noverlap = None,nfft = None,detrend = False,return_oneside = True,boundary =‘zeros’,padded = True,axis = -1 )

离散时间傅里叶变换,简称:DTFT,是傅里叶变换的一种。它将以离散时间nT,其中,T为采样间隔,作为变量的函数变换到连续的频域,即产生这个离散时间信号的连续频谱,值得注意的是这一频谱是周期的。

离散时间傅里叶变换的性质:

1、周期性;

2、线性性;

3、共轭对称性;

4、卷积特性;

5、相乘特性;

6、对偶性。

我觉的有几个错误的地方需要修改:

因为N=12,所以只有12个数据。所以k=0:12

所以X也有12个数据。每一项都的重新计算。

正确代码如下:

clear;

n=0:11;

x=cos(npi/6);

k=0:11;

w=(pi/12)k;

X = zeros(1,12);

for i=1:12

X(i)=sum(x(exp(-1ini2pi/12)));

end

subplot(2,2,1);plot(w/pi,magX);grid;xlabel('');ylabel('模值 ');title('模值部分');subplot(2,2,2);plot(w/pi,angX);grid;xlabel('pi为单位');ylabel('弧度');title('相角部分');subplot(2,2,3);plot(w/pi,realX);grid;xlabel('');ylabel('实部');title('实部部分');subplot(2,2,4);plot(w/pi,imagX);grid;xlabel('pi为单位');ylabel('虚部');title('虚部部分');

以上就是关于用matlab求离散时间信号的傅里叶变换F(exp(j*w))……全部的内容,包括:用matlab求离散时间信号的傅里叶变换F(exp(j*w))……、傅里叶变换 离散傅里叶变换、傅里叶变换等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9513206.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存