MatLab:大量输入matix元素?矢量化解决方案?

时间:2017-01-22 15:29:43

标签: matlab matrix

我有一些MatLab函数可以计算小波双谱。在这个中,矩阵被初始化,并且在嵌套for循环中计算它们之后将值(复数)放入其中。然而,当我计算整个函数时,我看到花费了三分之一的时间(~1000s)将这些值添加到矩阵中。

矩阵大小为(1025 x 1025),因此输入约1百万个值。如果我生成随机数并以类似的方式将它们放在矩阵中,则需要的时间少于I秒。那么为什么我的代码占用了这么多时间呢?

任何人都可以帮助我吗?

我已经包含了一些代码示例。它将大约百万左右的值放入Bisp矩阵中,耗时超过1000秒。 WT是包含复数值的矩阵,freq是包含与WT矩阵的第一维匹配的所有值的向量。

`

nfreq = 1025;
Bisp = nan(nfreq, nfreq);
Norm = nan(nfreq, nfreq);

for j = 1 : nfreq
    for k = 1 : nfreq 
        f3 = freq(j) + freq(k);
        if f3 <= freq(end)
            idx3 = find(freq <= f3);
            idx3 = idx3(end);
            x = (WT(j, :) .* WT(k, :)) .* conj(WT(indx3, :));
            bb = nansum(x);           
            norm1 = nansum(abs(WT(j, :) .* WT(k, :)).^2);
            norm2 = nansum(abs(WT(idx3, :).^2));
            a = sqrt(norm1 * norm2);
            Norm(j, k) = a;
            Bisp(j, k) = bb;      **This takes about 1000seconds**

       end
    end
end

`

0 个答案:

没有答案