Главная страница
Навигация по странице:

  • Print

  • 4.5. Элементарные графические функции

  • Трехмерные графики

  • Надписи и пояснения к графикам

  • Специальная графика

  • MatLab Руководство для начинающих. Matlab сокращение от англ. Matrix Laboratory


    Скачать 494 Kb.
    НазваниеMatlab сокращение от англ. Matrix Laboratory
    АнкорMatLab Руководство для начинающих.doc
    Дата28.01.2017
    Размер494 Kb.
    Формат файлаdoc
    Имя файлаMatLab Руководство для начинающих.doc
    ТипДокументы
    #549
    страница5 из 6
    1   2   3   4   5   6

    4. Графические средства представления результатов

    4.1. Вывод одного графика


    MATLAB предоставляет следующие функции для работы с графикой:

    plot(<Массив>) - построение графика значений из массива Х от номера отсчета.

    plot(<Массив точек по оси Х>,<Массив точек по оси У>) - построение графика значений из массива У от значений из массива Х.

    При вызове команды создается окно с указанным графиком.

    Функция plot имеет различные формы, связанные с входными параметрами, например plot(y)  создает кусочно-линейный график зависимости элементов y от их индексов. Если в качестве аргументов заданы два вектора, то plot(x,y) создаст график зависимости y от x. Например, для построения графика функции sin в интервале от 0 до 2, сделаем следующее



    Программа построила график зависимости, который отображается в окне



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

    Функцию plot() можно записать и с одним аргументом x или y:

    plot(x);
    plot(y);

    в результате получим два разных графика. Их анализ показывает, что в случае одного аргумента функция plot() отображает множество точек по оси Oy, а по оси Оx происходит автоматическая генерация множества точек с единичным шагом. Следовательно, для простой визуализации вектора в виде двумерного графика достаточно воспользоваться функцией plot() с одним аргументом.


    4.2. Трехмерные графики


    Для построения трехмерных графиков во первых понадобится создать сетку координат на плоскости. Выполняет это функция [X,Y]=meshgrid(x,y), где x и y - одномерные массивы, а X и Y - полученные в результате двухмерные массивы. Если массивы x и y одинаковые, то достаточно указать [X,Y]=meshgrid(x). Например: [X,Y]=meshgrid([-2:0.1:2]).

    После этого описывается сама функция, например Z=X.*exp(-X.^2-Y.^2). Напоминаю что операции «.^» и «.*» означают поэлементные а не матричные действия.

    После этого подается команда на вывод трехмерного графика: plot3(X,Y,Z).

    4.3. Вывод нескольких графиков


    Для вывода нескольких графиков на одном окне Вам необходимо указать их последовательно, например:

    t=-10:0.1:10 ;

    x1=sin(t) ;

    x2=cos(t) ./ t ;

    plot(t,x1,t,x2)


    Команда hold on позволяет добавлять кривые на существующий график. Функция subplot позволяет выводить множество графиков в одном окне




    4.4 Печать графиков 


    Пункт Print в меню File и команда print печатают графику MatLab. Меню Print вызывает диалоговое окно, которое позволяет выбирать общие стандартные варианты печати. Команда print обеспечивает большую гибкость при выводе выходных данных и позволяет контролировать печать из М-файлов. Результат может быть послан прямо на принтер, выбранный по умолчанию, или сохранен в заданном файле.
    4.5. Элементарные графические функции системы MATLAB

    Двумерные графики

    Трехмерные графики

    • PLOT3 - построение линий и точек в трехмерном пространстве

    • MESHGRID - формирование двумерных массивов X и Y

    • MESH, MESHC, MESHZ - трехмерная сетчатая поверхность

    • SURF, SURFC - затененная сетчатая поверхность

    • SURFL - затененная поверхность с подсветкой

    • AXIS - масштабирование осей и вывод на экран

    • GRID - нанесение сетки

    • HOLD - управление режимом сохранения текущего графического окна

    • SUBPLOT - разбиение графического окна

    • ZOOM - управление масштабом графика

    • COLORMAP - палитра цветов

    • CAXIS - установление соответствия между палитрой цветов и масштабированием осей

    • SHADING - затенение поверхностей

    • CONTOURC - формирование массива описания линий уровня

    • CONTOUR - изображение линий уровня для трехмерной поверхности

    • CONTOUR3 - изображение трехмерных линий уровня

    Надписи и пояснения к графикам

    • TITLE - заголовки для двух- и трехмерных графиков

    • XLABEL, YLABEL, ZLABEL - обозначение осей

    • CLABEL - маркировка линий уровня

    • TEXT - добавление к текущему графику текста

    • GTEXT - размещает заданный текст на графике с использованием мыши

    • LEGEND - пояснение к графику

    • COLORBAR - шкала палитры

    Специальная графика

    Раздел специальной графики включает графические команды и функции для построения столбцовых диаграмм, гистограмм, средств отображения векторов и комплексных элементов, вывода дискретных последовательностей данных, а также движущихся траекторий как для двумерной, так и для трехмерной графики. Этот раздел получил свое дальнейшее развитие в версии системы MATLAB 5.0, где специальные графические средства улучшены и существенно расширены.

    • BAR - столбцовые диаграммы

    • ERRORBAR - график с указанием интервала погрешности

    • HIST - построение гистограммы

    • STEM - дискретные графики

    • STAIRS - ступенчатый график

    • ROSE - гистограмма в полярных координатах

    • COMPASS, FEATHER - графики векторов

    • QUIVER - поле градиентов функции

    • COMET - движение точки по траектории

    • FILL - закраска многоугольника

    • COMET3 - движение точки по пространственной траектории

    • SLICE - сечения функции от трех переменных

    • WATERFALL - трехмерная поверхность

    • FILL3 - закраска многоугольника в трехмерном пространстве

    • VIEWMTX - вычисление матрицы управления углом просмотра

    • VIEW - управление положением точки просмотра

    5. Условные операторы и циклы в MatLab

    5.1. Условный оператор if


    В самом простом случае синтаксис данного оператора if имеет вид:

    if <выражение>
    <операторы>
    end

    Обращаю Ваше внимание что в отличие от современных языков программирования не используются такое понятие как составной оператор. Блок условного оператора обязательно заканчивается служебным словом end.

    Ниже представлен пример реализации функции sign(), которая возвращает +1, если число больше нуля, -1 – если число меньше нуля и 0, если число равно нулю:

    x = 5;
    if x > 0
    disp(1);
    end
    if x < 0
    disp(-1);
    end
    if x == 0
    disp(0);
    end

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

    if <выражение>
    <операторы1>       % выполняются, если истинно условие
    else
    <операторы2>       % выполняются, если условие ложно
    end

    Тогда приведенный выше пример можно записать следующим образом:


    x = 5;
    if x > 0
    disp(1);
    else
    if x < 0
    disp(-1);
    else
    disp(0);
    end
    end

    В данной программе сначала выполняется проверка на положительность переменной x, и если это так, то на экран выводится значение 1, а все другие условия игнорируются. Если же первое условие оказалось ложным, то выполнение программы переходит по else (иначе) на второе условие, где выполняется проверка переменной x на отрицательность, и в случае истинности условия, на экран выводится значение -1. Если оба условия оказались ложными, то выводится значение 0.

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

    if <выражение1>
    <операторы1>       % выполняются, если истинно выражение1
    elseif <выражение2>
    <операторы2>       % выполняются, если истинно выражение2
    ...
    elseif <выражениеN>
    <операторыN>       % выполняются, если истинно выражениеN
    end

    и записывается следующим образом:

    x = 5;
    if x > 0
         disp(1);       % выполняется, если x > 0
    elseif x < 0
         disp(-1);      % выполняется, если x < 0
    else
         disp(0);       % выполняется, если x = 0
    end

    С помощью условного оператора if можно выполнять проверку более сложных (составных) условий. Например, необходимо определить: попадает ли переменная x в диапазон значений от 0 до 2? Это можно реализовать одновременной проверкой сразу двух условий: x >= 0 и x <=2. Если эти оба  условия истинны, то x попадает в диапазон от 0 до 2.

    Для реализации составных условий в MatLab используются логические операторы:

    & - логическое И
    | - логическое ИЛИ
    - логическое НЕ

    Рассмотрим пример использования составных условий. Пусть требуется проверить попадание переменной x в диапазон от 0 до 2. Программа запишется следующим образом:

    x = 1;
    if x >= 0 & x <= 2
       disp('x принадлежит диапазону от 0 до 2');
    else
       disp('x  не принадлежит диапазону от 0 до 2');
    end

    Во втором примере выполним проверку на не принадлежность переменной x диапазону от 0 до 2. Это достигается срабатыванием одного из двух условий: x < 0 или x > 2:

    x = 1;
    if x < 0 | x > 2
       disp('x не принадлежит диапазону от 0 до 2');
    else
       disp('x  принадлежит диапазону от 0 до 2');
    end

    Используя логические операторы И, ИЛИ, НЕ, можно создавать разнообразные составные условия. Например, можно сделать проверку, что переменная x попадает в диапазон от -5 до 5, но не принадлежит диапазону от 0 до 1. Очевидно, это можно реализовать следующим образом:

    x = 1;
    if (x >= -5 & x <= 5) & (x < 0 | x > 1)
       disp('x принадлежит [-5, 5], но не входит в [0, 1]');
    else
       disp('x или не входит в [-5, 5] или в [0, 1]');
    end

    Обратите внимание, что при сложном составном условии были использованы круглые скобки. Дело в том, что приоритет операции И выше приоритета операции ИЛИ, и если бы не было круглых скобок, то условие выглядело бы так: (x >= -5 и x <= 5 и x < 0) или x > 1. Очевидно, что такая проверка давала бы другой результат от ожидаемого.

    Круглые скобки в программировании используются для изменения приоритетов выполнения операторов. Подобно арифметическим операторам, логические также могут быть изменены по желанию программиста. Благодаря использованию круглых скобок, сначала выполняется проверка внутри них, а, затем, за их пределами. Именно поэтому в приведенном выше примере они необходимы для достижения требуемого результата.

    Приоритет логических операций следующий:

    НЕ () – самый высокий приоритет;
    И (&) – средний приоритет;
    ИЛИ (|) – самый низкий приоритет.
    1   2   3   4   5   6


    написать администратору сайта