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

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

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.

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.

outtype Output 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 .

Читайте также:  Etrex 10 загрузка карты россии

‘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 ® , чтобы анализировать и разработать системы и продукты, преобразовывающие наш мир. Матричный язык MATLAB является самым естественным способом в мире выразить вычислительную математику. Встроенная графика облегчает визуализацию и понимание данных. Окружение рабочего стола способствует экспериментированию, исследованиям и открытиям. Эти средства MATLAB и возможности все строго протестированы и разработаны, чтобы работать совместно.

MATLAB помогает вам воплощать свои идеи за пределами рабочего стола. Можно запустить исследования больших наборов данных и масштабировать до кластеров и облаков. Код MATLAB может быть интегрирован с другими языками, позволив вам развернуть алгоритмы и приложения в сети, предприятии и промышленных системах.

Начало работы

Изучите основы MATLAB

Основы языка

Синтаксис, индексация и обработка массива, типы данных, операторы

Импорт и анализ данных

Импорт и экспорт данных, в том числе и больших файлов; предварительная обработка данных, визуализация и исследования

Читайте также:  Thunar не видит сеть

Математика

Линейная алгебра, дифференцирование и интегрирование, преобразования Фурье и прочая математика

Графика

2D и 3D графики, изображения, анимация

Программирование

Скрипты, функции и классы

Создание приложений

Разработка приложений с помощью App Designer, программируемого рабочего процесса или GUIDE

Инструменты разработки программного обеспечения

Отладка и тестирование, организация крупных проектов, интеграция с системой контроля версий, упаковка тулбоксов

Внешние интерфейсы языка

Внешние интерфейсы к языкам и библиотекам, включая Python ® , Java ® , C, C++.NET и веб-сервисы

Среда и настройки

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

Так что я задумался об этом какое-то время. Суммирование по некоторой переменной массива 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 будет суммировать все элементы по мере необходимости.

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

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