加 hanning窗 做 FFT 程序 怎么写 用matlab怎么写这个

加 hanning窗 做 FFT 程序 怎么写 用matlab怎么写这个,第1张

DISP(“请输入一个128点的序列中');

,II = 1:128%的用户都可以自由进入序列

(2)=输入(['X('num2str(二) ')=']);

结束

%整体采用原位计算

米= nextpow2(X),N = 2 ^米;找到x对应的长度的功率最低的子米

如果长度(x)<N

所述= [的x,零(1,N-长度(x))];%,如果x的长度不是一个功率为2,补0至2的整数次幂

结束

NXD = BIN2DEC(fliplr(DEC2BIN([1:N] -1,M)))+1%寻求1:2 ^ M系列数反向

= X(NXD);%递减x到y的初始值

毫米= 1:M%DFT m次基2分解,由左到右,每个分解DFT *** 作共做的m级蝶形运算,每一级有2 ^(毫米-1)蝴蝶结

的Nz = 2 ^毫米; u = 1时;%旋转因子u被初始化为WN ^ 0 = 1

WN = exp(-I 2 PI /新西兰);%分解DFT因子WN = exp(-I 2 PI /新西兰)

对于j = 1:新西兰/ 2%跨度的蝶形运算的时间间隔内,在此期间第一毫米级运算需要蝴蝶

2 ^(毫米-1)K = J:NZ:N%的蝴蝶形状计算跨越间隔NZ = 2 ^毫米 /> KP = K / 2 + NZ;主体之间的关系的两个因子的相应单元%蝶形运算

吨= y(上KP)ü;%的蝶形运算的乘积项

Y(KP )= Y(K)-T%蝶形运算

Y(K)= Y(K)+ T%的蝶形运算

U = U WN结束;旋转因子骑一个的基本DFT因素WN

结束

结束

Y1 = FFT(X)%与直接调用函数后的经营业绩相比,自己编译FFT

我也不是太懂,这是我从help 里面给你找的一个例子,可以参考一下。

clc;

t = 0:0001:06;

x = sin(2pi50t)+sin(2pi120t);

y = x + 2randn(size(t));

subplot(2,1,1)

plot(1000t(1:50),y(1:50))

title('Signal Corrupted with Zero-Mean Random Noise')

xlabel('time (milliseconds)')

subplot(2,1,2)

Y = fft(y,512);

Pyy = Y conj(Y) / 512;

f = 1000(0:256)/512;

plot(f,Pyy(1:257))

title('Frequency content of y')

xlabel('frequency (Hz)')

% 下面的程序里Pn 存的就是基波相位 如果求的是谐波相位,稍微修改即可

x = load('datadat'); %load 数据

fs=10000; % 采样频率,自己根据实际情况设置

N=length(x); % x 是待分析的数据

n=1:N;

%1-FFT

X=fft(x); % FFT

X=X(1:N/2);

Xabs=abs(X);

Xabs(1) = 0; %直流分量置0

[Amax,index]=max(Xabs);

if(Xabs(index-1) > Xabs(index+1))

a1 = Xabs(index-1) / Xabs(index);

r1 = 1/(1+a1);

k01 = index -1;

else

a1 = Xabs(index) / Xabs(index+1);

r1 = 1/(1+a1);

k01 = index;

end

Fn = (k01+r1-1)fs/N; %基波频率

An = 2pir1Xabs(k01)/(Nsin(r1pi)); %基波幅值

Pn = phase(X(k01))-pir1; %基波相位 单位弧度

Pn = mod(Pn(1),pi);

用递归应该比较容易写的, 虽然效率差一些

大概思路:

用一个函数做准备:

把数组排列成到位序

计算Wn

对整个数组调用 do_fft函数

do_fft函数:

如果需要计算的序列长为2,两个位置分别写为x[0]+x[1]和x[0]-x[1]然后返回

对需要计算的序列前半部分调用do_fft函数

对需要计算的序列后半副本调用do_fft函数

for (int i=0; i<length/2; ++i) {

x[i+length/2] = Wi;注意这里需要先确定需要的是哪个W

x[i]和x[i+length/2] 分别改写为 x[i]+x[i+length/2]和x[i]-x[i+length/2]

}

这样两个函数应该就差不多了

MSP430-FFTB6638 你要说明单片机的型号。 都属于MSP430系列的,大致使用起来就不会差很多,有些寄存器命名、包含模块多少等区别。 P4DIR|=BIT1+BIT2+BIT3:这句是将P41 P42 P43这3个IO口的方向置为输出。 MSP430不同于51,需要先设置输入输出

以上就是关于加 hanning窗 做 FFT 程序 怎么写 用matlab怎么写这个全部的内容,包括:加 hanning窗 做 FFT 程序 怎么写 用matlab怎么写这个、你好,我要用matlab对x(t)=exp(-t)u(t)做FFT的频谱分析,程序应该如何写、FFT测量相位具体算法。在matlab中如何使用进行编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9840796.html

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

发表评论

登录后才能评论

评论列表(0条)

保存