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]
,