Как сделать комплексное число в матлабе

Обновлено: 05.07.2024

Выполняет вычисление абсолютного значения величины сигнала.

Saturate on integer overflow (флажок) – Подавлять переполнение целого. При установленном флажке ограничение сигналов целого типа выполняется корректно.

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

Рис. 9.6.1. Пример использования блока Abs

Блок Abs может использоваться также для вычисления модуля сигнала комплексного типа. На рис. 9.6.2 показан пример вычисления модуля комплексного сигнала вида:

Модуль этого сигнала (как и следовало ожидать) равен 1 для любого момента времени.

Рис. 9.6.2. Пример использования блока Abs для вычисления модуля комплексного сигнала

9.6.2. Блок вычисления суммы Sum

Выполняет вычисление суммы текущих значений сигналов.

Icon shape – Форма блока. Выбирается из списка.
- round – окружность,
- rectangular – прямоугольник.

List of sign – Список знаков. В списке можно использовать следующие знаки:
+ ( плюс), - (минус) и | (разделитель знаков).

Saturate on integer overflow (флажок) – Подавлять переполнение целого. При установленном флажке ограничение сигналов целого типа выполняется корректно.

Количество входов и операция (сложение или вычитание) определяется списком знаков параметра List of sign , при этом метки входов обозначаются соответствующими знаками. В параметре List of sign можно также указать число входов блока. В этом случае все входы будут суммирующими.

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

Блок может использоваться для суммирования скалярных, векторных или матричных сигналов. Типы суммируемых сигналов должны совпадать. Нельзя, например, подать на один и тот же суммирующий блок сигналы целого и действительного типов.

Если количество входов блока больше, чем один, то блок выполняет поэлементные операции над векторными и матричными сигналами. При этом количество элементов в матрице или векторе должно быть одинаковым.

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

Примеры использования блока Sum показаны на 9.6.3.

Рис. 9.6.3. Примеры использования блока Sum

9.6.3. Блок умножения Product

Выполняет вычисление произведения текущих значений сигналов.

Number of inputs – Количество входов. Может задаваться как число или как список знаков. В списке знаков можно использовать знаки * ( умножить) и / (разделить).

Multiplication – Способ выполнения операции. Может принимать значения (из списка):
- Element-wise – Поэлементный.
- Matrix – Матричный.

Saturate on integer overflow (флажок) – Подавлять переполнение целого. При установленном флажке ограничение сигналов целого типа выполняется корректно.

Если параметр Number of inputs задан списком, включающим кроме знаков умножения также знаки деления, то метки входов будут обозначены символами соответствующих операций.

Блок может использоваться для операций умножения или деления скалярных векторных или матричных сигналов. Типы входных сигналов блока должны совпадать. Если в качестве количества входов указать цифру 1 (один вход), то блок можно использовать для определения произведения элементов вектора.

Примеры использования блока Product при выполнении скалярных и поэлементных операций показаны на 9.6.4.

Рис. 9.6.4. Примеры использования блока Product при выполнении скалярных и поэлементных операций

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

Рис. 9.6.5. Примеры использования блока Product при выполнении матричных операций

9.6.4. Блок определения знака сигнала Sign

Определяет знак входного сигнала.

Блок работает в соответствии со следующим алгоритмом:

Если входной сигнал блока положителен, то выходной сигнал равен 1 .

Если входной сигнал блока отрицателен, то выходной сигнал равен -1 .

Если входной сигнал блока равен 0 , то выходной сигнал также равен 0 .

Рис. 9.6.6. иллюстрирует работу блока Sign .

Рис. 9.6.6. Пример использования блока Sign

9.6.5. Усилители Gain и Matrix Gain

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

Gain – Коэффициент усиления.

Multiplication – Способ выполнения операции. Может принимать значения (из списка):
- Element-wise K*u– Поэлементный.
- Matrix K*u – Матричный. Коэффициент усиления является левосторонним операндом.
- Matrix u*K – Матричный. Коэффициент усиления является правосторонним операндом.

Saturate on integer overflow (флажок) – Подавлять переполнение целого. При установленном флажке ограничение сигналов целого типа выполняется корректно.

Блоки усилителей Gain и Matrix Gain есть один и тот же блок, но с разными начальными установками параметра Multiplication .

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

В том случае если парметр Multiplication задан как Element-wise K*u , то блок выполняет операцию умножения на заданный коэффициент скалярного сигнала или каждого элемента векторного сигнала. В противном случае блок выполняет операцию матричного умножения сигнала на коэффициент заданный матрицей.

По умолчанию коэффициент усиления является действительным числом типа double .

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

При вычислении выходного сигнала блок Gain использует следующие правила:

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

Примеры использования блока Gain при выполнении скалярных и поэлементных операций показаны на 9.6.7.

Рис. 9.6.7. Примеры использования блока Gain.

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

Примеры использования блока Matrix Gain при выполнении матричных операций показаны на рис. 9.6.8.

Рис. 9.6.8. Примеры использования блока Matrix Gain

9.6.6. Ползунковый регулятор Slider Gain

Обеспечивает изменение коэффициента усиления в процессе расчета.

Low – Нижний предел коэффициента усиления.

High – Верхний предел коэффициента усиления.

Для изменения коэффициента усиления блока Slider Gain необходимо передвинуть ползунок регулятора. Перемещение ползунка вправо приведет к увеличению коэффициента усиления, перемещение влево – к уменьшению. Изменение коэффициента усиления будет выполняться в пределах диапазона заданного параметрами Low и High.

Если щелкнуть с помощью мыши на левой или правой стрелках шкалы регулятора, то коэффициент усиления изменится на 1% от установленного диапазона. Если щелкнуть с помощью мыши на самой шкале регулятора слева или справа от ползунка, то коэффициент усиления изменится на 10% от установленного диапазона. Можно также просто задать требуемое значение коэффициента в среднем окне блока.

Примеры использования блока Slider Gain показаны на рис. 9.6.9.

Рис. 9.6.9. Примеры использования блока Slider Gain

9.6.7. Блок скалярного умножения Dot Product

Выполняет вычисление скалярного произведения (свертку) двух векторов.

Блок выполняет вычисление выходного сигнала в соответствии с выражением: ,
где u1 и u2 – входные векторы,
conj – операция вычисления комплексно-сопряженного числа,
sum – операция вычисления суммы.

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

Примеры, иллюстрирующие работу блока Dot Product , показаны на рис. 9.6.10.

Рис. 9.6.10. Примеры использования блока Dot Product

9.6.8. Блок вычисления математических функций Math Function

Выполняет вычисление математической функции.

Function – Вид вычисляемой функции (выбирается из списка):
exp – Экспоненциальная функция
log – Функция натурального логарифма
10^u – Вычисление степени 10
log10 – Функции логарифма
magnitude^2 – Вычисление квадрата модуля входного сигнала
square – Вычисление квадрата входного сигнала
sqrt – Квадратный корень
pow – Возведение в степень
conj – Вычисление комплексно-сопряженного числа
reciprocal – Вычисление частного от деления входного сигнала на 1
hypot – Вычисление корня квадратного из суммы квадратов входных сигналов (гипотенузы прямоугольного треугольника по значениям катетов)
rem – Функция, вычисляющая остаток от деления первого входного сигнала на второй
mod – Функция, вычисляющая остаток от деления с учетом знака
transpose – Транспонирование матрицы
hermitian – Вычисление эрмитовой матрицы.

Output signal type – Тип выходного сигнала (выбирается из списка):
auto – Автоматическое определение типа
real – Действительный сигнал
complex- Комплексный сигнал.

Тип выходного сигнала в зависимости от типа входного сигнала, вычисляемой функции и параметра блока Output signal type приведен в таблице 9.6.1.

Примеры использования блока Math Function показаны на рис. 9.6.11.

Рис. 9.6.11. Примеры использования блока Math Function

9.6.9. Блок вычисления тригонометрических функций Trigonometric Function

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

Function – Вид вычисляемой функции (выбирается из списка): sin, cos, tan, asin, acos, atan, atan2, sinh, cosh и tanh.

Output signal type – Тип выходного сигнала (выбирается из списка):
- auto – Автоматическое определение типа.
- real – Действительный сигнал.
- complex- Комплексный сигнал.

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

Примеры использования блока Trigonometric Function показаны на рис. 9.6.12.

Рис. 9.6.12. Примеры использования блока Trigonometric Function

9.6.10. Блок вычисления действительной и (или) мнимой части комплексного числа Complex to Real-Imag

Вычисляет действительную и (или) мнимую часть комплексного числа.

Output – Выходной сигнал (выбирается из списка):

Real – Действительная часть

Image – Мнимая часть

RealAndImage – Действительная и мнимая часть.

Примеры использования блока Complex to Real-Imag показаны на рис. 9.6.13.

Рис. 9.6.13. Примеры использования блока Complex to Real-Imag

9.6.11. Блок вычисления модуля и (или) аргумена комплексного числа Complex to Magnitude-Angle

Вычисляет модуль и (или) аргумент комплексного числа.

Output – Выходной сигнал (выбирается из списка):

MagnitudeAndAngle – Модуль и аргумент.

Примеры использования блока Complex to Magnitude-Angle показаны на рис. 9.6.14.

Рис. 9.6.14. Примеры использования блока Complex to Magnitude-Angle

9.6.12. Блок вычисления комплексного числа по его действительной и мнимой части Real-Imag to Complex

Вычисляет комплексное число по его действительной и мнимой части.

Image part – Мнимая часть. Параметр доступен, если параметр Input объявлен как Real .

Real part – Действительная часть. Параметр доступен, если параметр Input объявлен как Image .

Примеры использования блока Real-Imag to Complex показаны на рис. 9.6.15.

Рис. 9.6.15. Примеры использования блока Real-Imag to Complex

9.6.13. Блок вычисления комплексного числа по его модулю и аргументу Magnitude-Angle to Complex

Вычисляет комплексное число по его модулю и аргументу.

Angle – Аргумент. Параметр доступен, если параметр Input объявлен как Magnitude .

Magnitude – Модуль. Параметр доступен, если параметр Input объявлен как Angle .

Параметры Angle и Magnitude должны задаваться как векторы или матрицы, если входной сигнал является вектором или матрицей.

Примеры использования блока Magnitude-Angle to Complex показаны на рис. 9.6.16.

Рис. 9.6.16. Примеры использования блока Magnitude-Angle to Complex

9.6.14. Блок определения минимального или максимального значения MinMax

Определяет максимальное или минимальное значение из всех сигналов, поступающих на его входы.

Function - Выходной параметр. Выбирается из списка:
- min – Минимальное значение.
- max – Максимальное значение.

Number of input ports – Количество входных портов.

Примеры использования блока MinMax показаны на рис. 9.6.17.

Рис. 9.6.17. Примеры использования блока MinMax

9.6.15. Блок округления числового значения Rounding Function

Выполняет операцию округления числового значения.

Function – Способ округления (выбирается из списка):

floor – Округление до ближайшего меньшего целого.

ceil – Округление до ближайшего большего целого.

round – Округление до ближайшего целого.

fix – Округление отбрасыванием дробной части.

Выходной сигнал блока будет иметь тип double или single .

Примеры использования блока Rounding Function показаны на рис. 9.6.18.

Рис. 9.6.18. Примеры использования блока Rounding Function

9.6.16. Блок вычисления операции отношения Relational Operator

Блок сравнивает текущие значения входных сигналов.

Relational Operator – Тип операции отношения (выбирается из списка):

Меньше или равно.

> = - Больше или равно.

В операции отношения первым операндом является сигнал, подаваемый на первый (верхний) вход блока, а вторым операндом – сигнал, подаваемый на второй (нижний) вход. Выходным сигналом блока является 1 , если результат вычисления операции отношения есть “ИСТИНА” и 0, если результат – “ЛОЖЬ” .

Для операций = = (тождественно равно) и ~ = (не равно) допускается использовать комплексные входные сигналы.

Примеры использования блока Relational Operator показаны на рис. 9.6.19.

Рис. 9.6.19. Примеры использования блока Relational Operator

9.6.17. Блок логических операций Logical Operation

Реализует одну из базовых логических операций.

Operator – Вид реализуемой логической операции (выбирается из списка):

AND – Логическое умножение (операция И ).

OR – Логическое сложение (операция ИЛИ ).

NAND – Операция И-НЕ .

NOR – Операция ИЛИ-НЕ .

XOR – Исключающее ИЛИ (операция сложения по модулю 2 ).

NOT – Логическое отрицание ( НЕ ).

Number of input ports – Количество входных портов.

Выходным сигналом блока является 1 , если результат вычисления логической операции есть “ИСТИНА” и 0, если результат – “ЛОЖЬ” .

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

Примеры использования блока Logical Operation показаны на рис. 9.6.20.

Рис. 9.6.20. Примеры использования блока Logical Operation

9.6.18. Блок побитовых логических операций Birwise Logical Operator

Реализует одну из базовых логических операций по отношению к целому числу в двоичном представлении.

Bitwise operator – Вид реализуемой логической операции (выбирается из списка):

AND – Логическое умножение (операция И ).

OR – Логическое сложение (операция ИЛИ ).

XOR – Исключающее ИЛИ (операция сложения по модулю 2 ).

NOT – Логическое отрицание ( НЕ ).

SHIFT_LEFT – Поразрядный сдвиг влево.

SHIFT_RIGHT – Поразрядный сдвиг вправо.

Second operand – Второй операнд. Задается шестнадцатеричным числом в символьном виде.

Одним из операндов блока Birwise Logical Operator является сигнал, подаваемый на вход блока, а вторым – параметр блока Second operand .

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

Примеры использования блока Birwise Logical Operator показаны на рис. 9.6.21.

Рис. 9.6.21. Примеры использования блока Birwise Logical Operator

9.6.19. Блок комбинаторной логики Gombinatorical Logic

Преобразует входные сигналы в соответствии с таблицей истинности.

Truth table – Таблица истинности.

Блок Combinatorical Logic обеспечивает преобразование входного сигнала в соответствии с правилами, определяемыми таблицей истинности. Таблица истинности представляет собой список возможных выходных значений блока. Такое описание работы устройств принято в теории конечных автоматов. Число строк в таблице истинности определяется соотношением:

,
где
number of inрuts – число входных сигналов,
number of rows – число строк таблицы истинности.

,
где
row index – индекс строки,
m – количество входных сигналов (элементов во входном векторе),
u(1) – первый входной сигнал (первый элемент входного вектора),
u(m) – последний входной сигнал (последний элемент входного вектора).

Например, в случае операции логического И ( AND ) для двух операндов выражение, определяющее индекс строки будет выглядеть следующим образом:

Ниже приведен пример формирования таблицы истинности операции логического И ( AND ) для двух операндов:

При наборе комплексных чисел в командной строке MatLab можно использовать либо i, либо j, а сами числа при умножении, делении и возведении в степень необходимо заключать в круглые скобки:

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

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

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

MatLab позволяет использовать комплексные числа в качестве аргументов встроенных элементарных функций:

Конструирование комплексного числа по его действительной и мнимой части выполняется с помощью функции complex:

ans = 2.3000 + 5.8000i

Как узнать, какие встроенные элементарные функции можно использовать и как их вызывать? Наберите в командной строке команду help eifun, при этом в командное окно выводится список всех встроенных элементарных функций с их кратким описанием.

3. Простейшие вычисления в пакете MatLab с использованием переменных и векторов

3.1. Использование переменных в пакете MatLab

Как и во всех языках программирования, в MatLab предусмотрена возможность работы с переменными. Причем пользователь не должен заботиться о том, какие значения будет принимать переменная (комплексные, вещественные или только целые). Для того чтобы присвоить, например, переменной z значение 1.45, достаточно написать в командной строке z = 1.45, при этом MatLab сразу же выведет значение z:

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

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


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

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

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

Замечание 1

Для ввода длинных формул или команд в командную строку следует поставить три точки (подряд, без пробелов), нажать клавишу и продолжить набор формулы на следующей строке. Так можно разместить выражение на нескольких строках. MatLab вычислит все выражение или выполнит команду после нажатия на в последней строке (в которой нет трех идущих подряд точек).

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

Переменные, определенные выше, можно использовать и в других формулах. Например, если теперь необходимо вычислить выражение


,

то достаточно ввести следующую команду:

Вызов функций в MatLab обладает достаточной гибкостью. Например, вычислить е 3.5 можно, вызвав функцию ехр из командной строки:

Другой способ состоит в использовании оператора присваивания:

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

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

У меня есть функция,мне нужно разделить на мнимую и вещественную часть,как это сделать в матлабе?

Определения действительной и мнимой частей
Здравствуйте! В данном выражении, необходимо определить действительную и мнимую часть. После.

Вычисление действительной и мнимой частей
Здравствуйте. Подскажите пожалуйста, как вычислить мнимую и действительную части H(jw). Это.


В классе Complex получение действительной и мнимой частей
Доброго времени суток, господа. У меня имеется вектор, в котором содержатся комплексные числа. .

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

real(K) - действительная часть
imag(K) - мнимая часть
abs(K) - модуль
angle(K) - аргумент(в радианах)

Не получается,покажу на примере,передаточная функция (2*p+1)/((3*p+1)*(4*p+1)),p=i*w,i^2=-1,заменяем и получаем,(2*w^2 - 5*i*w - 24*i*w^3 + 1)/(144*w^4 + 25*w^2 + 1),как отделить мнимую от действительной?

пока мой старичёк матлаб думал tvoretsmira уже ответил :jokingly:

Мол, "посчитай сам, двоешник))"

Спасибо огромное,если не сложно подскажите еще одно,все это делалось для нахождения частоты и амплитуды автоколебаний,есть любая передаточная функция линейной части,например наше К,и нелинейная часть она не изменяется и равна J=4/pi*A, A-амплитуда автоколебаний,все находим по формуле 1+K*J=0,отсюда выделяем
мнимую и действительную часть,и каждую из них приравниваем к нулю,получается 2 уравнения и 2 неизвестных(
w-частота,A-амплитуда),как приравнять к нулю и найти w,A.

Углы находятся в диапазоне [–?; +?].
Для комплексного Z модуль и аргумент вычисляются следующим образом:
R = abs(Z) – модуль, theta = angle(Z) – аргумент. При этом формула
Z =R.*exp(i*theta) дает переход от показательной формы представления
комплексного числа к алгебраической. Примеры:
>> Z=3+i*2
Z=
3.0000 + 2.0000i
>> theta = angle(Z)
theta = 0.5880
>> R = abs(Z)
R=
3.6056
>> Z =R.*exp(i*theta)
Z=
3.0000 + 2.0000i
Связь между функцией Эйри и модифицированной функцией Бесселя выра
жается формулой
где
• airy(Z) – возвращает функцию Эйри, Ai(Z), для каждого элемента ком
плексного массива Z;
• airy(k,Z) – возвращает различные варианты результата в зависимости
от значения k:
• k=0 – тот же результат, что и airy(Z);
• k=1 – производную от Ai(Z);
• k=2 – функцию Эйри второго рода, Bi(Z);
• k=3 – производную от Bi(Z).
Пример:
>> D=[1,3+2i]
D=
1.0000
>> S=airy(D)
S=
0.1353
3.0000 + 2.0000i
-0.0097 + 0.0055i
• imag(Z) – возвращает мнимые части всех элементов массива Z. Пример:
>> Z=[1+i, 3+2i, 2+3i];
>> imag(Z)
ans =
1
2
3
• real(Z) – возвращает вещественные части всех элементов комплексного
массива Z. Пример:
>> Z=[1+i, 3+2i, 2+3i];
>> real(Z)
ans =
1
3
2
• conj(Z) – возвращает число, комплексно сопряженное аргументу Z. Если
Z комплексное, то conj(Z) = real(Z) – i *imag(Z). Пример:
>> conj(2+3i)
ans = 2.0000 – 3.0000i
3.6.2. Функции Бесселя
Линейное дифференциальное уравнение второго порядка вида
,
где ??– неотрицательная константа, называется уравнением Бесселя, а его решения
известны как функции Бесселя. Функции J?(z) и J–?(z) формируют фундаменталь
ное множество решений уравнения Бесселя для неотрицательных значений ??(это
так называемые функции Бесселя первого рода):
3.6. Специальные математические
функции
Специальные математические функции являются решениями дифференциаль
ных уравнений специального вида или обозначениями некоторых видов интегра
лов. Довольно полный обзор специальных функций дается в книгах [51–54], так
что ниже мы ограничимся только указанием функций системы MATLAB, реали
зующих их вычисление.

Читайте также: