How to vectorize the following code?

1 次查看(过去 30 天)
I have an nx1 array f and a 3xm array g. I want to carry out the following insertion, where I pick index pairs from the first two rows of g and values from the last row of g:
for int i = 1:m
f(g(1:2,i)) = g(3,i);
end
How can I vectorize the above code? The simple
f(g(1:2,:)) = g(3,:)
does not work and returns the following error
Unable to perform assignment because the left and right sides have a different
number of elements.
Any suggestions?

采纳的回答

Walter Roberson
Walter Roberson 2021-5-10
f(g(1:2,:)) = g([3 3], :);
  3 个评论
Walter Roberson
Walter Roberson 2021-5-10
Looks okay. Another way would be
f(g(1:2,:)) = kron([1;1], g(3,:).*g(4,:));

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by