Использование команд MATLAB — от версии к версии | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 4 мая, печатный экземпляр отправим 8 мая.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №2 (61) февраль 2014 г.

Дата публикации: 20.01.2014

Статья просмотрена: 1060 раз

Библиографическое описание:

Бильфельд, Н. В. Использование команд MATLAB — от версии к версии / Н. В. Бильфельд. — Текст : непосредственный // Молодой ученый. — 2014. — № 2 (61). — С. 83-84. — URL: https://moluch.ru/archive/61/8997/ (дата обращения: 23.04.2024).

Рассмотрены отличительные особенности команд пакетов MATLAB 6.5 и MATLAB7.11 при использовании их как серверов OLE автоматизации при решении задач автоматического управления. Приведены конкретные рабочие примеры, которые легко можно повторить.

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

В свое время я написал модуль для связи Delphi и MATLAB 6.5 и во многих прикладных программах на Delphi применял MATLAB как сервер OLE автоматизации, используя его вычислительные возможности.

После установки MATLAB 7.11 начались проблемы.

Рассмотрим несколько примеров.

Пример 1

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

W1=tf([10 1], [50 20 1]);

[PB, PA]=tfdata(W1)

В результате, независимо от версии в командном окне выведутся только размеры матриц:

PB = [1x3 double]

PA = [1x3 double]

Чтобы получить сами матрицы в MATLAB 6.5 можно выполнить команду tfdata следующим образом:

[PB, PA]=tfdata(W1,1).

В результате получим:

PB = 0 10 1; PA =50 20 1

В MATLAB 7.11 такая команда не сработает. Сработает только команда, как указано в Help

[PB, PA]=tfdata(W1,’v’)

Необходимо сказать, что и MATLAB 6.5 воспринимает такую команду.

Пример 2

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

Для этого напишем следующий фрагмент кода:

hold on;

T=linspace(0,200,100)';

W1=tf([10 1], [50 20 1]);

W2=tf([1], [50 30 1]);

step(W1,T,'r'); step(W2,T,'b');

grid on;

Хотя у нас явно указаны красный и синий цвета, графики выводятся, независимо от этого синим и зеленым цветом по умолчанию. Это аналогично выводу без указания цветов:

step(W1,T); step(W2,T);

Чтобы каждый график выводился указанным цветом, выводим графики следующим образом:

step(W1,'r',T,'r'),grid on; step(W2,'b',T,'b'),grid on;

В этом случае все работает как надо. Если перенести данный фрагмент в MATLAB 7.11, то, как ни странно, MATLAB вообще не воспринимает такой формат команд и выдает ошибку:

??? Error using ==> DynamicSystem.step at 84

Invalid syntax for time or frequency response command.

See help the for the relevant command.

Вводим строку helpstep. Смотрим справку и никаких отличий в описании данных команд не видим. Опять же в MATLAB 7.11 корректно работает фрагмент:

step(W1,T,'r'); step(W2,T,'b');

и каждый график выводится указанным цветом.

Пример 3

Чтобы получить массивы годографа Найквиста в MATLAB 6.5 необходимо выполнить следующий фрагмент кода:

1.                 SysW=tf([1], [50 20 1])

2.                 SysT=logspace(-3,1,100)';

3.                 [X,Y]=NYQUIST(SysW,SysT);

4.                 X(:,1)= [];

5.                 Y(:,1)= [];

6.                 plot(X,Y),grid

Строки 4 и 5 необходимы для того, чтобы удалить из массивов необходимые столбцы, так как изначально предполагается, что система многомерная, и значение, например X, представлено в виде:

X(:,:,528) =-0.0465

X(:,:,529) =-0.0464

X(:,:,530) =-0.0463

X(:,:,531) =-0.0462

Построить график по таким значениям нельзя.

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

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

Литература:

1.                 Ануфриев И. Е. MATLAB 7. — СПб.: БХВ-Петербург, 2005.– 1104 с.

2.                 Черных И. В. Моделирование электротехнических устройств в MATLAB, SimPowerSystem и Simulink. Питер ДМК, 2008..– 286 с.

3.                 Бильфельд Н. В. Моделирование систем с использованием блока чистого запаздывания. — Молодой ученый. Ежемесячный научный журнал. Чита 2013.-№ 6 С. 25–30

4.                 Бильфельд Н.В Использование пассивного эксперимента при идентификации объектов управления с изменяющимися свойствами. — Молодой ученый. Ежемесячный научный журнал. Чита 2013.-№ 8 С. 77–82

Основные термины (генерируются автоматически): MATLAB, OLE, фрагмент кода, NYQUIST, график, команда, указанный цвет.


Похожие статьи

Использование математических пакетов Matlab & Simulink при...

Рис. 2. График АЧХ фильтра Magnitude Response (dB). Из графика АЧХ фильтра видно, что разрабатываемый ФНЧ пропускает диапазон частот сигнала до 4кГц, а

- создание MATLAB кода (Generate MATLAB code). После генерации кода файл попадает в указанную нами папку.

Обработка паспортных данных в среде Matlab | Статья в журнале...

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

Распознавание текста из области, выделение опознанных фрагментов

Разработка имитационной модели процесса ровности в среде MATLAB&Simulink.

Восстановление простых линейных и итерационных функций...

В статье будет рассмотрен способ восстановления исходного кода функции по p-коду средствами MATLAB, не подразумевающими попытки вскрыть шифр либо алгоритм

Если не указать номер строки кода для точки останова, функция остановится на второй строке.

Графы в Scilab | Статья в сборнике международной научной...

...такие как Mathematica, MATLAB, Mathcad и Maple

Такие же элементы как имена вершин (node_name), их тип (node_type), координаты для отображения вершин (узлов) в окне (node_x, node_y), цвет узлов

Для загрузки графа из файла следует выполнить команду load_graf.

Применение средств Wolfram Mathematica для создания...

В данном случае огромную пользу принесут программы математического моделирования и системы компьютерной алгебры, примерами которых являются Mathcad, Wolfram Mathematica и Matlab. Возможность создания интерактивной графики широко обеспечивается в системе...

Моделирование систем с использованием блока чистого...

Для этого напишем M-файл со следующими командами

% Строим график. step(Wc,100),grid. В результате получим переходный процесс, приведенный на рисунке 5.

К сожалению, это недоработка разработчиков пакета MATLAB. Не помогает также установка в ноль параметра...

Увеличение производительности алгоритмов поиска дубликатов...

Проще всего использовать алгоритм быстрого преобразования Фурье (FFT), исходный код алгоритма можно легко найти в сети Интернет, а некоторые его реализации включены в пакеты наподобие Matlab.

Похожие статьи

Использование математических пакетов Matlab & Simulink при...

Рис. 2. График АЧХ фильтра Magnitude Response (dB). Из графика АЧХ фильтра видно, что разрабатываемый ФНЧ пропускает диапазон частот сигнала до 4кГц, а

- создание MATLAB кода (Generate MATLAB code). После генерации кода файл попадает в указанную нами папку.

Обработка паспортных данных в среде Matlab | Статья в журнале...

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

Распознавание текста из области, выделение опознанных фрагментов

Разработка имитационной модели процесса ровности в среде MATLAB&Simulink.

Восстановление простых линейных и итерационных функций...

В статье будет рассмотрен способ восстановления исходного кода функции по p-коду средствами MATLAB, не подразумевающими попытки вскрыть шифр либо алгоритм

Если не указать номер строки кода для точки останова, функция остановится на второй строке.

Графы в Scilab | Статья в сборнике международной научной...

...такие как Mathematica, MATLAB, Mathcad и Maple

Такие же элементы как имена вершин (node_name), их тип (node_type), координаты для отображения вершин (узлов) в окне (node_x, node_y), цвет узлов

Для загрузки графа из файла следует выполнить команду load_graf.

Применение средств Wolfram Mathematica для создания...

В данном случае огромную пользу принесут программы математического моделирования и системы компьютерной алгебры, примерами которых являются Mathcad, Wolfram Mathematica и Matlab. Возможность создания интерактивной графики широко обеспечивается в системе...

Моделирование систем с использованием блока чистого...

Для этого напишем M-файл со следующими командами

% Строим график. step(Wc,100),grid. В результате получим переходный процесс, приведенный на рисунке 5.

К сожалению, это недоработка разработчиков пакета MATLAB. Не помогает также установка в ноль параметра...

Увеличение производительности алгоритмов поиска дубликатов...

Проще всего использовать алгоритм быстрого преобразования Фурье (FFT), исходный код алгоритма можно легко найти в сети Интернет, а некоторые его реализации включены в пакеты наподобие Matlab.

Задать вопрос