matlab

Решение задач линейного программирования в Matlab

На просторах интернета полно пример работы с командой linprog, которая позволяет решать задачи линейного программирования в Matlab. Да вот беда. Нигде не показано как ей пользоваться в полном объеме. Куча примеров простейшего уравнения, да и только.

Давайте рассмотрим такой пример:
5x1 - 2x2 + x3 >= 3
-2x1 + 3x2 - 2x3 <= 8
x1 + x2 + x3 = 9
1 <= x1 <= 2
2 <= x2 <= 4
x3 >= 1
f = x1 + x2 - 2x3

Курс Matlab. Часть 2 - Работа с элементами матриц

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

Курс Matlab. Часть 1 - Матричные операции

Matlab - пакет прикладных программ для проведения вычислений и одноименный язык программирования. Изначально эта программа развивалась именно как ПО для работы с матрицами (облегчения машинного решения матричных уравнений) - Matrix Laboratory.

Что нужно знать новичку.

Линейная свертка

Линейная свертка - одна из фундаментальных операций цифровой обработки сигналов. Реакция системы с импульсной характеристикой hi на входной сигнал xi вычисляется как свертка этих двух последовательностей.

Например имеем:

{hi}={h0, h1, h2, h3}
{xl}={x0, x1, x2}

Бесплатный аналог Matlab - GNU Octave

Конечно Matlab отличная программа, но позволить себе её купить рядовой гражданин стран СНГ врядли сможет.

Поэтому видимо и появился аналог - GNU Octave.

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

Это отлично учитывая последнии тенденции антипиратских законов.

Ну и напоследок мини-обзор

Как найти нули и полюсы системы в Matlab

В ходе работы с цифровыми (и не только) сигналами часто необходимо найти нули и плюсы системы. Кстати буржуи зовут числитель numerator`ом,а знаменатель - denumerator`ом. Стоит знать это при работе с их материалами и справочной системой Matlab.

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

num = 1; % числитель
den = [1 -1]; % знаменатель

Т.е. вот такая дробь:

sys =
 
    1
  -----
  z - 1

Спектральный анализ сигнала в Matlab

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

Рассмотрим простейший случай такого анализа в Matlab.

Сформируем временную сетку:

>> t = 0:0.001:0.6;

Теперь зададим сигнал для тренировок:

>> x = sin(2*pi*50*t) + sin(2*pi*120*t);

Изображение сигнала

Цифровая фильтрация сигнала в Matlab

Рассмотрим процесс фильтрации сигнала при помощи цифрового фильтра в Matlab.

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

Сначала зададим параметры.

Fs=100;  % частота дискретизации
tmax=5;  % промежуток рассматриваемого времени
Nsamps = tmax*Fs;  % рассматриваемый период

Задаём временную шкалу для нашего сигнала:

t = 1/Fs:1/Fs:tmax;

Теперь задаём сигнал и помеху:

s1 = 10*cos(2*pi*t);  % сигнал
s2 = 2*cos(20*pi*t + pi/4);  % высокочастотная помеха
s3 = s1 + s2;  % всё вместе

Выведем на экран сигналы.

Настройка matlab для генерации C/C++ кода из m файлов в Windows

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

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

И тут апогеем творчества MathWorks стал Matlab Coder который позволяет сгенерировать вам код на C/C++ из функции матлаба.