Progress-servis55.ru

Новости из мира ПК
30 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Matlab сумма элементов массива

Урок 5 — Работа с массивами в Матлаб(Matlab)

Все данные MatLab представляет в виде массивов. Очень важно правильно понять, как использовать массивы. Без этого невозможна эффективная работа в MatLab, в частности построение графиков, решение задач линейной алгебры, обработки данных, статистики и многих других. В данном подразделе описаны вычисления с векторами.

Массив — упорядоченная, пронумерованная совокупность однородных данных. У массива должно быть имя. Массивы различаются по числу размерностей или измерений: одномерные, двумерные, многомерные. Доступ к элементам осуществляется при помощи индекса. В MatLab нумерация элементов массивов начинается с единицы. Это значит, что индексы должны быть больше или равны единице.

Важно понять, что вектор, вектор-строка или матрица являются математическими объектами, а одномерные, двумерные или многомерные массивы — способы хранения этих объектов в компьютере. Всюду дальше будут использоваться слова вектор и матрица, если больший интерес представляет сам объект, чем способ его хранения. Вектор может быть записан в столбик (вектор-столбец) и в строку (вектор-строка). Вектор-столбцы и вектор-строки часто будут называться просто векторами, различие будет сделано в тех случаях, если важен способ хранения вектора в MatLab. Векторы и матрицы обозначаются курсивом, а соответствующие им массивы прямым моноширинным шрифтом, например: «вектор а содержится в массиве а», «запишите матрицу R в массив r».

Ввод сложение и вычитание векторов

Работу с массивами начнем с простого примера — вычисления суммы векторов:
, .

Для хранения векторов используйте массивы а и b. Введите массив а в командной строке, используя квадратные скобки и разделяя элементы вектора точкой с запятой:

» a = [1.3; 5.4; 6.9]
a =
1.3000
5.4000
6.9000

Так как введенное выражение не завершено точкой с запятой, то пакет MatLab автоматически вывел значение переменной а. Введите теперь второй вектор, подавив вывод на экран

Для нахождения суммы векторов используется знак +. Вычислите сумму, запишите результат в массив с и выведите его элементы в командное окно:

» с = а + b
с =
8.4000
8.9000
15.1000

Узнайте размерность и размер массива а при помощи встроенных функций ndims и size:

Итак, вектор а хранится в двумерном массиве а размерностью три на один (вектор-столбец из трех строк и одного столбца). Аналогичные операции можно проделать и для массивов b и c. Поскольку числа в пакете MatLab представляются в виде двумерного массива один на один, то при сложении векторов используется тот же знак плюс, что и для сложения чисел.

Ввод вектор-строки осуществляется в квадратных скобках, однако элементы следует разделять пробелами или запятыми. Операции сложения, вычитания и вычисление элементарных функций от вектор-строк производятся так же, как и с вектор-столбцами, в результате получается вектор-строка того же размера, что и исходные. Например:

» s1 = [3 4 9 2]
s1 =
3 4 9 2
» s2 = [5 3 3 2]
s1 =
5 3 3 2
» s3 = s1 + s2
s3 =
8 7 12 4

Замечание 1

Если размеры векторов, к которым применяется сложение или вычитание, не совпадают, то выдается сообщение об ошибке.

Естественно, для нахождения разности векторов следует применять знак минус, с умножением дело обстоит несколько сложнее.
Введите две вектор-строки:

» v1 = [2 -3 4 1];
» v2 = [7 5 -6 9];

Операция .* (не вставляйте пробел между точкой и звездочкой!) приводит к поэлементному умножению векторов одинаковой длины. В результате получается вектор с элементами, равными произведению соответствующих элементов исходных векторов:

» u = v1.*v2
u =
14 -15 -24 9

При помощи .^ осуществляется поэлементное возведение в степень:

» р = v1.^2
p =
4 9 16 1

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

» p = vl.^v2
Р =
128.0000 -243.0000 0.0002 1.0000

Деление соответствующих элементов векторов одинаковой длины выполняется с использованием операции ./

» d = v1./v2
d =
0.2857 -0.6000 -0.6667 0.1111

Обратное поэлементное деление (деление элементов второго вектора на соответствующие элементы первого) осуществляется при помощи операции .

» dinv = vl.v2
dinv =
3.5000 -1.6667 -1.5000 9.0000

Итак, точка в MatLab используется не только для ввода десятичных дробей, но и для указания того, что деление или умножение массивов одинакового размера должно быть выполнено поэлементно.
К поэлементным относятся и операции с вектором и числом. Сложение вектора и числа не приводит к сообщению об ошибке. MatLab прибавляет число к каждому элементу вектора. То же самое справедливо и для вычитания:

» v = [4 6 8 10];
» s = v + 1.2
s =
5.2000 6.2000 9.2000 11.2000
» r = 1.2 — v
r =
-2.8000 -4.8000 -6.8000 -8.8000
» r1 = v — 1.2
r1 = 2.8000 4.8000 6.8000 8.8000

Умножать вектор на число можно как справа, так и слева:

» v = [4 6 8 10];
» p = v*2
р =.
8 12 16 20
» pi = 2*v
pi =
8 12 16 20

Делить при помощи знака / можно вектор на число:

» р = v/2
p =
2 3 4 5

Попытка деления числа на вектор приводит к сообщению об ошибке:

» р = 2/v
. Error using ==> /
Matrix dimensions must agree.

Если требуется разделить число на каждый элемент вектора и записать результат в новый вектор, то следует использовать операцию ./

» w = [4 2 6];
» d = 12./w
d =
3 6 2

Все вышеописанные операции применимы как к вектор-строкам, так и к вектор-столбцам.
Особенность MatLab представлять все данные в виде массивов является очень удобной. Пусть, например, требуется вычислить значение функции sin сразу для всех элементов вектора с (который хранится в массиве с) и записать результат в вектор d. Для получения вектора d достаточно использовать один оператор присваивания:

» d = sin(с)
d =
0.8546
0.5010
0.5712

Итак, встроенные в MatLab элементарные функции приспосабливаются к виду аргументов; если аргумент является массивом, то результат функции будет массивом того же размера, но с элементами, равными значению функции от соответствующих элементов исходного массива. Убедитесь в этом еще на одном примере. Если необходимо найти квадратный корень из элементов вектора dсо знаком минус, то достаточно записать:

» sqrt(-d)
ans =
0 + 0.9244i
0 + 0.7078i
0 + 0.7558i

Оператор присваивания не использовался, поэтому пакет MatLab записал ответ в стандартную переменную ans.

Для определения длины вектор-столбцов или вектор-строк служит встроенная функция length:

Из нескольких вектор-столбцов можно составить один, используя квадратные скобки и разделяя исходные вектор-столбцы точкой с запятой:

Для сцепления вектор-строк также применяются квадратные скобки, но сцепляемые вектор-строки отделяются пробелами или запятыми:

» v1 = [1 2];
» v2 = [3 4 5];
» v = [v1 v2]
v =
1 2 3 4 5

Работа с элементами векторов

Доступ к элементам вектор-столбца или вектор-строки осуществляется при помощи индекса, заключаемого в круглые скобки после имени массива, в котором хранится вектор. Если среди переменных рабочей среды есть массив v, определенный вектор-строкой

» v = [1.3 3.6 7.4 8.2 0.9];

то для вывода, например его четвертого элемента, используется индексация:

Появление элемента массива в левой части оператора присваивания приводит к изменению в массиве

» v(2) = 555
v =
1.3000 555.0000 7.4000 8.2000 0.9000

Из элементов массива можно формировать новые массивы, например

» u = [v(3); v(2); v(1)]
u =
7.4000
555.0000
1.3000

Для помещения определенных элементов вектора в другой вектор в заданном порядке служит индексация при помощи вектора. Запись в массив w четвертого, второго и пятого элементов v производится следующим образом:

» ind = [4 2 5];
» w = v(ind)
w =
8.2000 555.0000 0.9000

MatLab предоставляет удобный способ обращения к блокам последовательно расположенных элементов вектор-столбца или вектор-строки. Для этого служит индексация при помощи знака двоеточия. Предположим, что в массиве w, соответствующем вектор-строке из семи элементов, требуется заменить нулями элементы со второго по шестой. Индексация при помощи двоеточия позволяет просто и наглядно решить поставленную задачу:

Читать еще:  Контурный график matlab

» w = [0.1 2.9 3.3 5.1 2.6 7.1 9.8];
» w(2:6) = 0;
» w
w =
0.1000 0 0 0 0 0 9.8000

Присваивание w(2:6) = 0 эквивалентно последовательности команд
w(2) = 0; w(3)=0; w(4)=0; w(5)=0; w(6)=0.
Индексация при помощи двоеточия оказывается удобной при выделении части из большого объема данных в новый массив:

» w — [0.1 2.9 3.3 5.1 2.6 7.1 9.8];
» wl = w(3:5)
wl =
3.3000 5.1000 2.6000

Составьте массив w2, содержащий элементы w кроме четвертого. В этом случае удобно использовать двоеточие и сцепление строк:

» w2 = [w(l:3) w(5:7)]
w2 =
0.1000 2.9000 3.3000 2.6000 7.1000 9.8000

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

Конечно, этот способ не очень удобен для длинных массивов. Для того чтобы найти среднее геометрическое, необходимо набрать в формуле все элементы массива. В MatLab существует достаточно много специальных функций, облегчающих подобные вычисления.

Применение функций обработки данных к векторам

Перемножение элементов вектора-столбца или вектора-строки осуществляется при помощи функции prod:

» z = [3; 2; 1; 4; 6; 5];
» р = prod(z)
p = 720

Функция sum предназначена для суммирования элементов вектора. С ее помощью нетрудно вычислить среднее арифметическое элементов вектора z:

» sum(z)/length(z)
ans =
3.5000

В MatLab имеется и специальная функция mean для вычисления среднего арифметического:

Для определения минимального и максимального из элементов вектора служат встроенные функции min и max:

» m1 = max(z)
m1 =
6
» m2 = min(z)
m2 =
1

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

» [m, k] = min(z)
m =
1
k =
3

В результате переменной m будет присвоено значение минимального элемента массива z, а номер минимального элемента занесен в переменную k.
Для получения информации о различных способах использования функций следует набрать в командной строке help и имя функции. MatLab выведет в командное окно всевозможные способы обращения к функции с дополнительными пояснениями.
В число основных функций для работы с векторами входит функция упорядочения вектора по возрастанию его элементов sort.

» r = [9.4 -2.3 -5.2 7.1 0.8 1.3];
» R = sort(r)
R =
-5.2000 -2.3000 0.8000 1.3000 7.1000 9.4000

Можно упорядочить вектор по убыванию, используя эту же функцию sort:

» R1 = -sort(-r)
R1 =
9.4000 7.1000 1.3000 0.8000 -2.3000 -5.2000

Упорядочение элементов в порядке возрастания их модулей производится с привлечением функции abs:

» R2 = sort(abs(r))
R2 =
0.8000 1.3000 2.3000 5.2000 7.1000 9.4000

Вызов sort с двумя выходными аргументами приводит к образованию массива индексов соответствия элементов упорядоченного и исходного массивов:

» [rs, ind] = sort(r)
rs =
-5.2000 -2.3000 0.8000 1.3000 7.1000 9.4000
ind =
3 2 5 6 4 1

Matlab сумма элементов массива

Sum of array elements

Syntax

Description

S = sum( A ) returns the sum of the elements of A along the first array dimension whose size does not equal 1.

If A is a vector, then sum(A) returns the sum of the elements.

If A is a matrix, then sum(A) returns a row vector containing the sum of each column.

If A is a mult >sum(A) operates along the first array dimension whose size does not equal 1, treating the elements as vectors. This dimension becomes 1 while the sizes of all other dimensions remain the same.

S = sum( A , ‘all’ ) computes the sum of all elements of A . This syntax is valid for MATLAB ® versions R2018b and later.

S = sum( A , dim ) returns the sum along dimension dim . For example, if A is a matrix, then sum(A,2) is a column vector containing the sum of each row.

S = sum( A , vecdim ) sums the elements of A based on the dimensions specified in the vector vecdim . For example, if A is a matrix, then sum(A,[1 2]) is the sum of all elements in A , since every element of a matrix is contained in the array slice defined by dimensions 1 and 2.

S = sum( ___ , outtype ) returns the sum with a specified data type, using any of the input arguments in the previous syntaxes. outtype can be ‘default’ , ‘double’ , or ‘native’ .

S = sum( ___ , nanflag ) specifies whether to include or omit NaN values from the calculation for any of the previous syntaxes. sum(A,’includenan’) includes all NaN values in the calculation while sum(A,’omitnan’) ignores them.

Examples

Sum of Vector Elements

Create a vector and compute the sum of its elements.

Sum of Matrix Columns

Create a matrix and compute the sum of the elements in each column.

Sum of Matrix Rows

Create a matrix and compute the sum of the elements in each row.

Sum of Array Slices

Use a vector dimension argument to operate on specific slices of an array.

Create a 3-D array whose elements are 1.

To sum all elements in each page of A , specify the dimensions in which to sum (row and column) using a vector dimension argument. Since both pages are a 4-by-3 matrix of ones, the sum of each page is 12.

If you slice A along the first dimension, you can sum the elements of the resulting 4 pages, which are each 3-by-2 matrices.

Slicing along the second dimension, each page sum is over a 4-by-2 matrix.

Starting in R2018b, to sum over all dimensions of an array, you can either specify each dimension in the vector dimension argument, or use the ‘all’ option.

Sum of 3-D Array

Create a 4-by-2-by-3 array of ones and compute the sum along the third dimension.

Sum of 32-bit Integers

Create a vector of 32-bit integers and compute the int32 sum of its elements by specifying the output type as native .

Sum Excluding NaN

Create a vector and compute its sum, excluding NaN values.

If you do not specify ‘omitnan’ , then sum(A) returns NaN .

Input Arguments

A — Input array
vector | matrix | multidimensional array

Input array, specified as a vector, matrix, or multidimensional array.

If A is a scalar, then sum(A) returns A .

If A is an empty 0-by-0 matrix, then sum(A) returns 0 .

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | duration
Complex Number Support: Yes

dim — Dimension to operate along
positive integer scalar

Dimension to operate along, specified as a positive integer scalar. If no value is specified, then the default is the first array dimension whose size does not equal 1.

Dimension dim indicates the dimension whose length reduces to 1. The size(S,dim) is 1 , while the sizes of all other dimensions remain the same.

sum(A,1) operates on successive elements in the columns of A and returns a row vector of the sums of each column.

sum(A,2) operates on successive elements in the rows of A and returns a column vector of the sums of each row.

sum returns A when dim is greater than ndims(A) or when size(A,dim) is 1 .

Data Types: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

vecdim — Vector of dimensions
vector of positive integers

Vector of dimensions, specified as a vector of positive integers. Each element represents a dimension of the input array. The lengths of the output in the specified operating dimensions are 1, while the others remain the same.

Читать еще:  Matlab постройте гистограмму

Cons >A . Then sum(A,[1 2]) returns a 1-by-1-by-3 array whose elements are the sums of each page of A .

Data Types: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

outtype — Output data type
‘default’ (default) | ‘double’ | ‘native’

Output data type, specified as ‘default’ , ‘double’ , or ‘native’ . These options also specify the data type in which the operation is performed.

outtypeOutput data type
‘default’double , unless the input data type is single or duration , in which case, the output is ‘native’
‘double’double , unless the data type is duration , in which case, ‘double’ is not supported
‘native’same data type as the input, unless the input data type is char , in which case, ‘native’ is not supported

Data Types: char

nanflag — NaN condition
‘ includenan ’ (default) | ‘ omitnan ’

NaN condition, specified as one of these values:

‘includenan’ — Include NaN values when computing the sum, resulting in NaN .

‘omitnan’ — Ignore all NaN values in the input.

Data Types: char

Extended Capabilities

Tall Arrays
Calculate with arrays that have more rows than fit in memory.

This function fully supports tall arrays. For more information, see Tall Arrays.

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Usage notes and limitations:

If you specify dim , then it must be a constant.

The outtype and nanflag options must be constant character vectors.

GPU Code Generation
Generate CUDA® code for NVIDIA® GPUs using GPU Coder™.

Usage notes and limitations:

If you specify dim , then it must be a constant.

The outtype and nanflag options must be constant character vectors.

GPU Arrays
Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.

Usage notes and limitations:

The order of the additions in the sum operation is not defined. Therefore, the sum operation on a GPU array might not return exactly the same answer as the sum operation on the corresponding MATLAB numeric array. The difference might be significant when A is a signed integer type and its product is accumulated natively.

For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).

Distributed Arrays
Partition large arrays across the combined memory of your cluster using Parallel Computing Toolbox™.

Usage notes and limitations:

The order of the additions in sum operation is not defined. Therefore, the sum operation on a distributed array might not return exactly the same answer as the sum operation on the corresponding MATLAB numeric array. The difference might be significant when A is a signed integer type and its product is accumulated natively.

For more information, see Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).

Эффективный (быстрый) способ суммирования элементов матрицы в matlab

давайте матрица A сказать A = magic(100); . Я видел 2 способа вычисления суммы всех элементов матрицы A .

один из них быстрее (или лучше практиковать), то другие? Если да, то какой? Или они оба одинаково быстры?

2 ответов

кажется, что вы не можете решить, является ли производительность или точность с плавающей запятой более важной.

если бы точность с плавающей запятой была первостепенной точностью, то вы бы разделили положительные и отрицательные элементы, сортируя каждый сегмент. Затем суммируем в порядке возрастания абсолютной величины. Да, я знаю, это больше работы, чем кто-либо мог бы сделать, и это, вероятно, будет пустой тратой времени.

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

что касается времени, для массива NxM,

sum (A (:)) потребует N*M-1 дополнений.

sum (sum (A)) потребует (N-1)*M + M-1 = N*M-1 дополнений.

для любого метода требуется одинаковое количество добавлений, поэтому для большого массива, даже если интерпретатор недостаточно умен, чтобы распознать, что они оба являются одинаковыми op, которые заботится?

это просто не проблема. Не делайте гору из кротового холма, чтобы беспокоиться об этом.

Edit: в ответ на комментарий Amro об ошибках для одного метода над другим, вы мало что можете контролировать. Дополнения будут сделаны в другом порядке, но нет никакой уверенности в том, какая последовательность будет лучше.

эти два решения довольно близки. На самом деле, по сравнению с eps, разница едва значительное.

Предположим, вы выбираете трюк разделения и сортировки, о котором я упоминал. Смотрите, чтобы отрицательная и положительная части были достаточно большими, чтобы произошла потеря точности.

таким образом, вам действительно нужно будет накапливать части в массиве с более высокой точностью. Мы могли бы попробовать следующее:

интересная проблема возникает даже в этих тестах. Будет ли проблема, потому что тесты выполняются на случайном (нормальном) массиве? По сути, мы можем рассматривать sum (A (:)) как случайное блуждание, прогулку пьяницы. Но рассмотрим sum(sum (A)). Каждый элемент sum (A) (т. е. внутренняя сумма) сам по себе является суммой 1000 нормальных отклонений. Взгляните на некоторые из них:—8—>

когда мы сложим их, будет потеря точности. Таким образом, потенциально операция как sum (A (:)) может быть немного более точной. Так ли это? Что, если мы используем более высокую точность для накопления? Итак, сначала я сформирую сумму по столбцам, используя Double, затем преобразуйте в 25 цифр десятичной точности и суммируйте строки. (Я отобразил здесь только 20 цифр, оставив 5 цифр скрытыми в качестве охранных цифр.)

или, вместо этого, немедленно преобразовать в 25 цифр точности, а затем суммировать результат.

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

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

то, о чем я бы беспокоился, это проблемы с плавающей запятой. Пример:

увеличивается величина ошибки для больших матриц

Matlab сумма элементов массива

sx = sum(X)
csx = cumsum(X)

Функция sx = sum(X) в случае одномерного массива возвращает сумму элементов массива; в случае двумерного массива — это вектор-строка, содержащая суммы элементов каждого столбца.

Функция csx = cumsum(X), кроме того, возвращает все промежуточные результаты суммирования.

Пример:

Рассмотрим массив M = magic(3): M = magic(3)

M =816
357
492
cumsum(M)sum(M)
816
11613
151515
151515

Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter

Так что я задумался об этом какое-то время. Суммирование по некоторой переменной массива A так же просто, как

Однако, как только он попадает в выражения, (:) больше не работает, как

нет правильного синтаксиса Matlab, вместо этого нам нужно написать

Один вкладыш выше будет работать только в том случае, если размер А фиксирован, что, в зависимости от того, что вы делаете, может и не быть необходимым. Недостатком этих двух строк является то, что foo будет храниться в памяти до тех пор, пока вы не запустите clear foo или это может оказаться невозможным в зависимости от размера A и того, что еще находится в вашем рабочем пространстве.

Есть ли общий способ обойти эту проблему и суммировать все элементы массива-выражения в одну строку / без создания временных переменных? Что-то вроде sum(A-2*A,’-all’) ?

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

Хотя можно решить мою проблему с помощью ответа, приведенного в ссылке, gnovice сам говорит, что использование subref является довольно некрасивым решением. Далее Андрас Дик опубликовал гораздо более чистый способ сделать это в комментариях ниже.

1 ответ

Хотя ответы на связанный дубликат действительно могут быть применены к вашей проблеме, более узкая область вашего вопроса позволяет нам дать гораздо более простое решение, чем предоставленные там ответы.

Вы можете суммировать все элементы в выражении (включая возвращаемое значение функции), изменив сначала массив в 1d:

Это преобразует ваше выражение со значением массива в size [1, N] где N выводится из размера массива, то есть numel(A-2*A) (но приведенный выше синтаксис reshape вычислит недостающее измерение для вас, нет необходимости оценивать свое выражение дважды). Затем один вызов sum будет суммировать все элементы по мере необходимости.

Фактический случай, когда вам приходится прибегать к чему-то подобному, это когда функция возвращает массив с неизвестным числом измерений, и вы хотите использовать его сумму в анонимной функции (делая временные переменные недоступными):

Все переменные всех типов данных в MATLAB являются многомерными массивами. Вектор – это одномерный массив, а матрица – это двумерный массив.

Мы уже обсуждали векторы и матрицы. В этой главе мы обсудим многомерные массивы. Однако перед этим давайте обсудим некоторые специальные типы массивов.

Специальные массивы в MATLAB

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

Функция нулей () создает массив всех нулей –

MATLAB выполнит приведенный выше оператор и вернет следующий результат –

Функция ones () создает массив всех единиц –

MATLAB выполнит приведенный выше оператор и вернет следующий результат –

Функция eye () создает единичную матрицу.

MATLAB выполнит приведенный выше оператор и вернет следующий результат –

Функция rand () создает массив равномерно распределенных случайных чисел по (0,1) –

MATLAB выполнит приведенный выше оператор и вернет следующий результат –

Магический Квадрат

Магический квадрат – это квадрат, который дает одинаковую сумму, когда его элементы добавляются построчно, по столбцам или по диагонали.

Функция magic () создает массив магических квадратов. Требуется исключительный аргумент, который дает размер квадрата. Аргумент должен быть скаляром, большим или равным 3.

MATLAB выполнит приведенный выше оператор и вернет следующий результат –

Многомерные массивы

В MATLAB массив, имеющий более двух измерений, называется многомерным массивом. Многомерные массивы в MATLAB являются расширением нормальной двумерной матрицы.

Обычно для создания многомерного массива мы сначала создаем двумерный массив и расширяем его.

Например, давайте создадим двумерный массив a.

MATLAB выполнит приведенный выше оператор и вернет следующий результат –

Массив a является массивом 3 на 3; мы можем добавить третье измерение к, предоставив такие значения, как –

MATLAB выполнит приведенный выше оператор и вернет следующий результат –

Мы также можем создавать многомерные массивы, используя функции ones (), zeros () или rand ().

MATLAB выполнит приведенный выше оператор и вернет следующий результат –

Мы также можем использовать функцию cat () для построения многомерных массивов. Он объединяет список массивов по указанному измерению –

Синтаксис для функции cat () –

B – новый созданный массив

A1 , A2 , … массивы, которые будут объединены

dim – это размер, по которому объединяются массивы.

B – новый созданный массив

A1 , A2 , … массивы, которые будут объединены

dim – это размер, по которому объединяются массивы.

пример

Создайте файл сценария и введите в него следующий код –

Когда вы запускаете файл, он отображает –

Функции массива

MATLAB предоставляет следующие функции для сортировки, вращения, перестановки, изменения формы или смещения содержимого массива.

функцияЦель
длинаДлина вектора или наибольшее измерение массива
ndimsКоличество размеров массива
numelКоличество элементов массива
размерРазмеры массива
iscolumnОпределяет, является ли ввод вектором столбца
пустойОпределяет, является ли массив пустым
ismatrixОпределяет, является ли ввод матричным
isrowОпределяет, является ли ввод вектором строки
isscalarОпределяет, является ли вход скалярным
isvectorОпределяет, является ли входной вектор
blkdiagСоздает блочную диагональную матрицу из входных аргументов.
circshiftСмещает массив по кругу
ctransposeКомплексное сопряженное транспонирование
диагДиагональные матрицы и диагонали матрицы
flipdimПереворачивает массив по указанному измерению
fliplrОтразить матрицу слева направо
flipudПереворачивает матрицу вверх-вниз
ipermuteИнвертирует перестановочные размеры массива ND
переставлятьПереставляет размеры массива ND
repmatРеплики и массив плиток
перекроитьПерекраивает массив
rot90Поворот матрицы на 90 градусов
shiftdimСмещает размеры
issortedОпределяет, находятся ли заданные элементы в отсортированном порядке
СортироватьСортирует элементы массива в порядке возрастания или убывания
sortrowsСортирует строки в порядке возрастания
выжиматьУдаляет одиночные размеры
транспонироватьтранспонировать
векторизоватьВекторизованное выражение

Примеры

Следующие примеры иллюстрируют некоторые из функций, упомянутых выше.

Длина, Размер и Количество элементов –

Создайте файл сценария и введите в него следующий код –

Когда вы запускаете файл, он показывает следующий результат –

Круговое смещение элементов массива –

Создайте файл сценария и введите в него следующий код –

Когда вы запускаете файл, он показывает следующий результат –

Сортировка массивов

Создайте файл сценария и введите в него следующий код –

Когда вы запускаете файл, он показывает следующий результат –

Cell Array

Массивы ячеек – это массивы индексированных ячеек, где каждая ячейка может хранить массив разных измерений и типов данных.

Функция cell используется для создания массива cell. Синтаксис для функции ячейки –

С – массив ячеек;

dim – скалярное целое число или вектор целых чисел, который определяет размеры массива ячеек C;

dim1, …, dimN – скалярные целые числа, которые определяют размеры C;

obj является одним из следующих –

  • Массив или объект Java
  • .NET массив типа System.String или System.Object

С – массив ячеек;

dim – скалярное целое число или вектор целых чисел, который определяет размеры массива ячеек C;

dim1, …, dimN – скалярные целые числа, которые определяют размеры C;

obj является одним из следующих –

пример

Создайте файл сценария и введите в него следующий код –

Когда вы запускаете файл, он показывает следующий результат –

Доступ к данным в массивах ячеек

Существует два способа обращения к элементам массива ячеек:

  • Заключение индексов в первую скобку () для ссылки на наборы ячеек
  • Заключение индексов в фигурные скобки <> для ссылки на данные в отдельных ячейках

Когда вы заключаете индексы в первую скобку, это относится к набору ячеек.

Индексы массива ячеек в гладких скобках относятся к наборам ячеек.

MATLAB выполнит приведенный выше оператор и вернет следующий результат –

Вы также можете получить доступ к содержимому ячеек путем индексации с помощью фигурных скобок.

MATLAB выполнит приведенный выше оператор и вернет следующий результат –

Ссылка на основную публикацию
Adblock
detector