【问题标题】:Matlab: Fourier coefficientsMatlab:傅立叶系数
【发布时间】:2019-10-13 15:54:05
【问题描述】:

我的代码有问题。我的目标是通过通道矩阵获得傅立叶系数。然后使用 fft 并检查我的两个结果是否相同。但我得到不同的结果,我不明白为什么?

clear all;
N=[50];
for k=1:length(N)
    Dx=1/(N(k)-1);
    x=linspace(0,1-Dx,N(k));

    for j=1:N(k)
        f(j,k)=100.*exp(-20*x(j))*(x(j)-(x(j)).^2);
    end

    for j=1:N(k)
        for m=1:N(k)
            Mphsp(j,m)=exp((2*pi*i*(m-1)*(j-1))/N(k));
            Mspph(j,m)=(1/N(k)).*exp(-(2*pi*i*(m-1)*(j-1))/N(k));
        end
    end
    Idd=Mphsp*Mspph;

    coeff(1:N(k),k)=Mspph*f(1:N(k),k);

    coeff2(1:N(k),k)=fft(f(1:N(k),k));

    verf(1:N(k),k)=coeff2(1:N(k),k)-coeff(1:N(k),k); 
end

如果有人有任何想法?请。

【问题讨论】:

    标签: matlab fft


    【解决方案1】:

    你的 for 循环是错误的。 length(N) = 1,因为 N 是一个 1x1 矩阵。

    clear all;
    N=[50];
    for k=1:length(N)
    

    我想你想做类似的事情

    N = zeros(50, 1);
    for k = 1:50
      N(k) = k; 
    end
    
    for k=1:length(N)
    ...
    

    【讨论】:

    • 不,N是一个包含点数的向量。向量 x 对应于我的 x 轴,从 0 到 1 排除在 0 到 1 之间的 N(k) 个点。
    • 你的 for 循环只有一次迭代,因为 length(N) = 1 如果你在 Matlab 中这样做for k=1:length(n) k end 结果将是k =1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2016-03-25
    • 1970-01-01
    • 2019-12-28
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多