Syntax
Description
example
returnsm
= geomean(X
)
the geometric mean of
X
.
-
If
X
is a vector, thengeomean(X)
is the
geometric mean of the elements inX
. -
If
X
is a matrix, thengeomean(X)
is a row
vector containing the geometric mean of each column ofX
. -
If
X
is a multidimensional array, then
geomean
operates along the first nonsingleton dimension of
X
.
example
m
= geomean(X
,'all')
returns the geometric mean of all the elements in X
.
example
m
= geomean(X
,dim
)
returns the geometric mean along the operating dimension dim
of
X
.
example
m
= geomean(X
,vecdim
)
returns the geometric mean over the dimensions specified in the vector
vecdim
. For example, if X
is a 2-by-3-by-4 array,
then geomean(X,[1 2])
returns a 1-by-1-by-4 array. Each element of the
output array is the geometric mean of the elements on the corresponding page of
X
.
example
m
= geomean(___,nanflag
)
specifies whether to exclude NaN
values from the calculation, using any
of the input argument combinations in previous syntaxes. By default,
geomean
includes NaN
values in the calculation
(nanflag
has the value 'includenan'
). To exclude
NaN
values, set the value of nanflag
to
'omitnan'
.
Examples
collapse all
Compare Geometric and Arithmetic Mean
Set the random seed for reproducibility of the results.
Create a matrix of exponential random numbers with 5 rows and 4 columns.
X = 5×4
0.2049 2.3275 1.8476 1.9527
0.0989 1.2783 0.0298 0.8633
2.0637 0.6035 0.0438 0.0880
0.0906 0.0434 0.7228 0.2329
0.4583 0.0357 0.2228 0.0414
Compute the geometric and arithmetic means of the columns of X
.
geometric = 1×4
0.2805 0.3083 0.2079 0.2698
arithmetic = 1×4
0.5833 0.8577 0.5734 0.6357
The arithmetic mean is greater than the geometric mean for all the columns of X
.
Geometric Mean of All Elements
Find the geometric mean over multiple dimensions by using the 'all'
input argument.
Create a 2-by-5-by-4 array X
.
X = reshape(1:40,[2 5 4])
X = X(:,:,1) = 1 3 5 7 9 2 4 6 8 10 X(:,:,2) = 11 13 15 17 19 12 14 16 18 20 X(:,:,3) = 21 23 25 27 29 22 24 26 28 30 X(:,:,4) = 31 33 35 37 39 32 34 36 38 40
Find the geometric mean of all the elements of X
.
m
is the geometric mean of the entire array X
.
Geometric Mean Along Specified Dimensions
Find the geometric mean along different operating dimensions and vectors of dimensions for a multidimensional array.
Create a 3-by-5-by-2 array X
.
X = reshape(1:30,[3 5 2])
X = X(:,:,1) = 1 4 7 10 13 2 5 8 11 14 3 6 9 12 15 X(:,:,2) = 16 19 22 25 28 17 20 23 26 29 18 21 24 27 30
Find the geometric mean of X
along the default dimension.
gmean1 = gmean1(:,:,1) = 1.8171 4.9324 7.9581 10.9696 13.9761 gmean1(:,:,2) = 16.9804 19.9833 22.9855 25.9872 28.9885
By default, geomean
operates along the first dimension of X
whose size does not equal 1. In this case, this dimension is the first dimension of X
. Therefore, gmean1
is a 1-by-5-by-2 array.
Find the geometric mean of X
along the second dimension.
gmean2 = gmean2(:,:,1) = 5.1549 6.5784 7.8155 gmean2(:,:,2) = 21.5814 22.6004 23.6177
gmean2
is a 3-by-1-by-2 array.
Find the geometric mean of X
along the third dimension.
gmean3 = 3×5
4.0000 8.7178 12.4097 15.8114 19.0788
5.8310 10.0000 13.5647 16.9115 20.1494
7.3485 11.2250 14.6969 18.0000 21.2132
gmean3
is a 3-by-5 array.
Find the geometric mean of each page of X
by specifying the first and second dimensions using the vecdim
input argument.
mpage = mpage(:,:,1) = 6.4234 mpage(:,:,2) = 22.5845
For example, mpage(1,1,2)
is the geometric mean of the elements in X(:,:,2)
.
Find the geometric mean of the elements in each X(i,:,:)
slice by specifying the second and third dimensions.
mrow = 3×1
10.5475
12.1932
13.5862
For example, mrow(3)
is the geometric mean of the elements in X(3,:,:)
, and is equivalent to specifying geomean(X(3,:,:),'all')
.
Geometric Mean Excluding NaN
Create a vector and compute its geomean
, excluding NaN
values.
x = 1:10; x(3) = nan; % Replace the third element of x with a NaN value n = geomean(x,'omitnan')
If you do not specify 'omitnan'
, then geomean(x)
returns NaN
.
Input Arguments
collapse all
X
— Input data
nonnegative vector | nonnegative matrix | nonnegative multidimensional array
Input data that represents a sample from a population, specified as a nonnegative
vector, matrix, or multidimensional array.
-
If
X
is a vector, thengeomean(X)
is
the geometric mean of the elements inX
. -
If
X
is a matrix, thengeomean(X)
is a
row vector containing the geometric mean of each column of
X
. -
If
X
is a multidimensional array, then
geomean
operates along the first nonsingleton dimension of
X
.
To specify the operating dimension when X
is a matrix or an
array, use the dim
input argument.
Data Types: single
| double
dim
— Dimension
positive integer scalar
Dimension along which to operate, specified as a positive integer scalar. If you do
not specify a value, then the default value is the first array dimension of
X
whose size does not equal 1.
Consider a two-dimensional array X
:
-
If
dim
is equal to 1, thengeomean(X,1)
returns a row vector containing the geometric mean for each column in
X
. -
If
dim
is equal to 2, thengeomean(X,2)
returns a column vector containing the geometric mean for each row in
X
.
If dim
is greater than ndims(X)
or if
size(X,dim)
is 1, then geomean
returns
X
.
Data Types: single
| double
vecdim
— Vector of dimensions
positive integer vector
Vector of dimensions, specified as a positive integer vector. Each element of
vecdim
represents a dimension of the input array
X
. The output m
has length 1 in the
specified operating dimensions. The other dimension lengths are the same for
X
and m
.
For example, if X
is a 2-by-3-by-3 array, then
geomean(X,[1 2])
returns a 1-by-1-by-3 array. Each element of the
output is the geometric mean of the elements on the corresponding page of
X
.
Data Types: single
| double
nanflag
— NaN
condition
'includenan'
(default) | 'omitnan'
NaN
condition, specified as one of these values:
-
'includenan'
— IncludeNaN
values when
computing thegeomean
. This returns
NaN
. -
'omitnan'
— IgnoreNaN
values in the
input.
Data Types: char
| string
Output Arguments
collapse all
m
— Geometric mean
scalar | vector | matrix | multidimensional array
Geometric mean, returned as a scalar, vector, matrix, or multidimensional
array.
More About
collapse all
Geometric Mean
The geometric mean of a sample X
is
where n is the number of values in
X
.
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:
-
These input arguments are not supported:
'all'
,
vecdim
, andnanflag
. -
The
dim
input argument must be a compile-time constant. -
If you do not specify the
dim
input
argument, the working (or operating) dimension can be different in the generated code. As a
result, run-time errors can occur. For more details, see Automatic dimension restriction (MATLAB Coder).
For more information on code generation, see Introduction to Code Generation and General Code Generation Workflow.
Thread-Based Environment
Run code in the background using MATLAB® backgroundPool
or accelerate code with Parallel Computing Toolbox™ ThreadPool
.
This function fully supports thread-based environments. For
more information, see Run MATLAB Functions in Thread-Based Environment.
GPU Arrays
Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.
Usage notes and limitations:
-
The
'all'
andvecdim
input arguments are not supported.
For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Version History
Introduced before R2006a
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
using System; class Program { static void Main() { Console.Write("Введите количество строк в матрице: "); int M = int.Parse(Console.ReadLine()); Console.Write("Введите количество столбцов в матрице: "); int N = int.Parse(Console.ReadLine()); double count = (double)M * N; int[,] matrix = new int[M, N]; Random r = new Random(); // объявление переменной для генерации случ. чисел for (int i = 0; i < M; i++) // заполнения матрицы случ. числами { for (int j = 0; j < N; j++) { matrix[i, j] = r.Next(1, 99); // от 1 до 99 } } /* //заполение матрицы с клавиатуры Console.WriteLine(); Console.Write("Введите значение {0} ", count); Console.WriteLine(); for (int i = 0; i < M; ++i) { for (int j = 0; j < N; ++j) { Console.Write("Введите значение элемента матрицы для строки {0}, столбец {1}: ", i,j); matrix[i, j] = Convert.ToInt32(Console.ReadLine()); } } */ Console.WriteLine(); Console.WriteLine("Получаем матрицу вида:"); Console.WriteLine(); for (int i = 0; i < M; i++) // вывод матрицы { for (int j = 0; j < N; j++) { Console.Write("{0,4}", matrix[i, j]); } Console.WriteLine(); } double Mul = 1.0; int moreAverage = 0;//больше среднего int lessAverage = 0;//меньше среднего //Подсчёт произведения элементов матрицы for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { Mul *= matrix[i, j]; } } //среднее геометрическое значение элементов матрицы double averGeom = Math.Pow(Mul, 1.0 / count); Console.WriteLine(); Console.WriteLine("Cреднее геометрическое значение элементов матрицы : " + averGeom); /*Подсчёт каких элементов в матрице больше, больших среднего геометрического или меньших среднего геометрического*/ for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { if (averGeom < matrix[i, j]) moreAverage++; else if (averGeom > matrix[i, j]) lessAverage++; } } Console.WriteLine(); if (moreAverage > lessAverage) Console.WriteLine("Элементов в матрице, которые больше среднего геометрического, больше."); if (moreAverage < lessAverage) Console.WriteLine("Элементов в матрице, которые меньше среднего геометрического, больше."); Console.ReadKey(); } } |
Цель
работы:
выработать
практические
привычки
в
составлении
алгоритмов
на
селективную
обработку
двумерных
массивов.
Общие указания
1 Вложенные циклы
Вложенные
циклы используются при работе с
многомерными функциями и множествами.
При этом нужно следить, чтобы не было
перекрещивания циклов. Его не будет,
если циклы закрываются в порядке,
обратном открыванию (см. пример 5).
Пример
10.
В матрице a(4,5)
найти произведение положительных чисел.
Порядок
работы
Шаг
1. Вводим матрицу a(4,5).
Шаг
2. Задаем начальное значение произведения
p=1.
Шаг
3. Организовываем цикл, перебирающий
строки матрицы (т.е. индекс i),
начиная с 1-ой и кончая 4-ой.
Шаг
4. Организовываем цикл, перебирающий
столбцы матрицы (т.е. индекс j),
начиная с 1-го и кончая 5-м.
Шаг
5. Если aij
>
0,
тогда присваиваем p
= p
aij.
Шаг
6. Если цикл по j
не закончился, идем на начало цикла,
т.е. на шаг 4.
Шаг
7. Если цикл по i
не закончился, идем на начало цикла,
т.е. на шаг 3.
Шаг
8. Печатаем p.
Шаг
9. Останов.
Блок-схема
3.9 Обработка заданной строки (столбца) матрицы
Пример
11.
Найти сумму четных чисел третьей строки
матрицы a(4,5).
Порядок
работы
Шаг
1. Вводим матрицу a(4,5).
Шаг
2. Устанавливаем начальное значение
суммы s
= 0.
Шаг
3. Задаем номер обрабатываемой строки
i
= 3.
Шаг
4. Организовываем цикл, перебирающий
столбцы матрицы (т.е. индекс j),
начиная с 1-го и кончая 5-м.
Шаг
5. Если aij
четно,
тогда присваиваем s
= s
+ aij.
Шаг
6. Если цикл по j
не закончился, идем на начало цикла,
т.е. на шаг 4.
Шаг
7. Печатаем s.
Шаг
8. Останов.
3.10 Обработка заданной диагонали матрицы
Пример
12.
Найти сумму четных чисел главной
диагонали матрицы a(5,5).
Порядок
работы
Шаг
1. Вводим матрицу a(5,5).
Шаг
2. Устанавливаем начальное значение
суммы s=0.
Шаг
3. Организовываем цикл, перебирающий
строки матрицы (т.е. индекс i),
начиная с 1-й и кончая 5-й.
Шаг
4. Организовываем цикл, перебирающий
столбцы матрицы (т.е. индекс j),
начиная с 1-го и кончая 5-м.
Шаг
5. Если aij
четно
и i
= j,
присваиваем s
= s
+ aij.
Шаг
6. Если цикл по j
не закончился, идем на начало цикла ,
т.е. на шаг 4.
Шаг
7. Если цикл по i
не закончился, идем на начало цикла,
т.е. на шаг 3.
Шаг
8. Печатаем s.
Шаг
9. Останов.
3.11 Селективная обработка строки (столбца) матрицы, удовлетворяющей заданному условию
Обработка
строки (столбца) производится после ее
нахождения путем проверки каждой строки
на соответствие заданному условию.
Пример
13.
В матрице a(4,5)
найти количество четных чисел в строке,
у которой второй элемент положительный
(если таких строк несколько, результат
распечатать отдельно для каждой).
Порядок
работы
Шаг
1. Вводим матрицу a(4,5).
Шаг
2. Организовываем цикл, перебирающий
cтроки
матрицы (т.е. индекс i),
начиная с 1-й и кончая 4-й.
Шаг
3. Если ai2
> 0,
то идем на шаг 4, иначе берем другую
строку, т.е. идем на шаг 7.
Шаг
4. Устанавливаем начальное значение
количества k=0.
Шаг
5. Организовываем цикл, перебирающий
столбцы матрицы (т.е. индекс j),
начиная с 1-го и кончая 5-м.
Шаг
6. Если aij
четно,
тогда присваиваем k
= k
+ 1.
Шаг
7. Если цикл по j
не закончился, идем на начало цикла,
т.е. на шаг 5.
Шаг
8. Печатаем k.
Шаг
9. Если цикл по i
не закончился, идем на начало цикла,
т.е. на шаг 2.
Шаг
10. Останов.
Пример
14.
В матрице a(4,5)
найти количество четных чисел в строке,
у которой сумма элементов положительна
(если таких строк несколько, результат
распечатать отдельно для каждой).
Порядок
работы
Шаг
1. Вводим матрицу a(4,5).
Шаг
2. Организовываем цикл, перебирающий
cтроки
матрицы (т.е. индекс i),
начиная с 1-й и кончая 4-й.
Шаг
3. Устанавливаем начальное значение
суммы s
= 0.
Шаг
4. Организовываем цикл, перебирающий
столбцы матрицы (т.е. индекс j),
начиная с 1-го и кончая 5-м.
Шаг
5. Присваиваем s
= s
+ aij.
Шаг
6. Если цикл по j
не закончился, идем на начало цикла,
т.е. на шаг 4.
Шаг
7. Если s
> 0,
то идем на шаг 8, иначе — берем другую
строку, т.е. идем на шаг 13.
Шаг
8. Устанавливаем начальное значение
количества k=0.
Шаг
9. Организовываем цикл, перебирающий
столбцы матрицы (т.е. индекс j),
начиная с 1-го и кончая 5-м.
Шаг
10. Если aij
четно,
тогда присваиваем k
= k
+ 1.
Шаг
11. Если цикл по j
не закончился, идем на начало цикла,
т.е. на шаг 9.
Шаг
12. Печатаем k.
Шаг
13. Если цикл по i
не закончился, идем на начало цикла,
т.е. на шаг 2.
Шаг
14. Останов.
Задание
8.
Составить блок-схему для задания,
указанного в таблице 9. Имя и размер
матрицы выбрать самостоятельно.
Таблица
9
Вар. |
Условие |
1 |
Найти |
2 |
Найти |
3 |
Найти |
4 |
Найти |
5 |
Вычислить |
6 |
Найти |
7 |
Найти |
8 |
Найти |
9 |
Найти |
10 |
Найти |
11 |
Найти |
12 |
Найти |
13 |
Найти |
14 |
Найти |
15 |
Найти |
16 |
Найти |
17 |
Найти |
18 |
Найти |
19 |
Найти |
20 |
Найти |
21 |
Найти |
22 |
Определить |
23 |
Найти |
24 |
Найти |
25 |
Найти |
26 |
Определить |
27 |
Найти |
28 |
Найти |
29 |
Найти |
30 |
Определить |
Задание
9.
Составить блок-схему для задания,
указанного в таблице 10. Имя и размер
матрицы выбрать самостоятельно.
Таблица
10
Вар. |
Условие |
1 |
Найти |
2 |
Найти |
3 |
Вычислить |
4 |
Определить |
5 |
Найти |
6 |
Найти |
7 |
Найти |
8 |
Найти |
9 |
Найти |
10 |
Найти |
11 |
Найти |
12 |
Найти |
13 |
Найти |
14 |
Найти |
15 |
Найти |
16 |
Найти |
17 |
Найти |
18 |
Найти |
19 |
Найти |
20 |
Найти |
21 |
Найти |
22 |
Найти |
23 |
Найти |
24 |
Найти |
25 |
Найти |
26 |
Найти |
27 |
Найти |
28 |
Найти |
29 |
Найти |
30 |
Найти |
Задание
10.
Составить блок-схему для задания,
указанного в таблице 11. Имя и размер
матрицы выбрать самостоятельно.
Таблица
11
Вар. |
Условие |
1 |
Вычислить |
2 |
Найти |
3 |
Определить |
4 |
Найти |
5 |
Найти |
6 |
Найти |
7 |
Найти |
8 |
Найти |
9 |
Найти |
10 |
Найти |
11 |
Найти |
12 |
Найти |
13 |
Найти |
14 |
Найти |
15 |
Найти |
16 |
Найти |
17 |
Найти |
18 |
Найти |
19 |
Найти |
20 |
Найти |
21 |
Найти |
22 |
Найти |
23 |
Найти |
24 |
Найти |
25 |
Найти |
26 |
Найти |
27 |
Найти |
28 |
Найти |
29 |
Найти |
30 |
Найти |
Задание
11.
Составить блок-схему для задания,
указанного в таблице 12. Имя и размер
матрицы выбрать самостоятельно.
Таблица
12
Вар. |
Условие |
1 |
Вычислить |
2 |
Найти |
3 |
Определить |
4 |
Найти |
5 |
Найти |
6 |
Найти |
7 |
Найти |
8 |
Найти |
9 |
Найти |
10 |
Найти |
11 |
Найти |
12 |
Найти |
13 |
Найти |
14 |
Найти |
15 |
Найти |
16 |
Найти |
17 |
Найти |
18 |
Найти |
19 |
Найти |
20 |
Найти |
21 |
Найти |
22 |
Найти |
23 |
Найти |
24 |
Найти |
25 |
Найти |
26 |
Найти |
27 |
Найти |
28 |
Найти |
29 |
Найти |
30 |
Найти |
Задание
12.
Составить блок-схему для задания,
указанного в таблице 13. Имя и размер
матрицы выбрать самостоятельно.
Таблица
13
Вар. |
Условие |
1 |
Вычислить |
2 |
Найти |
3 |
Найти |
4 |
Найти |
5 |
Найти |
6 |
Найти |
7 |
Найти |
8 |
Найти |
9 |
Найти |
10 |
Найти |
11 |
Найти |
12 |
Найти |
13 |
Найти |
14 |
Найти |
15 |
Найти |
16 |
Найти |
17 |
Найти |
18 |
Найти |
19 |
Найти |
20 |
Найти |
21 |
Найти |
22 |
Найти |
23 |
Найти |
24 |
Найти |
25 |
Найти |
26 |
Найти |
27 |
Найти |
28 |
Найти |
29 |
Определить |
30 |
Вычислить |
Соседние файлы в папке ИТ11зт
- #
- #
- #
найти среднее геометрическое строки матрицы на которой находится макс элемент.
#include "stdafx.h" #include "stdio.h" #include "conio.h" #include "windows.h" #include "math.h" #define n 20 #define m 20 void main() { float a[n][m],srg,max,p; int i,j,ri,rj; char otv; while(1) { SetConsoleCP(1251); SetConsoleOutputCP(1251); system("cls"); printf("n Постановка"); while(1) { printf("n кол-во строк в массиве <=%d n",n); scanf("%d",&ri); if((ri>1)&&(ri<=n))break; printf("n повторите ввод"); } while(1) { printf("n кол-во столбцов в массиве <=%d n",m); scanf("%d",&rj); if((rj>1)&&(rj<=m))break; printf("n повторите ввод"); } system("cls"); printf("n Введите метрицу А n"); for(i=0;i<ri;i++) { for(j=0;j<rj;j++) { printf("a[%d][%d]=",i+1,j+1); scanf("%f",&a[i][j]); } } system("cls"); printf("n Исходная матрица n"); for ( i = 0; i <ri; i ++ ) { for ( j = 0; j <rj; j ++ ) printf ( "%6.2f", a[i][j] ); printf("n"); } max=a[0][0]; for (i=0;i<ri;i++) { for(j=0;i<rj;j++) if(a[i][j]>max) max=a[i][j]; } printf("n max=%6.2f",max); for (i=0;i<ri;i++) { p=1; srg=0; for(j=0;i<rj;j++) p=p*a[i][j]; srg=pow(p,1/ri); } for ( i = 0; i <ri; i ++ ) { for ( j = 0; j <rj; j ++ ) printf("n srg=%6.2f",srg); } printf("n Продолжить(Y/N)?"); scanf("%s",&otv); if((otv=='n')||(otv=='N'))break; } printf("n Клементьев 22П"); getch(); }
Выбивает после ввода элементов и я не додумаюсь как сделать чтобы искал среднее геометрическое только строки с макс. элементом
geomean
Синтаксис
Описание
пример
возвращает среднее геометрическое значение m
= geomean(X
)X
.
-
Если
X
является вектором, тогдаgeomean(X)
— среднее геометрическое элементов вX
. -
Если
X
является матрицей, тогдаgeomean(X)
— вектор-строка, содержащая среднее геометрическое для каждого столбцаX
. -
Если
X
является многомерным массивом, тогдаgeomean
действует по первой нежесткой размерностиX
.
пример
возвращает среднее геометрическое для всех элементов в m
= geomean(X
,'all')X
.
пример
возвращает среднее геометрическое значение по рабочей размерности m
= geomean(X
,dim
)dim
от X
.
пример
возвращает среднее геометрическое по размерностям, заданным в векторе m
= geomean(X
,vecdim
)vecdim
. Для примера, если X
— массив 2 на 3 на 4, затем geomean(X,[1 2])
возвращает 1 на 1 на 4 array. Каждый элемент массива выхода является геометрическим средним для элементов на соответствующей странице X
.
пример
определяет, следует ли исключить m
= geomean(___,nanflag
)NaN
значения из вычисления, с использованием любой комбинации входных аргументов в предыдущих синтаксисах. По умолчанию geomean
включает NaN
значения в вычислении (nanflag
имеет значение 'includenan'
). Чтобы исключить NaN
значения установите значение nanflag
на 'omitnan'
.
Примеры
свернуть все
Сравнение среднего геометрического и арифметического
Установите случайный seed для воспроизводимости результатов.
Создайте матрицу экспоненциальных случайных чисел с 5 строками и 4 столбцами.
X = 5×4
0.2049 2.3275 1.8476 1.9527
0.0989 1.2783 0.0298 0.8633
2.0637 0.6035 0.0438 0.0880
0.0906 0.0434 0.7228 0.2329
0.4583 0.0357 0.2228 0.0414
Вычислите геометрические и арифметические средства столбцов X
.
geometric = 1×4
0.2805 0.3083 0.2079 0.2698
arithmetic = 1×4
0.5833 0.8577 0.5734 0.6357
Средняя арифметика больше, чем среднее геометрическое для всех столбцов X
.
Среднее геометрическое всех элементов
Найдите среднее геометрическое по нескольким размерностям при помощи 'all'
входной параметр.
Создайте массив 2 на 5 на 4 X
.
X = reshape(1:40,[2 5 4])
X = X(:,:,1) = 1 3 5 7 9 2 4 6 8 10 X(:,:,2) = 11 13 15 17 19 12 14 16 18 20 X(:,:,3) = 21 23 25 27 29 22 24 26 28 30 X(:,:,4) = 31 33 35 37 39 32 34 36 38 40
Найдите среднее геометрическое для всех элементов X
.
m
— среднее геометрическое для всего массива X
.
Среднее геометрическое по заданным измерениям
Найдите среднее геометрическое по различным рабочим размерностям и векторам измерений для многомерного массива.
Создайте массив 3 на 5 на 2 X
.
X = reshape(1:30,[3 5 2])
X = X(:,:,1) = 1 4 7 10 13 2 5 8 11 14 3 6 9 12 15 X(:,:,2) = 16 19 22 25 28 17 20 23 26 29 18 21 24 27 30
Найдите среднее геометрическое значение X
вдоль размерности по умолчанию.
gmean1 = gmean1(:,:,1) = 1.8171 4.9324 7.9581 10.9696 13.9761 gmean1(:,:,2) = 16.9804 19.9833 22.9855 25.9872 28.9885
По умолчанию geomean
действует по первой размерности X
чей размер не равен 1. В этом случае эта размерность является первой размерностью X
. Поэтому gmean1
— массив 1 на 5 на 2.
Найдите среднее геометрическое значение X
вдоль второго измерения.
gmean2 = gmean2(:,:,1) = 5.1549 6.5784 7.8155 gmean2(:,:,2) = 21.5814 22.6004 23.6177
gmean2
— массив 3 на 1 на 2.
Найдите среднее геометрическое значение X
по третьей размерности.
gmean3 = 3×5
4.0000 8.7178 12.4097 15.8114 19.0788
5.8310 10.0000 13.5647 16.9115 20.1494
7.3485 11.2250 14.6969 18.0000 21.2132
gmean3
массив 3 на 5.
Найдите среднее геометрическое для каждой страницы X
путем определения первых и вторых измерений с помощью vecdim
входной параметр.
mpage = mpage(:,:,1) = 6.4234 mpage(:,:,2) = 22.5845
Для примера, mpage(1,1,2)
— среднее геометрическое элементов в X(:,:,2)
.
Найдите среднее геометрическое для элементов в каждом X(i,:,:)
срез путем определения вторых и третьих размерностей.
mrow = 3×1
10.5475
12.1932
13.5862
Для примера, mrow(3)
— среднее геометрическое элементов в X(3,:,:)
, и эквивалентно указанию geomean(X(3,:,:),'all')
.
Среднее геометрическое исключение NaN
Создайте вектор и вычислите его geomean
, исключая NaN
значения.
x = 1:10; x(3) = nan; % Replace the third element of x with a NaN value n = geomean(x,'omitnan')
Если вы не задаете 'omitnan'
, затем geomean(x)
возвращает NaN
.
Входные параметры
свернуть все
X
— Входные данные
неотрицательный вектор | неотрицательная матрица | неотрицательный многомерный массив
Входные данные, который представляет выборку из населения, заданную в виде неотрицательного вектора, матрицы или многомерного массива.
-
Если
X
является вектором, тогдаgeomean(X)
— среднее геометрическое элементов вX
. -
Если
X
является матрицей, тогдаgeomean(X)
— вектор-строка, содержащая среднее геометрическое для каждого столбцаX
. -
Если
X
является многомерным массивом, тогдаgeomean
действует по первой нежесткой размерностиX
.
Чтобы задать рабочую размерность, когда X
является матрицей или массивом, используйте dim
входной параметр.
Типы данных: single
| double
dim
— Размерность
положительный целочисленный скаляр
Размерность, по которой можно работать, заданная как положительный целочисленный скаляр Если вы не задаете значение, то значение по умолчанию является первым измерением массива X
чей размер не равен 1.
Рассмотрим двумерный массив X
:
-
Если
dim
равно 1, тогдаgeomean(X,1)
возвращает вектор-строку, содержащую среднее геометрическое для каждого столбца вX
. -
Если
dim
равно 2, тогдаgeomean(X,2)
возвращает вектор-столбец, содержащее среднее геометрическое для каждой строки вX
.
Если dim
больше ndims(X)
или если size(X,dim)
равен 1, тогда geomean
возвращает X
.
Типы данных: single
| double
vecdim
— Вектор размерностей
положительный целочисленный вектор
Вектор размерностей, заданный как положительный целочисленный вектор. Каждый элемент vecdim
представляет размерности массива входа X
. Область выхода m
имеет длину 1 в заданных рабочих размерностях. Другие длины размерности одинаковы для X
и m
.
Для примера, если X
массив 2 на 3 на 3, тогда geomean(X,[1 2])
возвращает массив 1 на 1 на 3. Каждый элемент выхода является геометрическим средним для элементов на соответствующей странице X
.
Типы данных: single
| double
nanflag
— NaN
состояние
'includenan'
(по умолчанию) | 'omitnan'
NaN
условие, заданное как одно из следующих значений:
-
'includenan'
— ВключитьNaN
значений при вычисленииgeomean
. Это возвращаетNaN
. -
'omitnan'
— ИгнорироватьNaN
значений во входе.
Типы данных: char
| string
Выходные аргументы
свернуть все
m
— Среднее геометрическое
скалярный | векторный | матричный | многомерный массив
Геометрическое среднее, возвращенное как скалярный, векторный, матричный или многомерный массив.
Подробнее о
свернуть все
Среднее геометрическое
Среднее геометрическое значение выборки X
является
где n — количество значений в X
.
Расширенные возможности
Длинные» массивы
Осуществление вычислений с массивами, которые содержат больше строк, чем помещается в памяти.
Эта функция полностью поддерживает длинные массивы. Для получения дополнительной информации см. Раздел «Длинные массивы»
Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®
.
Указания и ограничения по применению:
-
Эти входные параметры не поддерживаются:
'all'
,vecdim
, иnanflag
. -
The
dim
входной параметр должен быть константой времени компиляции. -
Если вы не задаете
dim
входной параметр, рабочий (или рабочий) размерность может быть различным в сгенерированном коде. В результате могут возникнуть ошибок времени выполнения. Для получения дополнительной информации смотрите Автоматическое ограничение размерности (MATLAB Coder).
Для получения дополнительной информации о генерации кода смотрите Введение в генерацию кода и Рабочий процесс генерации общего кода.
Массивы графических процессоров
Ускорите код, запустив на графическом процессорном модуле (GPU) с помощью Parallel Computing Toolbox™.
Указания и ограничения по применению:
-
The
'all'
иvecdim
входные параметры не поддерживаются.
Для получения дополнительной информации смотрите Запуск функций MATLAB на графическом процессоре (Parallel Computing Toolbox).
Представлено до R2006a