Speed and Multiple Vectors

1 回表示 (過去 30 日間)
Christopher
Christopher 2014 年 2 月 26 日
編集済み: per isakson 2014 年 2 月 26 日
Is it faster to operate on multiple individual vectors or to put many vectors into a single matrix and simply reference the columns of the resulting matrix?

採用された回答

per isakson
per isakson 2014 年 2 月 26 日
編集済み: per isakson 2014 年 2 月 26 日
This test probably has little meaning. (At least, Matlab is not smart enough to see that I take max of the same vector thousand times.) I guess, the difference is because the vector remains in a cache closer to the cpu. If speed is important, you might want to make a more realistic test.
N = 1000;
M = rand(1e5,N);
v = M(:,1);
tic
for jj = 1 : N
m = max(M(:,jj));
end
toc
tic
for jj = 1 : N
m = max(v);
end
toc
returns
Elapsed time is 0.465941 seconds.
Elapsed time is 0.036675 seconds.
.
One column only:
N = 1000;
M = rand(1e5,N);
v = M(:,1);
JJ = floor(N/2);
tic
for jj = 1 : N
m = max( M( :, JJ ) ); % <<<<<<<<<<<
end
toc
tic
for jj = 1 : N
m = max(v);
end
toc
returns
Elapsed time is 0.340061 seconds.
Elapsed time is 0.046989 seconds.

その他の回答 (1 件)

Star Strider
Star Strider 2014 年 2 月 26 日
I suggest combining them into a single matrix and referencing the columns of the resulting matrix. It’s a lot easier to code and store those results. This works for vectors of equal lengths.
If you encounter the problem of the vectors having different lengths, it°s easy to use a cell array to store them and have them behave essentially as a matrix (except for not being able to use that matrix in matrix computations). It is easy to convert them back to numerical vectors for computation when you need to.

カテゴリ

Help Center および File ExchangePerformance and Memory についてさらに検索

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by