Переменные

Обсуждение вопросов, связанных с Simulink

Модератор: Admin

MOHAX
Пользователь
Сообщения: 15
Зарегистрирован: Вт апр 05, 2005 3:16 pm

Переменные

Сообщение MOHAX » Сб апр 09, 2005 5:47 am

М-прграмма не видить переменные сохраненные с помощью блока To WorkSpase, в сою очередь ее global переменные не видит блок From Workspase!!! Как это объяснить?

chernykh
Эксперт
Сообщения: 4526
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Сообщение chernykh » Сб апр 09, 2005 6:12 am

1. Возможно, Вы что-то сделали неправильно. Трудно сказать не видя модели. Попробуйте сделать объявления global ... прямо в командном окне MATLAB.
2. Обновление переменных в Workspace происходит после завершения расчета Simulink-модели.

Черных И.В.

MOHAX
Пользователь
Сообщения: 15
Зарегистрирован: Вт апр 05, 2005 3:16 pm

Сообщение MOHAX » Сб апр 09, 2005 7:26 am

В идеале это должно выглядеть так: GUI запускает модель, затем принимает в Workspace выходные значения модели и строит график в axes.Но уже при попытке присвоить некой переменной(x) в m-функции значение simout, появляется сообщение, что этой переменной не существует!!!! хотя в Workspace она есть!!!
команда whos выводит только выходные переменные модели
команда whos global выводит только объявленные глобальные переменные m-функции
пробовал создать простую m-функцию, которая просто объявляет глобальные переменные при загрузки модели (LoadFCn) - результат тотже.


Помогите разобраться!!!!!!!!!!!!!!

chernykh
Эксперт
Сообщения: 4526
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Сообщение chernykh » Вс апр 10, 2005 7:30 am

У меня получалось так:
1. Создать m-файл (сценарий), в котором написать команду на выполнение Simulink-модели и построение графика.
2. Указать этот сценарий в качестве Callback для кнопки, по нажатию которой выполняется расчет.

Черных И.В.

MOHAX
Пользователь
Сообщения: 15
Зарегистрирован: Вт апр 05, 2005 3:16 pm

Сообщение MOHAX » Вс апр 10, 2005 8:49 pm

Спасибо,но как мне кажется я уже разобрался...
Дело в том, что m-сценарии используют раборую область MATLAB(основную), а m-функции используют свою локальную рабочую область. Поэтому если необходимо что бы глобальные переменные m-функции записались в Workspace их надо объявлять следующим образом:

global x;
evalin('base','global x');


MOHAX