Using logical operation on sorted array (keep sorted array after logical operation)
Using logical operation on sorted array (keep sorted array after logical operation)
想法
我有以下问题。为了提高我的代码速度,我试图将我的大部分脚本编写为逻辑操作而不是 for 循环等。
问题
我有一个排序数组,我想保持它排序,因为我需要将它排序为下一个函数的输入。为此,我使用了以下代码:
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);
它得出了相同的结果,唯一的问题是我松散了我应用在一个我真的不想保留的变量上的排序。
问题
有没有办法在使用逻辑运算的同时保持排序?
要在保持排序的同时获取索引,您可以简单地使用 ismember
的第二个输出:
[~, targets] = ismember(BML(:,1),target_level(:,1));
最佳,
想法
我有以下问题。为了提高我的代码速度,我试图将我的大部分脚本编写为逻辑操作而不是 for 循环等。
问题
我有一个排序数组,我想保持它排序,因为我需要将它排序为下一个函数的输入。为此,我使用了以下代码:
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);
它得出了相同的结果,唯一的问题是我松散了我应用在一个我真的不想保留的变量上的排序。
问题
有没有办法在使用逻辑运算的同时保持排序?
要在保持排序的同时获取索引,您可以简单地使用 ismember
的第二个输出:
[~, targets] = ismember(BML(:,1),target_level(:,1));
最佳,