对于以下八度代码段:
stepTerm = zeros(3,1);
for i = 1:3
stepTerm(i,1) = some97ElementRowVector * some97by3Matrix(:,i);
end
Run Code Online (Sandbox Code Playgroud)
是否可以在没有for循环的情况下编写上面的代码?
怎么了?
stepTerm = (97ElementRowVector * 97by3Matrix).';
Run Code Online (Sandbox Code Playgroud)
?
在MATLAB上,
clc
N = 1e6;
a = rand(1,97);
B = rand(97,3);
tic
for ii = 1:N
stepTerm0 = sum(bsxfun(@times, a.', B)).';
end
toc
tic
for ii = 1:N
stepTerm1 = (a*B).';
end
toc
max(abs(stepTerm0 - stepTerm1))
Run Code Online (Sandbox Code Playgroud)
给
Elapsed time is 12.114381 seconds.
Elapsed time is 1.827436 seconds.
ans =
2.4869e-014
Run Code Online (Sandbox Code Playgroud)