Note: 'functionValues' has the same dimension as 'u' and 'v'. In fact I wish to sum up values of 'functionValues' for different 'R' at each position of 'functionValues'.
How to avoid using 'for' loop
2 ビュー (過去 30 日間)
古いコメントを表示
'u' and 'v' are 401*401 matrices and 'R' is a 401*1 matrix. I have a function which gets 'u' and 'v' vectors and one value of 'R' per iteration and calculates the value of the function. Then after that, I have to sum all these values to get the final result. I wish to achieve my goal without using 'for' loop. Is it possible?
Example:
% Initialize 'u', 'v', and 'R' matrices
u = ...; % 401x401 matrix
v = ...; % 401x401 matrix
R = ...; % 401x1 matrix
functionValues =zeros(401,401);
% Calculate the values of the function for each element
for i=1:numel(R)،
functionValues = functionValues + calculateValue(u, v, R(i)); % 401x401 matrix
end
In fact I wish to avoid using 'for' loop to increase running speed.
回答 (2 件)
Image Analyst
2023 年 10 月 22 日
Just modify youir calculateValue() so that it takes multiple values of R (can handle R being a vector) and returns a vector instead of a single scalar number. Then just call the function -- no for loop needed.
2 件のコメント
Image Analyst
2023 年 10 月 22 日
Then why not
theSum = 0;
for k = 1 : numel(R)،
theSum = theSum + calculateValue(u, v, R(k)); % 401x401 matrix
end
And I agree with @Dyuman Joshi with only a few iterations (401*401) you'd most likely not notice any difference at all. It might be a different story if you had hundreds of millions of elements.
Dyuman Joshi
2023 年 10 月 22 日
However, this assumes that calculateValue() can be vectorized.
And if it can be, I doubt if you will see any noticeable speed increase by using vectorization instead of using a for loop.
5 件のコメント
Dyuman Joshi
2023 年 10 月 22 日
編集済み: Dyuman Joshi
2023 年 10 月 25 日
@moh mor, is there still a problem?
Does it work properly? And did you check the speed of the two methods for comparison?
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!