在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: 433309

求MATLAB写的FFT源程序!

[复制链接]
发表于 2012-7-20 00:32:08 | 显示全部楼层
只要分清前向和反向,使用FFTW计算FFT还是很方便的
发表于 2015-5-29 15:57:31 | 显示全部楼层
回复 5# king7862591


   请问,这个改成基4怎么改啊?
发表于 2015-9-29 21:07:27 | 显示全部楼层
function  X = radix2(x,inverse)
x = [1 1 1 1 0 0 0 0 ];
inverse = 1;
switch inverse
    case 1
xcheck=x;
p=nextpow2(length(x));
x=[x zeros(1,(2^p)-length(x))];
N=length(x);
M=N/2;                                                                     % Index Helping for Controlling range of indices of the Butterfly at Each Stage (Shrinking)
for stage=1:log2(N);                                                       % No of times decimation has to occur
         for index=0N/(2^(stage-1)))N-1);                              % Adjusting the index variations of the butterfly in each stage
             for n=0:M-1;                                                  % Within a stage, for a given index (single) as reference, develop a local Butterfly Index
                      a=x(n+index+1)+ x(n+index+M+1);
                      AA = exp((-j*(2*pi)/N)*(2^(stage-1))*(n));
                      a = fi(AA);
                      b=(x(n+index+1)- x(n+index+M+1)).* AA;
                      x(n+1+index)=a;
                      x(n+M+1+index)=b;                                    % In place Computation
             end;
         end;
M=M/2;                                                                     % Used for creating Butterfly Pairs (INDEXing the wings) (Shrinkage)
end;
X=bitrevorder(x);                                                          % Bit reversing X[k] to obtain X[k] 0<k<N-1
% Ycheck=fft(xcheck,N)
                                                                           % Cross Check the answer using inbuilt FFT
    case 2
xcheck=x;      
x=x';
p=nextpow2(length(x));
x=[x zeros(1,(2^p)-length(x))];
N=length(x);
M=N/2;                                                                     % Index Helping for Controlling range of indices of the Butterfly at Each Stage (Shrinking)
for stage=1:log2(N);                                                       % No of times decimation has to occur
         for index=0N/(2^(stage-1))):(N-1);                              % Adjusting the index variations of the butterfly in each stage
             for n=0:M-1;                                                  % Within a stage, for a given index (single) as reference, develop a local Butterfly Index
                      a=x(n+index+1)+ x(n+index+M+1);
                      b=(x(n+index+1)- x(n+index+M+1)).*exp((-j*(2*pi)/N)*(2^(stage-1))*(n));
                      x(n+1+index)=a;
                      x(n+M+1+index)=b;                                    % In place Computation
             end;
         end;
M=M/2;                                                                     % Used for creating Butterfly Pairs (INDEXing the wings) (Shrinkage)
end;
X=bitrevorder(x) ;                                                         % Bit reversing X[k] to obtain X[k] 0<k<N-1
X = X'/N
end
% Ycheck=ifft(xcheck,N)                                                        
                                                                           % Cross Check the answer using inbuilt IFFT
end
发表于 2015-9-30 13:42:16 | 显示全部楼层
clc
clear
L1=0.01;
w=1;
X=zeros(66,2);
R1=zeros(66,1);
L=[1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.1;1.1;1.1;1.1;1.1;1.1;2;2;2;2;2;2;  1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;  1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;1.6;    1;1;1;1;1;1;1;1;1;1.2;1.2;1.2]
P=[40;40;40;40;80;80;80;80;40;40;40;80;80;80;40;40;40;80;80;80;8;8;8;8;15;15;15;15;40;40;40;40;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;5;10;20;30;40;10;20;30;10;20;30;10;20;30;10;20;30]
D=[0.1;0.13;0.2;0.4;0.1;0.13;0.2;0.4;0.1;0.2;0.4;0.1;0.2;0.4;0.1;0.2;0.4;0.1;0.2;0.4;0.1;0.13;0.2;0.4;0.1;0.13;0.2;0.4;0.1;0.1;0.1;0.1;0.008;0.008;0.008;0.008;0.008;0.008;0.008;0.008;0.008;0.009;0.01;0.011;0.012;0.013;0.014;0.015;0.016;0.008;0.008;0.008;0.008;0.008;0.008;0.008;0.008;0.008;0.008;0.008;0.01;0.01;0.01;0.01;0.01;0.01]
L2=[0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.6;0.6;0.6;0.6;0.6;0.6;1.2;1.2;1.2;1.2;1.2;1.2;0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.3;0.5;0.7;1.1;0.5;0.6;0.7;0.8;0.9;1;1.1;1.2;1.3;0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.6;0.6;0.6;0.4;0.4;0.4;0.4;0.4;0.4;0.8;0.8;0.8]
R=[402;331;249;200;719;589;439;309;282;187;147;498;323;250;520;309;209;934;549;365;115;97;76;58;188;156;120;88;166;245;324;478;467;563;656;749;842;935;1029;1122;1215;777;721;673;631;591;558;529;504;571;1018;1806;2500;3168;680;1204;1664;455;803;1107;391;692;955;776;1380;1911]
for i=1:66
    %求R1
    m=fix(3*L(i,1)/(pi*D(i,1)));
    a=0;
    for j=1:m
        a=a+(1-tanh(j*pi*D(i,1)/L(i,1)))/(j*j)*sin(j*pi*(L2(i,1)-L1)/2/L(i,1))*sin(j*pi*(L2(i,1)+L1)/2/L(i,1))*sin(j*pi*L2(i,1)/L(i,1));
    end
    a=4/pi/pi*a;
    R1(i,1)=(L2(i,1)-L1)/(w*L(i,1))/((L1+L2(i,1))/L(i,1)*(1-L2(i,1)/L(i,1))-a);

    P(i,1)=log(P(i,1));

    R(i,1)=log(R(i,1))-log(R1(i,1));
end
% X=[P D];
R1
X=[ones(size(P)) P];
b=regress(R,X)

求大神看看这个程序结果为什么是虚数
发表于 2023-5-19 11:35:10 | 显示全部楼层
學習學習
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

如何优化 SoC 设计

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-19 14:53 , Processed in 0.019645 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表