2013-06-25 52 views
0

我有一個包含多個列的數據集。另外,我有一個向量,它具有與數據集的一列相似的數據。我需要對整個數據集(行)進行排序,以使數據集中與該向量具有相似數據的列是相同的。我如何在Matlab中做到這一點?非常感謝。Matlab:根據矢量對數據集進行排序

+0

您可以添加一個小例子嗎? – Nick

+0

@rize當你說_dataset_時,你的意思是來自統計的一組普通的值(例如矩陣)或[_dataset object_](http://www.mathworks.com/help/stats/datasetclass.html)工具箱? –

+0

@EitanT我的意思是來自統計工具箱的數據集對象。我知道這個詞含糊不清,對此抱歉,未來會更加精確。感謝您的評論。 – rize

回答

1

你需要比較的數據集和向量的列生成索引變量。 intersect函數提供了一個方便的方法來執行此操作:

[intersection_set,iv1,id1]=intersect(vector1,dataset1(:,column_to_sort)); 
dataset1=dataset1(id1,:); 
+0

其實我正在尋找的是我可以保留向量中的行的順序,並根據這個排序矩陣,即我使用相交'setOrder'參數的'stable'值。謝謝! – rize

+1

您可以通過在'intersect'的兩個輸入參數之後添加','stable''來實現 - 第一個輸入的順序將保持穩定。 –

+1

是的,這就是我所做的。謝謝! – rize

1

嘗試這樣:

% Preparation 
A = your_column_vector; 
B = your_data_matrix; 

C = [A; B]; 

% Calculation 
D = sortrows(C, 1) 

% Clean up 
your_sorted_matrix = D(:, 2:end)