clear;
Y = 40;
X = 30;
A = rand(Y, X);
YY = 30;
XX = 40;
tic;
for yy=1:YY
for xx=1:XX
for y = 1:Y
for x = 1:X
B((yy-1) * Y + y, (xx-1) * X + x) = A(y, x);
endendendend
T1=toc
T1 =
4.2194
ones
clear;
Y = 40;
X = 30;
A = rand(Y, X);
YY = 30;
XX = 40;
tic;
x=(1:X)';
xx=x(:, ones(1, XX));
y=(1:Y)';
yy=y(:, ones(1, YY));
B=A(yy, xx);
T2=toc
T2 =
0.0021
repmat
clear;
Y = 40;
X = 30;
A = rand(Y, X);
YY = 30;
XX = 40;
tic;
x=(1:X)';
xx=repmat(x, 1, XX);
y=(1:Y)';
yy=repmat(y, 1, YY);
B=A(yy, xx);
T3=toc
T3 =
0.0017
meshgrid
ほかと異なり、B は正方行列に限られる。
clear;
Y = 40;
X = 30;
A = rand(Y, X);
YY = 30;
XX = 40;
tic;
x=(1:X)';
y=(1:Y)';
[xx, yy] = meshgrid(x, y);
B=A(yy, xx);
T4=toc