• Регистрация
Хасбулат Нурмагомедов
Хасбулат Нурмагомедов +43.63
н/д

Строим графики в MATLAB 2 (продолжение)

14.11.2020

В этой заметке мы продолжаем строить графики. В MATLAB их столько, что на все случаи жизни найдется подходящий график, поэтому будем рассматривать в ускоренном режиме. Основы можно посмотреть вот здесь.

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

1. Очень полезная функция figure создает отдельное окно для отображения графики. Подробно в ее возможности вдаваться не будем (настройки заднего фона, масштаб, бла-бла-бла). Нужно будет - разберётесь.

% Массив абсцисс
x = linspace(-10,10,200);
% Первая кривая
y1 = sin(4*x)./exp(x);
% Вторая  кривая
y2 = -sin(4*x)./exp(x);

% Создаем две фигуры
pf = figure('Name','Positive');
nf = figure('Name','Negative'); 
% Указатель текущей фигуры встанет на последюю созданную

% Строим график в первом окне
figure(pf); % переключаем указатель
plot(x,y1);
%Включаем сетку
grid on;

% Строим график во втором окне
figure(nf); % переключаем указатель
plot(x,y2);
hold on;
plot(x,y2);

Получаем следующий результат:

2. Моя лубимая функция stem. Не знаю почему, ну уж очень она мне нравится. Функция предназначена для отображения дискретных последовательностей. По большому счету можно взять plot из предыдущей статьи и заменить его на stem, сигнатуры у них одинаковые.

% Массив абсцисс
x = linspace(-10,10,200);
% Первая кривая
y1 = sin(4*x)./ (exp(x*0.5)); %Уменьшим затухание, а то неинтересно выходит

% Создаем две фигуру
pf = figure('Name','Positive'); 
% Указатель текущей фигуры встанет на последюю созданную

stem(x,y1,'--bo',... % Зеленая пунктирная линия с маркерами-кружочками
    'LineWidth',2,...% Двойная толщина линии
    'MarkerSize',10,... % Задаем размер маркеров
    'MarkerEdgeColor','m',... % Цвет контура маркеров
    'MarkerFaceColor',[0.5,0.5,0.5]) % Заливка маркеров, RGB формат тоже OK
% Устанавливаем пределы отображения
xlim([0 10]);
ylim([-1 1]);
% Заголовок для графика
title('Figure title');
% Подписываем оси
xlabel('Time, s'); 
ylabel('Square parrots, p^2');
%Включаем сетку
grid on;

Получаем следующий результат: 

 

3. Логарифмический масштаб. Нужен логарифмический масштаб по одной из осей - без проблем semilogx по оси абсцисс, semilogy по оси ординат. Нужен сразу по двум, сходу не могу придумать зачем, но тоже есть oglog. 

% Массив абсцисс
x = 1:100;
% Функция
y1 = x.^2;

%Строим в логафмическом масштабе
subplot(1,2,1);
semilogy(x,y1,'--^');
legend('x^2 log','Location','northwest');
grid on;
%Строим в линейном масштабе
subplot(1,2,2);
plot(x,y1,'--o');
legend('x^2 lin','Location','northwest');
grid on;

Результат:

4. Функция stairs, которая мне очень не нравится, но я вам ее все равно покажу. Не пользуйтесь ей без надобности, используйте stem.

X = linspace(0,4*pi,40);
Y = sin(X);

figure
stairs(Y)

Получаем ступенчатый сигнал:

5. Интересная функция fplot. Позволяет строить график функции в автоматическом режиме, что может быть полезно в некоторых случаях, т.е. позволяет визуализировать данные с минимальным количеством кода. 

% @(t) интервал значений по умолчанию

xt = @(t) cos(3*t);
yt = @(t) sin(2*t);
fplot(xt,yt);

На выходе фигура Лиссажу:

6. Допустим, мы провели серию экспериментов и хотим отобразить на графике доверительный интервал, который рассчитали для полученных результатов. Для этого имеется функция errorbar. Очень хорошая функция: помимо доверительного интервала можно использовать ее для отображения границ усреднения в каждой точке и т.д. и т.п.

% Массив абсцисс
x = linspace(0,10,15);
% Функция
y = sin(x/2);
% Ошибка
err = 0.3*ones(size(y));

%Строим график
errorbar(x,y,err,...
    '-s',... %Тип маркера и тип линии (можно и без линии)
    'MarkerSize',10,... % Размер маркера
    'MarkerEdgeColor','red',... % Цвет границы маркера 
    'MarkerFaceColor','red'); % Цвет заливки маркера 

Результат:

На этом пока все. Перед тем, как добавить третье измерение, посмотрим еще контурные графики и гистограммы. 

Успехов и до встречи.

Теги

      14.11.2020

      Комментарии