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!