作者oversky0 (oversky0)
看板MATLAB
标题Re: [运算] for loop改用matric写法?
时间Mon May 28 22:31:20 2012
※ 引述《captainVince (purple rain N )》之铭言:
: 请问一下
: 假设有一段code事降子
: for k=1:16
: for m=1:16
: A(k,m)=B(m)-C(k);
: end
: end
: A是一个16x16 matrix
: B, C是一个 1x16 Array
: 可以不要用for loop就可以完成吗?
: 因为时间时再是太慢了...
: 谢谢
在我的电脑上用 repmat 比先宣告 A 矩阵还慢,
而且 repmat 比较吃记忆体。
MATLAB Version 7.4.0.287 (R2007a)
clear all;
clc;
N = 1000;
B = rand(N,1);
C = rand(N,1);
tic;
A1 = zeros(N,N);
for k=1:N
for m=1:N
A1(k,m)=B(m)-C(k);
end
end
t1 = toc
% clear A1;
tic;
A2 = repmat(B.',N,1) - repmat(C,1,N);
t2 = toc
isequal(A1,A2)
t1 =
0.0621
t2 =
0.1210
ans =
1
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.158.241