Avoid loops with matrices.
2 views (last 30 days)
Show older comments
Could anyone help me with avoiding loops at these situations (if it is possible):
a = [1 2 3 4 5 4 3 2 1 2 3 4 5];
b = [2 3 4 5 4 3 2 1 2 3 4 5 4];
q = 1:13;
c = cell(5,5);
for i = 1:numel(a)
c{a(i), b(i)} = [c{a(i), b(i)}, q(i)];
end
also
for i = 1:numel(a)
c{a(i), b(i)} = unique(c{a(i), b(i)})'
end
For me it is necessary to save every sec! Tnx!
0 Comments
Accepted Answer
Stephen23
on 15 May 2015
Edited: Stephen23
on 15 May 2015
You can use accumarray to get the same output, although the for loop is still about twice as fast as accumarray (for that data). Which method is fastest may depend on the data size.
>> accumarray([a',b'], q, [5,5], @(x){x})
ans =
[] [2x1 double] [] [] []
[8] [] [2x1 double] [] []
[] [ 7] [] [2x1 double] []
[] [] [ 6] [] [2x1 double]
[] [] [] [2x1 double] []
0 Comments
More Answers (0)
See Also
Categories
Find more on Numeric Types in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!