对于矩阵中的循环

时间:2014-01-05 02:44:00

标签: arrays matlab

我是Matlab的新用户,我写了这个脚本。最后,我必须操作下面的公式。对于y(j,:)值,它给了我正确的答案,但是当我第二次使用for循环时,z(i,:)的值给了我错误的答案。我想逐个元素乘法我通过计算它来检查答案在计算器上。有人可以看看为什么我得到z(i,:)

的错误值
% formula I(Q,t) = A exp(-t/tau_beta)^beta    

% beta
beta= [0.4 0.6 0.8 1];   
tau_beta = [1 10 100 1000];
t=[0:1:1e4];

% division of (t/tbeta)
for j= 1:1:4
    y(j,:) = t/tau_beta(j);
    for i = 1:1:4
        z(i,:) = y(j,:).^beta(i);
        A =1;
        I_temp(i,:) = A*exp(-z(i,:));
        I(i,j,:) = I_temp(i,:);
    end
end

2 个答案:

答案 0 :(得分:1)

z(i,:) = exp(-y(j,:)).^beta(i);

答案 1 :(得分:1)

通过使用函数meshgrid(对于由2个参数组成的空间)或ndgrid(对于任何维度的空间),可以更容易地评估某些参数空间上的函数。这些基本上是一种方便的方法,可以创建所需的repmat来创建用于评估函数的空间。

像这样使用:

[bm,tbm,tm] = ndgrid(beta,tau_beta,t);
I = A*exp(-tm./tbm).^bm;

ndgrid创建跨越其输入参数空间的矩阵,使用这些矩阵进行任何计算就像评估输入参数的所有可能组合的函数一样。

使用bsxfun可以消除首次计算网格时使用的额外内存,但很快就会难以辨认。