对排序数组使用逻辑运算(逻辑运算后保持排序数组)

时间:2016-06-20 07:44:29

标签: matlab boolean logical-operators

我有以下问题。为了提高我的代码速度,我试图将大部分脚本编写为逻辑操作,而不是for-loops等。

问题

我有一个排序数组,我想保持它排序,因为我需要它作为下一个函数的输入排序。为此,我使用了以下代码:

target_level=sortrows(target_level,-9);
for i= 1:length(target_level);
   ii=find(BML(:,1)==target_level(i,1));
   targets(1,i)=ii;
end 

所以我想找到"target_level(:,1)"的每个元素的矩阵BML的索引,同时保持排序。为了松开for循环并将其写为逻辑操作,我尝试了:

targets=ismember(BML(:,1),target_level(:,1));
targets=find(targets(:,1)==1);

它得出了相同的结果,唯一的问题是我放弃了我在一个我真的不想保留的变量上应用的排序。

问题

有没有办法在使用逻辑运算时保持排序?

1 个答案:

答案 0 :(得分:1)

要在保持排序的同时获取索引,您只需使用ismember的第二个输出:

[~, targets] = ismember(BML(:,1),target_level(:,1));

最佳,