【发布时间】:2019-12-28 00:00:08
【问题描述】:
我希望您能帮助提高(也许通过矢量化)下面的 Matlab 代码的效率。下面的代码基本上做了以下事情:取一个行向量A;考虑这样一个行向量的最大元素,例如,让i 和j 他们的位置;构造两个列向量,第一个全为零,但1 位于i,第二个全零但1 位于j。
这是我对循环的尝试,但它看起来比需要的要复杂。
clear
rng default
A=[3 2 3];
max_idx=ismember(A,max(A));
vertex=cell(size(A,2),1);
for j=1:size(max_idx,2)
if max_idx(j)>0
position=find(max_idx(j));
vertex_temp=zeros(size(A,2),1);
vertex_temp(position)=1;
vertex{j}=vertex_temp;
else
vertex{j}=[];
end
end
vertex=vertex(~cellfun('isempty',vertex));
【问题讨论】:
-
find(max_idx(j))在您的代码中始终返回 1。你只需要position=j。
标签: matlab