"Вычисления, визуализация и программирование в среде 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). ;. 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). |
|
|