Как сделать одинаковый масштаб по осям в матлабе

Обновлено: 05.07.2024

Я обнаружил странное масштабирование по оси Y в журнальной статье IEEE.

y_axis = [0,9999 0,9995 0,999 0,995 0,99 0,98 0,95 0,9 0,8 0,7 0,5 0,3 0,2 0,1 0,05 0,02 0,01 0,005 0,001 0,0005 0,0001].

Масштабирование не логарифмическое. Промежутки между галочками не равны. Однозначно, это не линейно. Вы можете подробно увидеть большие числа (0,9 . 0,999) и очень маленькие числа (0,0001 . 0,1) только на одной оси ординат. Я не знаю, как это сделать в MATLAB. Я погуглил, но не нашел. Может кто-нибудь мне помочь? Заранее спасибо.

На рисунке представлен следующий код:

На рисунке, опубликованном OP, отметки распределены неравномерно. Кроме того, масштаб оси скорее обратный сигмоидальной (см. Ниже). Чтобы действительно увидеть, что сделали авторы этой статьи, мы можем скелетировать фигуру

и получить точные позиции, y_px как в

Я удаляю некоторые обнаружения, которые относятся к линиям тренда или метке -10 на оси x.

Если вы построите метки y-галочки y_val (переворачивая их y_axis в порядке возрастания) как функцию этих позиций пикселей y_px , вы можете подтвердить, что отношение является точно сигмоидальным, как предлагает @chapjc. Однако для создания подобных графиков вам может потребоваться инвертировать формулу и определить функцию

Затем вы можете использовать эту функцию для построения графиков. В документе, на который вы ссылаетесь, показаны данные в диапазоне x = -10 : 0.1 : 4 . Давайте построим в этом же диапазоне синусоидальную функцию где-то между 0,0001 и 0,9999. Обратите внимание, что мы используем нашу функцию масштабирования px_y , а затем заменяем позиции y-галочки и метки

в результате получится что-то, что должно выглядеть так

введите описание изображения здесь

Таким образом, вы можете определить функцию y_px для преобразования ваших y-данных, а затем установить свойства ytick и yticklabel ваших осей. Независимо от масштаба вы выбрали для этого подхода, важно , чтобы преобразовать как в ytick ценности и все у-данные с одной и той же функцией.

Чтобы построить график функции, вам необходимо выполнить следующие шаги:

Определите x , указав диапазон значений для переменной x , для которой должна быть построена функция

Определите функцию, y = f (x)

Вызовите команду plot , как plot (x, y)

Определите x , указав диапазон значений для переменной x , для которой должна быть построена функция

Определите функцию, y = f (x)

Вызовите команду plot , как plot (x, y)

Следующий пример продемонстрирует концепцию. Построим простую функцию y = x для диапазона значений x от 0 до 100 с шагом 5.

Создайте файл сценария и введите следующий код —

Когда вы запускаете файл, MATLAB отображает следующий график —

Построение у = х

Давайте возьмем еще один пример для построения функции y = x 2 . В этом примере мы нарисуем два графика с одной и той же функцией, но во второй раз мы уменьшим значение приращения. Обратите внимание, что при уменьшении приращения график становится более плавным.

Создайте файл сценария и введите следующий код —

Когда вы запускаете файл, MATLAB отображает следующий график —

Построение у = х ^ 2

Немного измените файл кода, уменьшите приращение до 5 —

MATLAB рисует более плавный график —

Построение графика y = x ^ 2 с меньшим приращением

Добавление заголовка, меток, линий сетки и масштабирования на графике

MATLAB позволяет добавлять заголовки, метки вдоль осей X и Y, линии сетки, а также настраивать оси для улучшения графика.

Команды xlabel и ylabel генерируют метки вдоль оси x и оси y.

Команда title позволяет вам разместить заголовок на графике.

Команда grid on позволяет вам разместить линии сетки на графике.

Команда осевого равенства позволяет создать график с одинаковыми масштабными коэффициентами и пробелами на обеих осях.

Команда оси квадрат создает квадратный график.

Команды xlabel и ylabel генерируют метки вдоль оси x и оси y.

Команда title позволяет вам разместить заголовок на графике.

Команда grid on позволяет вам разместить линии сетки на графике.

Команда осевого равенства позволяет создать график с одинаковыми масштабными коэффициентами и пробелами на обеих осях.

Мне нужны идеи, чтобы изменить размер моих осей , чтобы получить более простой график, чтобы лучше визуализировать и вычислить усиление между различными кривыми.

Я использовал код: axis([0 6 1e-3 1e0]) или xlim([0 6]); ylim([1e-3 1e0])

enter image description here

Я хотел бы, например, иметь свою кривую с: xlim([0:0.2:6]) (просто идея, иначе это неправильно в Matlab).

enter image description here

2 ответа

Логарифмический график:

Для создания осей можно использовать функции xticks() и yticks() для установки интервалов, начальной и конечной точек. xticks() и yticks() по сути берут векторы, которые определяют все отметки на шкалах / осях. На всякий случай вы хотите также отредактировать интервал по оси Y. Этот вектор можно создать, возведя каждый элемент в векторе (-3,1:0) в степень с основанием 10. Наконец, установка логарифмического значения gca (текущая ось) позволит установить вертикальный интервал между отметками. быть равномерно распределенным.

Logarithmic Plot

Запуск с использованием MATLAB R2019b

Если я понимаю, что вы хотите, вам нужно больше XTicks в указанных пределах x. После того, как вы построите просто:

Пакет MatLab позволяет отображать графики с разным цветом и типом линий, показывать или скрывать сетку на графике, выполнять подпись осей и графика в целом, создавать легенду и многое другое. В данном параграфе рассмотрим наиболее важные функции, позволяющие делать такие оформления на примере двумерных графиков.

Функция plot() позволяет менять цвет и тип отображаемой линии. Для этого, используются дополнительные параметры, которые записываются следующим образом:

Обратите внимание, что третий параметр записывается в апострофах и имеет обозначения, приведенные в таблицах 3.1-3.3. Маркеры, указанные ниже записываются подряд друг за другом, например,

‘ko’ – на графике отображает черными кружками точки графика,
‘ko-‘ – рисует график черной линией и проставляет точки в виде кружков.

Ниже показаны примеры записи функции plot() с разным набором маркеров.

x = 0:0.1:2*pi;
y = sin(x);

subplot(2,2,1); plot(x,y,'r-');
subplot(2,2,2); plot(x,y,'r-',x,y,'ko');
subplot(2,2,3); plot(y,'b--');
subplot(2,2,4); plot(y,'b--+');

Результат работы фрагмента программы приведен на рис. 3.7. Представленный пример показывает, каким образом можно комбинировать маркеры для достижения требуемого результата. А на рис. 3.7 наглядно видно к каким визуальным эффектам приводят разные маркеры, используемые в программе. Следует особо отметить, что в четвертой строчке программы по сути отображаются два графика: первый рисуется красным цветом и непрерывной линией, а второй черными кружками заданных точек графика. Остальные варианты записи маркеров очевидны.

Рис. 3.7. Примеры отображения графиков с разными типами маркеров

Из примеров рис. 3.7 видно, что масштаб графиков по оси Ox несколько больше реальных значений. Дело в том, что система MatLab автоматически масштабирует систему координат для полного представления данных. Однако такая автоматическая настройка не всегда может удовлетворять интересам пользователя. Иногда требуется выделить отдельный фрагмент графика и только его показать целиком. Для этого используется функция axis() языка MatLab, которая имеет следующий синтаксис:

axis( [ xmin, xmax, ymin, ymax ] ),

где название указанных параметров говорят сами за себя.

Воспользуемся данной функцией для отображения графика функции синуса в пределах от 0 до :

x = 0:0.1:2*pi;
y = sin(x);

subplot(1,2,1);
plot(x,y);
axis([0 2*pi -1 1]);

subplot(1,2,2);
plot(x,y);
axis([0 pi 0 1]);

Из результата работы программы (рис. 3.8) видно, что несмотря на то, что функция синуса задана в диапазоне от 0 до , с помощью функции axis() можно отобразить как весь график, так и его фрагмент в пределах от 0 до .

Рис. 3.8. Пример работы функции axis()

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

Рассмотрим работу данных функций в следующем примере:

x = 0:0.1:2*pi;
y = sin(x);

plot(x,y);
axis([0 2*pi -1 1]);
grid on;
title('The graphic of sin(x) function');
xlabel('The coordinate of Ox');
ylabel('The coordinate of Oy');
text(3.05,0.16,'\leftarrow sin(x)');

Из результата работы данной программы, представленного на рис. 3.9, видно каким образом работают функции создания подписей на графике, а также отображение сетки графика.

Таким образом, используя описанный набор функций и параметров, можно достичь желаемого способа оформления графиков в системе MatLab.

Рис. 3.9. Пример работы функций оформления графика

© 2022 Научная библиотека

Копирование информации со страницы разрешается только с указанием ссылки на данный сайт

Читайте также: