matlab: изменить оси с px на um

Простой вопрос...

У меня есть матрица, давайте say A = magic(512), Я отображаю это как imagesc(A), Теперь я знаю, что 1px равен, скажем, x=15 [мкм]. Как отобразить значения осей в мкм вместо px? Спасибо

2 ответа

Решение

Что вы хотите сделать, это изменить XTickLabel а также YTickLabel, Это должно сделать трюк:

A = magic(512);
imagesc(A)
set(gca,'XTickLabel',15*get(gca,'XTick'));
set(gca,'YTickLabel',15*get(gca,'YTick'));

Вы используете тот факт, что XTick а также XTickLabel обычно одинаковы, и таким образом вы избегаете необходимости конвертировать символы из XTickLabel на номера в первую очередь. (То же самое касается Y, конечно).

Часто мне нравится видеть две шкалы. Я делаю это, накладывая вторую ось.

Snippet:

A = magic(512);
clf
imagesc(A)
a1 = gca;
xlabel('px');ylabel('px');
set(a1,'Box','off');
a2 = axes('Color','none','XLim',get(a1,'XLim')/15,'YLim',get(a1,'YLim')/15,...
    'XAxisLocation','top','YAxisLocation','right',...
    'Position',get(a1,'Position'),'YDir','reverse',...
    'XColor','r','YColor','r');
xlabel('um');ylabel('um');

Имеет преимущество в a2 Вы можете рисовать, используя координаты X и Y в блоке [um],

Другие вопросы по тегам