2015-06-29 3 views
1

Допустим, у меня есть матрицаПоиск матрицы по строкам и столбцам

dataSet = [400,300,200,100,200,300,400; 
      1, 2, 3, 4, 5, 6, 7] 

Это даст мне массив 2х7 с большими числами в строке 1 и меньше по строке 2.

Допустим, Мне дали номер 200 и попросили найти, что все числа ниже 200. Ответ 3 и 5, потому что они оба соответствуют 200, но как я могу закодировать это в моем скрипте?

ответ

2
>> dataSet(2,dataSet(1,:) == 200) 

ans = 

    3  5 
0

Это то, что вы хотите?

[t, ~, u] = unique(dataSet(1,:)); 
result = accumarray(u, dataSet(2,:).', [], @(x) {x.'}); 
result = [num2cell(t).' result]; 

В вашем примере, это дает:

>> result 
result = 
    [100] [   4] 
    [200] [1x2 double] 
    [300] [1x2 double] 
    [400] [1x2 double] 

с

result{2,2} = 
    3  5 
result{3,2} = 
    2  6 

и т.д.

+0

Это делает работу для моей ситуации, однако для моих конкретных потребностей M.S. был ответ, который работал немного лучше. Спасибо вам за это! – FactorialTime

+0

Да, снова прочитав ваш вопрос, ответ m.s. кажется гораздо более подходящим –