2014-11-12 3 views
2

У меня есть матрица 418x284, заполненная 0s и 1s, и вы хотите построить график, где точки - все местоположение его, а координаты x и y - от 0 до 284, от 0 до -418.
Как я могу это сделать? Благодарим за оказанную помощь!Как построить координаты ненулевых элементов в матрице?

ответ

1

Позвольте mat вашей двоичной матрицей. Вы можете получить координаты ненулевых элементов с помощью find:

[I,J] = find(mat) 
plot(I, J); 

Примечания, что конвенция для осей отличаются от образов и сюжетов в Matlab. Вышеприведенный код предполагает, что I - это индекс строк (сверху вниз), а J - индекс столбцов (слева направо).

Рабочий пример:

mat=eye(10); 
[I, J]=find(mat); 

subplot(1,2,1), imshow(mat) 
subplot(1,2,2), plot(I, J); 

Результат:

  Binary image        Non-zero pixels location 

enter image description here

+0

Да, спасибо, это именно то, что я искал! – user2444127

+0

@ пользователь2444127 приветствуется. –

3

Вы также можете использовать spy(), но вам нужно настроить клеща этикетки.

Предположим, у вас есть следующая матрица:

A = rand(418,284)>.7; 

Тогда:

spy(A) 

enter image description here

Регулировка метки:

yticks = get(gca, 'YTick'); 
yticks(yticks ~= 0) = -yticks(yticks ~= 0); 
set(gca, 'YTickLabel', yticks) 

enter image description here

+0

Благодарю вас за вашу помощь! – user2444127

Смежные вопросы