2017-02-01 2 views
0

Я хочу выбрать два минимальных элемента из каждого столбца матрицы. Как отобразить число строк? вход:Как получить количество строк в Matlab?

a1 a2 a3 
    -------- 
b1 2 4 8 
b2 8 5 3 
b3 1 5 9 

выход:

a1 a2 a3   a1 a2 a3 
--------   ---------- 
1 4 3 => b3 b1 b2 
2 5 8   b1 b2 b1 

мой код:

for i = 1:3 
    MINN(:,i)=getNElements(distance(i,:), 1); 
end 

function [smallestNElements smallestNIdx] = getNElements(A, n) 
    [ASorted AIdx] = sort(A); 
    smallestNElements = ASorted(1:n); 
    smallestNIdx = AIdx(1:n); 
end 
+0

Что нужный вход и выход, а именно? Как два значения выбираются из каждого столбца? Что это за «a1» и т. Д.? –

+0

мой вход представляет собой матрицу с строками a1-a3 и столбцами b1-b3. Значения, выбранные getNElements(). –

ответ

0

Позвольте мне угадать, это то, что вы хотите сделать?

x = [2 4 8; 8 5 3; 1 5 9]; % data 
n = 2; % desired number of smallest values per column 
[y, ind] = sort(x,1); % sort each column and get indices of that sorting 
y = y(1:n,:); % keep n smallest 
ind = ind(1:n,:); % keep their indices 

Результаты:

y = 
    1  4  3 
    2  5  8 

ind = 
    3  1  2 
    1  2  1 
Смежные вопросы