FFT matlab 算法 实现

function [ ret_val ] = FFT1024( vector )
%UNTITLED8 此处显示有关此函数的摘要
%   此处显示详细说明
%UNTITLED7 此处显示有关此函数的摘要
%   此处显示详细说明
%======================================
%ret_val 为fft变换后返回的频域序列
%N 为点数
%vector 为变换前的序列
%======================================
vector_size = size(vector);
N = vector_size(2);
c = zeros(1,N);
%
%变址运算
%
j1 = 0;
for i = 1 : N
	if i < j1 + 1
        tmp = vector(j1 + 1);
        vector(j1 + 1) = vector(i);
        vector(i) =tmp;
    end
	k = N / 2;
	while k <= j1
        j1 = j1 - k;
        k = k / 2;
    end
	j1 = j1 + k;
end
%
%蝶形运算
%
%%%%%%%计算 N 的
dig = 0;
k = N;
while k > 1
	dig = dig + 1;
	k = k / 2;
end
%%%%%%
% m 为级; dist 为蝶形运两点的距离; n 为蝶形运算组数
%
n = N / 2;
for m = 1 : dig
	dist = 2 ^ (m - 1);
	idx = 1;
	for i = 1 : n
        idx1 = idx;
        for j1 = 1 : N / (2 * n)
            r = (idx - 1) * 2 ^ (dig - m);
            coef = exp(j * (-2 * pi * r / N));
            tmp= vector(idx);
            vector(idx)= tmp + vector(idx + dist) * coef;
            vector(idx + dist)= tmp - vector(idx + dist) * coef;
            idx = idx + 1;
        end
        idx = idx1 + 2 * dist;
    	end
	n = n / 2;
end
 
 
ret_val = vector;
end
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东枫科技

打赏即可咨询本帖子的技术问题

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值