2013-10-11 5 views
0

Я хотел бы перемасштабировать ось участка MATLAB без изменения базовых данных. Я не пытаясь приблизить к определенной области участка.Изменение масштаба осей без масштабирования

В качестве примера, скажем, у меня есть ось X в миллиметрах. Мои американские коллеги, возможно, предпочли бы видеть результат в дюймах, но все кодируется в миллиметрах, и было бы неплохо создать новые данные на основе дюймов для всех элементов, которые я хотел бы построить. В идеале, я бы просто заговорил все как обычно, и в нескольких строках кода ось X изменилась до дюймов в конце.

Как это сделать?

Basic код, чтобы получить вещи начал:

plot([1:2:100], [1:50]) 
xlabel('Millimetres') 
ylabel('Something else') 

% Magic happens 

xlabel('Inches') 

Примечание: 1 дюйм 25,4 мм.

ответ

1

Во-первых, в чем проблема деления ваших x-данных на 25,4?

x=[1:2:100]; y=[1:50]; 
plot(x/25.4,y) 

сделаю. Это также автоматически поместит позиции X-Ticks и ярлыки в хорошие круглые позиции.

Если вы настаиваете, то это будет конвертировать текущие X-Tick этикетки от мм до дюймовых устройств:

xt  = get(gca, 'XTick'); 
xlabels= get(gca, 'XTickLabel'); 
set(gca, 'XTick', xt, 'XTickLabel',num2str(str2num(xlabels)/25.4)); 
+0

Perfect. Причиной не перемасштабирования самих данных является то, что в моей реальной программе я рисую много вещей на одних и тех же осях. – CaptainProg

+0

Одна мелочь: это решение устраняет возможность увеличения масштаба и позволяет MATLAB генерировать новые отметки. По сути, у меня есть только один уровень масштабирования. Есть ли способ заставить MATLAB сделать это для всех уровней масштабирования? – CaptainProg

+0

измените масштаб оси x (мой первый вариант). – bla