Elettracompany.com

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

Что означает в matlab

Стандартные функции Matlab

Все операции в Matlab ориентированы прежде всего на работу с матрицами, но могут выть использованы при работе с векторами и скалярными переменными.

Элементарные функции Matlab. К ним относятся следующие функции:

sin(x) sinh(x) asin(x) asinh(x)

cos(x) cosh(x) acos(x) acosh(x)

tan(x) tanh(x) atan(x) atan2(x,y) atanh(x)

cot(x) coth(x) acot(x) acoth(x)

exp(x) log(x) log10(x) log2(x) pow2(x) sqrt(x)

Функции комплексного аргумента:

abs(z) – модуль комплексного числа; angle(z) – аргумент;

complex(x, y) – формирование комплексного числа x+y*i;

conj(z) – возвращает комплексно-сопряженное (по отношению к z) число;

real(z) – возвращает действительную часть; imag(z) – мнимую часть.

Функции округления и нецелочисленного деления:

fix(x) – округление в сторону к нулю, floor(x) – к –¥, ceil(x) – к +¥,

round(x) – до ближайшего целого;

mod(x, y) – остаток от деления x/y с учетом знака,

rem(x, y) – то же, без учета знака;

sign(x) – знак числа (+1/–1).

Элементарные функции, как и всякие другие, имеют один результат (массив). Элементарные функции могут быть использованы с одинаковым синтаксисом как для чисел, так и для массивов.

Пример 1. Разный тип параметров

» x=-8; X=[5 -1 -2]; A=[1 2 -3; -5 6 7]; z=3-4i;

Различают матричные и поэлементные арифметические операции.

+ – уточнение знака (унарная), сложение;

– – изменение знака (унарная), вычитание;

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

C = A ± B означает

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

* – скалярное матричное умножение;

^ – матричное возведение в степень;

.^ – поэлементное возведение в степень;

– матричное деление слева;

/ – матричное деление справа;

.’ – несопряженное транспонирование (унарная).

Все арифметические операции, за исключением указанных, являются бинарными.

В операциях +, –, .*, ./ и .^ либо оба операнда должны иметь одинаковую размерность, либо один из операндов должен быть скалярной величиной.

» A=[1 2 3; 4 5 6]; B=[7 8 9; 3 2 1];

7.0000 4.0000 3.0000

0.7500 0.4000 0.1667

0.7000 0.8000 0.9000

0.3000 0.2000 0.1000

Для операции * (матричное произведение) матрица-сомножитель2 должна иметь столько строк, сколько столбцов имеет матрица-сомножитель1:

Inner matrix dimensions must agree.

Операции транспонирования ‘ и .’ для матриц с действительными коэффициентами абсолютно равнозначны:

Для комплексных чисел и матриц с комплексными коэффициентами операция ‘ дает транспонированную сопряженную матрицу, а операция .’ – транспонированную несопряженную:

» Ac=[1+2i 1+3i 1+4i; 2+3i 2+4i 2+5i];

1.0000 — 2.0000i 2.0000 — 3.0000i

1.0000 — 3.0000i 2.0000 — 4.0000i

1.0000 — 4.0000i 2.0000 — 5.0000i

1.0000 + 2.0000i 2.0000 + 3.0000i

1.0000 + 3.0000i 2.0000 + 4.0000i

1.0000 + 4.0000i 2.0000 + 5.0000i

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

-0.9100 — 3.5442i 0.4163 + 1.6212i

0.6244 + 2.4318i -0.2856 — 1.1124i

генерирует обратную матрицу D -1 .

Операция X/Y эквивалентна X*Y -1 , операция XY – операции X -1 *Y.

Последняя операция широко используется при решении систем линейных уравнений вида

Действительно, представив систему уравнений в матричной форме:

и умножив обе части последнего уравнения на A -1 слева, получим:

A -1 * A * X = A -1 * B,

откуда решение системы уравнений:

Пример. Решить систему уравнений

Решение сводится к набору в интерактивном режиме следующих команд:

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

| – логическое «или» (0|0 – 0, 1|0 – 1, 0|1 – 1, 1|1 – 1);

xor – логическое исключающее «или» (0xor0 – 0, 0xor1 – 1, 1xor0 – 1, 1xor1 – 0);

Если логические операции (а также логические функции) выполняются над действительными числами, то ложью считают число нуль, а истиной – все числа, не равные нулю.

Операции отношения (сравнения)

> – больше; >= – больше или равно; 1

» A=[1 8 3; 6 2 5]; B=[4 3 1; 2 6 8];

» A d 0 , 10 dk ]. Шаг по показателю степени hd= . Отношение двух соседних элементов есть величина постоянная =10 hd .

10 100 1000 10000

1.0000 2.0000 3.0000 4.0000

zeros – матрица, состоящая из нулей; ones – матрица, состоящая из единиц;

rand – матрица, состоящая из случ. чисел с равномерным распределением;

randn – матрица, состоящая из случ. Чисел с нормальным распределением.

zeros(n) – формирует квадратную матрицу n´n, состоящую из нулей;

zeros(m, n) – формирует матрицу m´n, состоящую из нулей;

(zeros(1, n) – вектор-строка; zeros(m, 1) – вектор-столбец)

zeros(size(A)) – формирует матрицу, состоящую из нулей, той же размерности, что и матрица A.

Формат обращения к функциям ones, rand и randn аналогичный.

Разницу между функциями rand и randn можно показать графически:

» xr=rand(1,100); xrs=sort(xr); bar(xrs)

» yr=randn(1,100); yrs=sort(yr); bar(yrs)

eye(n) – формирует единичную диагональную матрицу n´n.

diag(B) (B – двухмерная матрица) – выделяет главную диагональ матрицы B и помещает ее в вектор-столбец;

diag(x) (x – вектор) – формирует диагональную матрицу, используя вектор x в качестве главной диагонали.

» A=[1 2 3; 4 5 6; 7 8 9];

Манипуляции с матрицами

tril (A) – формирует треугольную матрицу как нижнюю часть от матрицы A;

triu(A) – формирует треугольную матрицу как верхнюю часть от матрицы А.

» A=[1 2 3; 4 5 6; 7 8 9];

lu(A) – разложение Холецкого – заменяет квадратную матрицу A скалярным произведением двух треугольных матриц L и U методом Гаусса:

» A=[1 2 3; 4 5 6; 7 8 9];

0.5714 0.5000 1.0000

7.0000 8.0000 9.0000

inv(A) – возвращает матрицу A -1 , обратную заданной квадратной матрице A;

det(A) – возвращает определитель квадратной матрицы A.

fliplr(A) – поворот матрицы A на 180° в горизонтальном направлении;

flipud(A) – поворот матрицы A на 180° в вертикальном направлении;

rot90(A) – поворот матрицы A на 90° против часовой стрелки;

rot90(A, k) – поворот матрицы A на k*90° против часовой стрелки (k – целое число).

Манипуляции с векторами

cross(x, y) – векторное произведение векторов x и y в трехмерном пространстве;

cross(A, B, dim) – векторное произведение многомерных массивов A и B по размерности dim;

dot(x, y) – скалярное произведение векторов x и y;

dot(A, B, dim) – скал. произведение многомерных массивов A и B по размерности dim.

Длины векторов x и y, а также длина матриц A и B по размерности dim должны быть равны 3.

Базовые операции анализа

Пусть a,b,c – числа, х,у,z – векторы, А,В,C – матрицы.

Читать еще:  Php ldap bind

c=max(a, b) – возвращает максимальное из двух чисел a и b (при комплексных аргументах по умолчанию сравниваются модули):

z=max(x, y) – вектор той же размерности, что x и y, составленный из максимальных элементов векторов;

C=max(A, B) – матрица той же размерности, что и , составленная из максимальных элементов матриц.

xmax=max(x) – максимальный элемент вектора x;

[xmax, imax]=max(x) – дополнительно записывает адрес максимального элемента в числовую переменную imax (если максимальных элементов несколько, возвращается адрес первого из них);

amax=max(A) – возвращает вектор-строку amax из максимальных элементов столбцов матрицы А;

[amax, imax]=max(A) – дополнительно формируется вектор-строка imax, составленный из номеров строк, в которых расположены максимальные элементы столбцов.

» a=1; b=2; x=[1 3 2]; y=[2 1 3]; A=[1 2 3; 4 5 6]; B=[3 2 1; 6 5 4];

Лаборатория цвета в Matlab. Введение

Назначение системы Matlab

Система Matlab — это универсальное приложение для исследователей, которые занимаются разработкой нового оборудования, алгоритмов, программ.

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

Начиная с 7-ой версии Matlab, в ней появились средства для выполнения цветовых преобразований и, что особеннно ценно, работы с ICC-профилями.

Интерфейс Matlab

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

Наберите в области командного ввода:

В результате будет создана новая переменная a. Теперь ее можно использовать в выражениях:

В результате получаем новую переменную b, которая получит значение 30.

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

Переменные в Matlab не требуют объявления, но тем не менее сами переменные типизированы. Это означает, что для некоторых операций необходимы специальные преобразования.

Уничтожить созданную переменную можно специальной командой:

Итак, переменные в Matlab:

  • Чувствительны к регистру в имени
  • Не требуют определения типа переменной (целая, вещественная, массив)
  • Для просмотра значения переменной достаточно набрать ее имя в командной строке (без точки с запятой в конце)
  • Для уничтожения переменной надо использовать команду clear

Получение справки в Matlab

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

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

Ответ системы будет выглядеть примерно так:

Если вы хотите узнать перечень функций конкретного пакета, скажем elfun, то нужно просто набрать:

Система выдаст полный сисок доступных элементарных функций. Чтобы просмотреть справку по назначению и синтаксису конкретной функции, скажем SIN нужно набрать:

И теперь из ответа мы знаем, что функция-синус принимает в качестве входного параметра матрицу (для Matlab число — это матрица размером 1х1) и в ответе для каждого элемента расчитывает значение синуса.

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

Читайте далее принципы работы с массивами в Matlab.

Что означает в matlab

Find logical OR

Syntax

Description

A | B performs a logical OR of arrays A and B and returns an array containing elements set to either logical 1 ( true ) or logical 0 ( false ). An element of the output array is set to logical 1 ( true ) if either A or B contain a nonzero element at that same array location. Otherwise, the array element is set to 0.

or( A , B ) is an alternate way to execute A | B , but is rarely used. It enables operator overloading for classes.

Examples

Locate Zeros in Matrices

Find the logical OR of two matrices. The result contains logical 1 ( true ) where either matrix contains a nonzero value. The zeros in the result indicate spots where both arrays have a value of zero.

Truth Table for Logical OR

Create a truth table for or .

Input Arguments

A , B — Operands
scalars | vectors | matrices | multidimensional arrays

Operands, specified as scalars, vectors, matrices, or multidimensional arrays. Inputs A and B must either be the same size or have sizes that are compatible (for example, A is an M -by- N matrix and B is a scalar or 1 -by- N row vector). For more information, see Compatible Array Sizes for Basic Operations.

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

You can chain together several logical operations, for example, A & B | C .

The symbols | and || perform different operations in MATLAB ® . The element-wise OR operator described here is | . The short-circuit OR operator is || .

When you use the element-wise & and | operators in the context of an if or while loop expression (and only in that context), they use short-circuiting to evaluate expressions. Otherwise, you must specify && or || to opt-in to short-circuiting behavior. See Logical Operators: Short Circuit for more information.

Compatibility Considerations

Implicit expansion change affects arguments for operators

Behavior changed in R2016b

Starting in R2016b with the addition of implicit expansion, some combinations of arguments for basic operations that previously returned errors now produce results. For example, you previously could not add a row and a column vector, but those operands are now valid for addition. In other words, an expression like [1 2] + [1; 2] previously returned a size mismatch error, but now it executes.

If your code uses element-wise operators and relies on the errors that MATLAB previously returned for mismatched sizes, particularly within a try / catch block, then your code might no longer catch those errors.

Читать еще:  Цикл while matlab

For more information on the required input sizes for basic array operations, see Compatible Array Sizes for Basic Operations.

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™.

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

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

This function fully supports GPU arrays. 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™.

This function fully supports distributed arrays. For more information, see Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).

В помощь математикам: обзор MATLAB

Доверь свою работу кандидату наук!

Обзор MATLAB

Те, кто имеет дело с высшей математикой, прекрасно знают, с какими математическими «чудовищами» иногда приходится сталкиваться. Например, на вычисление какого-нибудь гигантского тройного интеграла можно потратить настоящую уйму времени, душевных сил и не восстанавливающихся нервных клеток. Конечно, это очень интересно, бросить вызов интегралу, и взять его. Но, что делать, если вместо этого интеграл грозиться взять Вас? Или, что еще хуже, кубический трехчлен вышел из-под контроля и разбушевался? Такого и врагу не пожелаешь.

Что делать?

Раньше вариантов было всего два: плюнуть на все и пойти гулять или вступить в многочасовую схватку с интегралом. Ну, кому многочасовую, кому многоминутную – кто как учился. Но суть не в этом. Двадцатый век и неумолимо движущийся прогресс предлагают нам третий способ, а именно позволяют взять самый сложный интеграл «по-быстрому». То же самое касается решения всевозможных уравнений, построения графиков функций в виде кубических гиперболоидов и т.д.

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

Матлаб и решит уравнение, и аппроксимирует, и построит график функции. Понимаете, что это значит, друзья?

Это значит, что MATLAB – один из мощнейших на сегодняшний день пакетов обработки данных. Название расшифровывается как Matrix Laboratory. Матричная Лаборатория, если по-русски. Возможности программы покрывают практически все области математики. Так, пользуясь матлабом, Вы сможете:

  • Производить всевозможные операции над матрицами, решать линейные уравнения, работать с векторами;
  • Вычислять корни многочленов любой степени, производить операции над многочленами, дифференцировать, экстраполировать и интерполировать кривые, строить графики любых функций;
  • Проводить статистический анализ данных с использованием цифровой фильтрации, статистической регрессии;
  • Решать дифференциальные уравнения. В частных производных, линейных, нелинейных, с граничными условиями – не важно, матлаб все решит;
  • Выполнять операции целочисленной арифметики.

MATLAB

Помимо всего этого возможности MATLAB позволяют визуализировать данные вплоть до построения трехмерных графиков и создания анимированных роликов.

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

MATLAB как язык программирования

М-файл

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

MATLAB — серьезное средство для серьезных ребят

Основной рабочий файл программы – М-файл. Это бесконечный текстовый файл, и именно в нем происходит непосредственно программирование вычислений. Кстати, пусть Вас не пугает это слово – для того, чтобы работать в MATLAB, вовсе не нужно быть профессиональным программистом.

М-файлы делятся на

  • М-сценарии. М-сценарий – самый простой тип M-файла, у которого отсутствуют входные и выходные аргументы. Данный файл используется для автоматизации многократно повторяемых вычислений.
  • M-функции. М-функции – это М-файлы, допускающие наличие входных и выходных аргументов.

Для того чтобы наглядно показать, как происходит работа в MATLAB, приведем ниже пример создания функции в матлабе. Данная функция будет вычислять среднее значение вектора.
function y = average (x)
% AVERAGE Среднее значение элементов вектора.
% AVERAGE(X), где X — вектор. Вычисляет среднее значение элементов вектора.
% Если входной аргумент не является вектором, генерируется ошибка.
[m,n] = size(x);
if (

Строка определения функции сообщает системе MATLAB, что файл является М-функцией, а также определяет список входных аргументов. Так, строка определения функции average имеет вид:
function y = average(x)
Где:

  1. function — ключевое слово, определяющее М-функцию;
  2. y — выходной аргумент;
  3. average — имя функции;
  4. x — входной аргумент.

Итак, чтобы написать функцию в матлабе, необходимо помнить, что каждая функция в системе MATLAB содержит строку определения функции, подобную приведенной.

Безусловно, такой мощный пакет нужен не только для того, чтобы облегчить жизнь студентам. В настоящее время MATLAB, с одной стороны, очень популярен среди специалистов многих научных и инженерных отраслей. С другой стороны, возможность работы с большими матрицами делает MATLAB незаменимым инструментом финансовых аналитиков, позволяющим решить намного больше задач, чем, к примеру, известный всем Excel. Подробнее о том, как сделать презентацию на компьютере вы можете прочитать в обзорной статье.

Недостатки работы с MATLAB

MATLAB — хорошо, но тяжело

Какие есть трудности в работе с MATLAB? Трудность, пожалуй, всего одна. Но фундаментальная. Чтобы полностью раскрыть возможности MATLAB и с легкостью решать встающие перед Вами задачи, придется попотеть и сначала разобраться с самим матлабом (как создать файл, как создать функцию и др.). А это не так просто, ибо мощность и широкие возможности требуют жертв.

При всем желании нельзя сказать, что MATLAB – простая программа. Тем не менее, надеемся, все вышеперечисленное будет достаточным аргументом для того, чтобы взяться за ее освоение.

И напоследок. Если Вы не знаете, почему все в Вашей жизни пошло так, а не иначе, спросите об этом у матлаба. Просто наберите в командной строке “why” (почему). Он ответит. Попробуйте!

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

MATLAB Language Анонимные функции и функции

пример

основы

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

Оператор @

Используйте оператор @ для создания анонимных функций и функций. Например, чтобы создать дескриптор функции sin (sine) и использовать его как f :

Теперь f является дескриптором функции sin . Как и в реальной жизни, дверная ручка — это способ использовать дверь, функциональная рукоятка — это способ использовать функцию. Для использования f аргументы передаются ему, как если бы это была функция sin :

f принимает любые входные аргументы, которые принимает функция sin . Если sin будет функцией, которая принимает нулевые входные аргументы (а это не так, но другие делают, например, функцию peaks ), f() будет использоваться для вызова без входных аргументов.

Пользовательские анонимные функции

Анонимные функции одной переменной

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

Теперь f принимает один входной аргумент, называемый x . Это было задано с помощью круглых скобок (. ) непосредственно после оператора @ . f теперь является анонимной функцией x : f(x) . Он используется, передавая значение x в f :

Вектор значений или переменная также может быть передан в f , если они действительным образом используются внутри f :

Анонимные функции более чем одной переменной

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

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

Переменные в рабочей области могут использоваться в определении анонимных функций. Это называется параметризацией. Например, для использования константы c = 2 в анонимной функции:

f(3) использовала переменную c как параметр для умножения с предоставленным x . Обратите внимание, что если значение c в этой точке задано на что-то другое, тогда вызывается f(3) , результат не будет отличаться. Значение c является значением во время создания анонимной функции:

Входные аргументы для анонимной функции не относятся к переменным рабочего пространства

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

Значение x из основного рабочего пространства не используется в f . Кроме того, в основной рабочей области x осталось нетронутым. В пределах области f имена переменных между круглыми скобками после оператора @ не зависят от основных переменных рабочей области.

Анонимные функции хранятся в переменных

Анонимная функция (или, точнее, дескриптор функции, указывающая на анонимную функцию) сохраняется как любое другое значение в текущем рабочем пространстве: в переменной (как мы это делали выше) в массиве ячеек ( <@(x)x.^2,@(x)x+1>) или даже в свойстве (например, h.ButtonDownFcn для интерактивной графики). Это означает, что анонимную функцию можно рассматривать как любое другое значение. Когда он хранится в переменной, он имеет имя в текущей рабочей области и может быть изменен и очищен так же, как переменные, содержащие числа.

По-разному: дескриптор функции (будь то в форме @sin или для анонимной функции) — это просто значение, которое может быть сохранено в переменной, подобно цифровой матрице.

Расширенное использование

Передающая функция обрабатывает другие функции

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

Пример: функция создается в m-файле, который принимает дескриптор функции и скалярное число. Затем он вызывает дескриптор функции, передавая ему 3 а затем добавляет скалярное число к результату. Результат возвращается.

Сохраните его где-нибудь на пути, например, в текущей папке MATLAB. Теперь funHandleDemo можно использовать следующим образом, например:

Рукоятка другой существующей функции может быть передана funHandleDemo :

Обратите внимание, что @sin был быстрым способом получить доступ к функции sin без предварительного ее хранения в переменной, используя f = @sin .

Использование bsxfun , cellfun и подобных функций с анонимными функциями

MATLAB имеет встроенные функции, которые принимают анонимные функции в качестве входных данных. Это способ выполнить многие вычисления с минимальным количеством строк кода. Например, bsxfun , который выполняет bsxfun двоичные операции, то есть: он применяет функцию по двум векторам или матрицам bsxfun . Обычно для этого требуется использование for -loops, для которого часто требуется предварительное распределение скорости. Используя bsxfun этот процесс ускоряется. Следующий пример иллюстрирует это, используя tic и toc , две функции, которые можно использовать для временного использования кода. Он вычисляет разницу между каждым элементом матрицы из среднего значения столбца.

Выполнение приведенного выше примера приводит к двум выходам:

Эти строки поступают от функций toc , которые печатают прошедшее время со времени последнего вызова функции tic .

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

Специально для больших объемов данных в больших матрицах bsxfun может значительно ускорить работу. Он также делает код более чистым, хотя его может быть труднее интерпретировать для людей, которые не знают MATLAB или bsxfun . (Обратите внимание, что в MATLAB R2016a и более поздних версиях многие операции, которые ранее использовали bsxfun больше не нуждаются в них, A-mean(A) работает напрямую и может в некоторых случаях быть еще быстрее.)

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector