这是事情
我有一个大矩阵,我需要根据一些列对其进行排序:
B是大矩阵
A=sortrows(B,[1 4 9 10]);%Just a sample input vector
到目前为止还可以。但是在下一步中(我正在迭代这个函数)我将需要这个:
A=sortrows(B,[1 4 9 10 16]);%Notice I just add a new column to input vector
在下一次迭代中同样的故事
所以我的问题是我可以在每次迭代中使用以前的排序结果吗?
编辑 - - - - - - - - - - - - - - - - - -
对于那些熟悉的人来说,主要问题是特征选择任务。我有一个矩阵,可以将其命名为 IS。你可以在这里找到一个。在 IS 中,行是对象,列是特征。任务是评估基于特征的子集一个适应度函数。我不会进入适应度函数,因为它不相关,但作为一个黑盒,输入和输出是:
function fitnessValue=fitness(inputMatrix,featureSubset)
end
inputMatrix 必须根据 featureSubset 进行排序,但根据特征集的任何排列进行排序可以做到这一点
现在主要算法
featureSubset=[];
iter=1;
while iter<iterMax and fitnessValue<1
j=chooseFeature(IS,featureSubset) %select a feature that has not been selected yet based on some parameters
featureSubset=union(featureSubset,j);%Add j to selected features
IS=sortrows(IS,featureSubset);%Here is the problem
fitnessValue=fitness(IS,featureSubset)
iter=iter+1;
end
就是这样,在每次迭代中,我一个一个地添加特征并评估新的特征子集,但为了做到这一点,我需要根据特征子集对 IS 矩阵进行排序。正如我在上一次迭代中所说,我还根据 featureSubset 对整个矩阵进行排序(1:end-1) 我相信我可以使用以前的排序结果,并且以某种方式仅根据当前选择的特征对 IS 进行排序并获得相同的结果。
PS如果有人可以解释sortrows的算法,我将不胜感激