Matrix operations without for structure
1 回表示 (過去 30 日間)
古いコメントを表示
I'm making a program in Matlab and now I am trying to make it run faster.
In one step I need to make operations in a matrix with more than 60000 rows and 2 columns. Now, I have a for structure to go to every line and make the following operation: (line-mean)*s*(line-mean)'
line is the line that is selected in each iteration, mean, is the result of the mean of each column, and s is a matrix 2x2.
I would like to know if it's possible to make this operation without a for structure, so that the program runs faster.
Thanks for your atention
0 件のコメント
回答 (2 件)
Rick Rosson
2012 年 4 月 21 日
Please try:
M = 60e3;
N = 2;
A = rand(M,N);
s = rand(N,N);
mu = ones(M,1)*mean(A);
X = A - mu;
R = X*s*X';
HTH.
Teja Muppirala
2012 年 4 月 22 日
M = 60e3;
N = 2;
A = rand(M,N);
s = rand(N,N);
Am = bsxfun(@minus,A,mean(A)); %subtract the column means
V = sum((Am*s).*Am,2); % Do the matrix operation
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!