"Вычисления, визуализация и программирование в среде MATLAB 5.x" - читать интересную книгу автора (Мартынов Н. Н., Иванов А. П.)

MATLAB 5.x. Вычисления, визуализация, программирование
61
В столбцовых диаграммах каждому элементу массива соответствует один столбец. Этот принцип сохраняется и при отображении функцией bar содержимого матриц, но для наглядности столбцы, относящиеся к одной строке, группируются. В результате для матрицы
А = [ 5 2 4; 1 3 5; 2 1 4 ];
функция bar ( а ) порождает изображение, в котором разные элементы из одной и той же строки изображаются разными цветами. Номер строки проставлен вдоль горизонтальной оси под соответствующей группой столбцов (см. рис. 2.13).
* Figure No. I
Eils Edit Window?; Help 5
Рисунок 2.13
Наглядность показа элементов матрицы в виде вертикальных столбцов только усилится, если перейти к трехмерным изображениям. Для этого достаточно применить функцию ЬагЗ. Например, вызов функции ЬагЗ ( а ) порождает такую картину (см. рис. 2.14):
«# Figure No. 1
File Edit Window Help
Рисунок 2.14
62
Глава 2. Визуализация результатов вычислений
Здесь напротив цифры 1 расположен набор столбцов, относящихся к первой строке матрицы А, напротив цифры 2 - то же для второй строки этой матрицы, напротив 3 - третьей строки.
Помимо функций для построения столбцовых диаграмм в системе MATLAB имеются также функции для построения круговых диаграмм. Круговые диаграммы показывают в наглядной форме, какой процент от суммы всех элементов массива составляет его конкретный элемент. Например, для вектора
х = [ 3, 1, 1, 2]; круговая диаграмма строится функцией pie ( х ) (см. рис. 2.15).
¦# Figure No. I
File Edit ; Window tfelp
54%
Рисунок 2.1 5
Отсюда видно, что первый элемент вектора составляет 23% от суммы всех элементов, второй элемент составляет 54% и т. д. против часовой стрелки. Чтобы этот рисунок стал более наглядным, его целесообразно снабдить надписями, говорящими о том, каким элементам вектора соответствуют конкретные куски этого «пирога». Сделать это, однако, не так легко без помощи дескрипторной графики. Вот решение этой задачи:
h = pie( x ); hT = findobj(h,'Type','text');
Pos=get(hT(1),'Position'); Str=get(hT(1),'String');
set(hT(1),'String',[ '1-',Str],'Position',Pos+ [-0.1,0,0])
MATLAB 5.x. Вычисления, визуализация, программирование
63
в котором мы добиваемся изменения надписи напротив куска «пирога», соответствующего первому элементу вектора. Здесь мы применили функцию findobj, которая возвращает массив описателей четырех текстовых объектов. Далее мы у первого текстового объекта запрашиваем его позицию и его текстовое содержание, модифицируем их соответствующим образом и с помощью функции set устанавливаем новые значения этих свойств. Задача решена.
Кстати, заодно здесь сообщим, что для удаления уже проставленной записи нужно функцией set установить свойство ' String' равным пустому массиву.
Теперь рассмотрим еще один метод визуализации числовой информации. Когда в массиве сосредоточено большое количество данных, то прежде, чем визуализировать эти данные, их удобно сгруппировать в рамках подынтервалов значений и выводить суммарное количество элементов, попадающих в тот или иной подынтервал. Такой подход к визуализации называется построением гистограмм данных.
В системе MATLAB для построения гистограмм применяется функция hist:
x=rand( I, 10000 ) ; hist( x );
Здесь с помощью функции rand генерируется вектор из 10 000 случайных элементов, равномерно распределенных на интервале от 0 до 1. Функция hist строит гистограмму результатов, разбивая интервал от 0 до 1 на 10 подынтервалов (см. рис. 2.16).
"t Figure No. 1
•file';;Edit Window Help. 1200
1000 800 SCO 400 200 0
02
04
06
08
Рисунок 2.16
Для этого функция hist подсчитывает количество случайных чисел, попавших в тот или иной подынтервал, и строит столбцы соответствующей длины для
64
Глава 2. Визуализация результатов вычислений
каждого из подынтервалов. Если требуется другое число подынтервалов, то его следует указать в виде второго параметра у функции hist.
Помимо изображения элементов массивов в виде столбцов или «кусков пирога» система MATLAB предоставляет еще способ визуализации, когда каждый элемент массива изображается отрезком вертикальной линии с маленьким кружочком на конце. Такие диаграммы строит функция с именем stem, что переводится с английского как стебель или ножка, черенок.
Наиболее интересным применением такого рода диаграмм является случай, когда такие «черенки» позиционируются вдоль горизонтальной оси не напротив номеров элементов массива (вызов функции stem (x)), а напротив значений другого одномерного массива. Если значения одного массива вычисляются как функции значений другого массива или экспериментально измеряются при таких значениях, то этот сорт диаграмм хорошо соответствует отображению дискретных зависимостей между числовыми данными. Например, для нескольких вычисленных значений функции asin (арксинус)
х = -1 : 0.1 : 1; у = asin ( х ); ¦
следующая «черенковая диаграмма», для построения которой вызывается функция
stem( х, у ) наглядно отображает массив вычисленных значений (см. рис. 2.17).