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

7 4
1 3 5 7
3 8 13
7 4 5 7
8 4 8 4
J
А Рисунок 1.22
Здесь нужно только пояснить одну деталь. При индексировании исходной матрицы А двумя индексирующими матрицами II и 12 последние рассматрива-
MATLAB 5.x. Вычисления, визуализация, программирование 45
ются как единый столбец их элементов. В результате первая матрица II поставляет для организации строк результирующей матрицы В четыре своих элемента, так что матрица В состоит из четырех строк. Так как вторая матрица 12 состоит всего из девяти элементов, то столько же и будет столбцов в результирующей матрице В. Конкретные значения элементов матрицы В получаются в результате подстановки индивидуальных элементов матриц II и 12 и последующего извлечения элементов матрицы А.
Рассмотренное решение задачи о размножении матрицы в горизонтальном и вертикальном направлениях достаточно сложно для восприятия человеком, однако эффективность такого решения в сотни раз выше, чем простое и наглядное для человека прописывание отдельных элементов.
Для группового воздействия на элементы массивов (помимо множественной индексации) можно применить функцию find, которая в качестве аргумента принимает условие, а возвращает набор индексов элементов, удовлетворяющих этому условию. Зададим для примера вектор
v = [ 1 0 3 б 5 1 ] ; Тогда выражение
ind = find( v > 1 ) ind = 3 4 5
формирует набор (одномерный массив) ind индексов тех элементов исходного вектора v, которые по величине больше единицы. С помощью операции множественного индексирования все эти элементы можно сделать равными, например, девяти:
v( ind ) =9 v =
10 9 9 9 1
Получение с помощью функции find набора индексов и операцию множественного индексирования можно совместить в пределах единственного выражения:
v( find( v > 1 ) ) = 9;
Для матриц функция find возвращает несколько векторов индексов, каждый из которых получается обработкой отдельного столбца матрицы. Например, для матрицы
А = [ 1 0 3; 0 4 5; 6 7 8 ]; вызов функции find
[ ul, u2 ] = find( a )
46
Глава 1. Числовые массивы в системе MATLAB
формирует вектор-столбцы ul и u2, первый из которых содержит номера строк отличных от нуля элементов матрицы А, а второй - номера столбцов этих элементов (см. рис. 1.23).
-.1 MATLAB Command Window ни a
;. Ele y. Edit,?- Window«}Ц
*.V?" ¦'''
ul =
1
3 2
3
1 2 3
u2 =
1 1 2 2
3 3 3
Рисунок 1.23
Во время работы функции find столбцы матрицы обрабатываются в порядке слева-направо, то есть сначала обрабатывается первый столбец, затем - второй и так далее. Внутри столбца элементы просматриваются сверху-вниз.
Итак, рассмотренные возможности М-языка системы MATLAB позволяют с помощью компактных выражений выполнять большой объем вычислений. В результате таких вычислений получаются большие объемы числовых данных, для успешной интерпретации которых крайне важна их наглядная визуализация. Этому вопросу посвящена вторая глава настоящего пособия.
Глава 2
Визуализация результатов
вычислений
Построение графиков функций
В результате вычислений в системе MATLAB обычно получается большой массив данных, который трудно анализировать без наглядной визуализации. Поэтому система визуализации, встроенная в MATLAB, придает этому пакету особую практическую ценность.
Графические возможности системы MATLAB являются мощными и разнообразными. В первую очередь целесообразно изучить наиболее простые в использовании возможности. Их часто называют высокоуровневой графикой. Это название отражает тот приятный факт, что пользователю нет никакой необходимости вникать во все тонкие и глубоко спрятанные детали работы с графикой.
Например, нет ничего проще, чем построить график функции одной вещественной переменной. Следующие выражения:
х = 0 : 0.01 : 2; у = sin( х );
вычисляют массив у значений функции sin для заданного набора аргументов. После этого вызовом единственной функции
plot( х , у )
удается построить вполне качественно выглядящий график функции (см. рис. 2.1).