我有一个计算,我想逐个元素地执行。
foreach i from i=1 to i=N
RES_i = det(A - V_i * I) // notice V_i and RES_i are SCALARS
其中例如A是3x3,I是3x3,V和RES是1xN。
基本上我所做的就是
idx=1:81
res(idx) = det( A - V(idx)*I );
但是,这会得到整个V并乘以I。
这似乎是一个简单的例子,但我无法弄清楚如何对其进行矢量化......
感谢。
答案 0 :(得分:0)
首先,这不是Matlab代码......
第二:我认为你把“矢量化”与一个隐式循环混淆了。矢量化意味着使用矢量/矩阵/张量表示法和运算将操作立即应用于整个数组。然而,你想要的是一个隐含的for-each类型循环,并且它完全有理由让Matlab抱怨它。
除了明确地写出来之外别无他法:
res = zeros(81,1);
for ii = 1:numel(res)
res(ii) = det(A-V(ii)*I);
end
答案 1 :(得分:0)
您可以使用执行逐个元素的操作。与选择的运营商一起。例如:
Element-by-element multiplication: .*
Element-by-element division: ./
依旧......这就是你的意思吗?