2016-04-18 11 views
1

У меня есть код, написанный в Matlab, у меня есть матрица A 3 x 3. Как я могу получить число блоков A> th и сохранить его в Matlab. И я просто хочу получить значение следующего значения «1», поэтому я должен получить только 1 блок [1 2], что-то не так в моем коде? пожалуйста, помогите ThankYou такКак получить правильные блоки в массиве Matlab

вот мой код

th = 0.1; 
A =[1 0.2 0.03; 0.2 1 0.03; 0.2 0.03 1]; 
index = 0; 

for i = 1:size(A,1) 
    for j = 1:size(A,2) 
     if i == j 
      [i j] = find(A > th) 
      index = index + 1; 
      hasil = [i j]; 
     end 
    end 
end 

В результате, если я запускаю свою программу: (1: 1), (1 2), (2 1), (2 2), (3 1), (3 3)

+0

Мои петли должны достигнуть? И вы не должны перезаписывать индексы цикла внутри циклов ('i',' j'). – David

ответ

1

ind2sub можно использовать для преобразования линейного индекса в индекс.

[hasilx,hasily] = ind2sub(size(A), find(A>th)); 
[hasilx hasily] 

ans = 

1  1 
2  1 
3  1 
1  2 
2  2 
3  3 

find может также непосредственно вернуть вам индексы:

[hasilx,hasily]=find(A>th); 
+1

'[hasilx, hasily] = find (A> th);' дает тот же результат. – David

+0

@ David Спасибо, я обновил свой ответ. – Bernhard

+0

OP фактически использовал 'find' правильно в своем вопросе, поэтому я не уверен, что делает остальная часть их кода. – David