Info

此问题已关闭。 请重新打开它进行编辑或回答。

quick syntax question for saving run time

1 次查看(过去 30 天)
jenka
jenka 2012-9-18
关闭: MATLAB Answer Bot 2021-8-20
I have the following:
m1 = rand(5,5)
m2 = rand(5,5)
m3 = rand(5,5)
m4 = rand(5,5)
m3D = cat(3, m1, m2, m3, m4);
% Find the min and a map of what matrix it occurred in.
[min2DImage matrixWhereItOccurs] = min(m3D, [], 3)
Now I would like to have accumlation array where I update that array by adding one to the 3rd dimension with index referenced from matrixWhereItOccurs
sz = sz(m3D);
accum_arr = zeros(sz(1),sz(2),sz(3)
Let's say matrixWhereItOccurs(2,3)=4, then accumm_arr(2,3,4)=accum_arr(2,3,4)+1; I want to do this for ALL elements now without going into loop as in my work the arrays are huge.Could you please help? Thanks

回答(1 个)

Honglei Chen
Honglei Chen 2012-9-18
编辑:Honglei Chen 2012-9-18
ind = sub2ind(sz,repmat((1:sz(1))',1,sz(2)),repmat(1:sz(2),sz(1),1),...
matrixWhereItOccurs);
accum_arr(ind(:)) = accum_arr(ind(:))+1;

此问题已关闭。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by