如何制作二维矩阵w/o?

How to make a two-dimensional matrix w/o for?

我现在正在为二维图的矩阵编码。 虽然是这么简单的方程式,但是执行起来却要花很多时间。我认为它可以变得更快。 特别是,我认为可以简化“for - command term”。 我怎样才能简化这个?

q=1:1:30
x(q)=330+q*0.3
F=1:30:8970
T=x(1)-0.3:0.001:x(30)+0.3
n=size(T,2)
k=1:1:n
for a=1:1:30
I(a,k)=F(a)*exp(-2.*(T(:,k)))
end
happy=sum(I)
plot(k,I)

我会说时间是用来打印结果的。尽量在每行末尾使用;,这样会加快计算速度。

您也可以通过以下逐元素计算来替换for循环:

a = (1:1:30).';
aux = repmat(exp(-2.*(T(:,k))), length(a), 1);
a = repmat(a, 1, length(k));
I = a.'.*aux.';