Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Glava_2a70_2014.doc
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

2.12.5. Построение линий уровня.

Для построения так называемых контурных графиков в MATLAB предусмотрены функции как contour, contourf и contour3, с помощью которых строятся так называемые линии уровня или изолинии. Под последними понимаются кривые, получающиеся в результате пересечения поверхности с плоскостями . Эти линии можно спроектировать на одну плоскость, и получить двумерное изображение, а можно воспроизвести как пространственные кривые и получить трехмерное изображение. Наглядным примером двумерных изображений изолиний являются линии рельефа поверхности на топографических картах (по последним, как известно, можно легко локализовать впадины и вершины, оценить их глубины и высоты, особенно, если в разрывах изолиний проставлены числовые значения соответствующих уровней).

В частности, с использованием функции contour можно строить проекции линий уровня на плоскости . Необходимо отметить, что данная функция имеет несколько вариантов вызова. Так, например, если обратиться к ней с тремя аргументами (в данном случае X, Y, и Z – матрицы одинаковой размерности, задающие координаты узлов сетки, в которых определены аппликаты поверхности).

>> [X,Y]=meshgrid(-2:0.1:2);

>> Z=-2*X.*exp(-X.^2-Y.^2);

>> colormap(gray)

>> contour(X,Y,Z)

то получим график, представленный на рис. 2.12.9 (заметим, что в представленном фрагменте использована серая полутоновая матрица цветности (colormap(gray)).

Заметим, что если область определения поверхности квадратная и шаги по осям и совпадают, то вместо пары аргументов X, Y может быть задан только один массив.

Для того, чтобы такой график стал более информативным, целесообразно возле каждой линии уровня отобразить значение, которое соответствует значению функции. Для этого используется функция clabel(C,h), при вызове которой необходимо задать два входных параметра – матрицу C, содержащую информацию о линиях уровня (эту матрицу можно рассматривать как таблицу, состоящую из двух строк – первая колонка задает значение уровня изолинии и количество содержащихся в ней точек, следом располагается указанное количество пар с координатами точек изолинии; вслед за первой изолинией в том же формате располагается информация о второй изолинии и т.д. (данный массив требуется, когда необходимо оцифровывать изолинии, т.е. включать в разрыв линии значение ее уровня), и вектор h, представляющий собой набор указателей на созданные графические массивы (также требуется при оцифровке изолиний). Требуемые для функции clabel параметры автоматически генерирует функция contour, если ее вызвать с двумя входными аргументами (параметрами) C и h:

>> [C,h]=contour(X,Y,Z);

>> clabel(C,h)

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

Использование функции contourf в виде

>> contourf(X,Y,Z)

позволяет заполнить разными цветами промежутки между изолиниями (рис. 2.12.17), что может оказаться весьма удобным при визуализации результатов решения тестовых, модельных и практически важных задач.

Для построения изолиний в пространстве применяется функция contour3 (рис. 2.12.18).

>> contour3(X,Y,Z)

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

Заметим, что среди многочисленных параметров функций contour, contourf и contour3, могут присутствовать пары типа

Рис. 2.12.15. Пример использования функции contour.

Рис. 2.12.16. Пример выполнения оцифровки изолиний.

Рис. 2.12.17. Пример использования функции contourf.

Рис. 2.12.18. Пример использования функции contour3.

('Свойство', значение)

инициализирующие значения соответствующих свойств.

Для изменения свойств изолиний можно воспользоваться массивом указателей, который возвращает функция contour3:

>> [X,Y]=meshgrid(-2:0.1:2);

>> Z=-2*X.*exp(-X.^2-Y.^2);

>> colormap(gray)

>> [C,h]=contour3(X,Y,Z,7);

>> set(h,'LineWidth',5)

Результат работы представленного фрагмента, в котором толщина изолиний была увеличена до 5 пунктов, приведен на рис. 2.12.19.

Рис. 2.12.19. Пример утолщенных пространственных изолиний.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]