Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
11 / 11 / 1
Регистрация: 24.11.2015
Сообщений: 359
1

Взаимодействие функций в GUI

22.02.2017, 23:55. Показов 1308. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем!

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

Вот примерный вариант:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function GUI
figure
 
uicontrol('Style', 'PushButton', ... 
    'String', 'Processing!' ,'Position', [190,20,120,50],...,
    'CallBack', @Processing_Array)
 
uicontrol('Style', 'PushButton', ... 
    'String', 'Plot' ,'Position', [330,20,120,50],...,
    'CallBack', @Output)
 
function Processing_Array(c,d)
for i=1:1:10;
    arr(i)=i*i;
end
 
function Output(e,f)
plot(arr);
но при запуске и нажатии последовательно на две кнопки пишет
Undefined function or variable 'arr'.

Error in GUI>Output (line 18)
plot(arr);

Error while evaluating uicontrol Callback

то есть, не видит переменную arr.
Как сделать правильно и как вообще происходит взаимодействие в Матлабе?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.02.2017, 23:55
Ответы с готовыми решениями:

Интерактивное взаимодействие с изображением в GUI Qt
Не знаю в какою сторону копать даже. Делаю простую програмку для обработки изображения. Просто...

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

Взаимодействие БД, XML и GUI на Windows Forms
Здравствуйте! Имеется форма WinForms, с 4-мя textbox. Также имеется xml-файл: <?xml...

Взаимодействие функций
Возникла проблема с взаимодействием функций между собой в switch. Одна функция позволяет ввести...

3
318 / 257 / 30
Регистрация: 30.03.2013
Сообщений: 755
23.02.2017, 10:16 2
может быть объявить arr глобальной переменной ?

global arr
0
11 / 11 / 1
Регистрация: 24.11.2015
Сообщений: 359
23.02.2017, 13:25  [ТС] 3
Вроде понял как.
нужно расширить область видимости путем грамотного "закрытия" функций с помощью end.
В данном случае так:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function GUI
figure
 
uicontrol('Style', 'PushButton', ... 
    'String', 'Processing!' ,'Position', [190,20,120,50],...,
    'CallBack', @Processing_Array)
 
uicontrol('Style', 'PushButton', ... 
    'String', 'Plot' ,'Position', [330,20,120,50],...,
    'CallBack', @Output)
 
function Processing_Array(c,d)
for i=1:1:10;
    arr(i)=i*i;
end
 
function Output(e,f)
plot(arr);
end % конец главной функции
Добавлено через 30 секунд
sergsh, возможно Ваш вариант тоже сработает

Добавлено через 2 часа 45 минут
Нет, global arr что-то не срабатывает

Добавлено через 21 минуту
То есть, работает только в том случае, если global <имя переменной> будет не только в глобальной области видимости, но и в области видимости той функции, которая ее использует.
то есть:
Matlab M
1
2
3
4
global arr;
 
function A(s,ss)
global arr;
0
Эксперт по математике/физике
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
27.02.2017, 07:22 4
Цитата Сообщение от Zigfrid Посмотреть сообщение
работает только в том случае, если global <имя переменной> будет не только в глобальной области видимости
Прочитайте в документации MATLAB как пользоваться функцией global.
И вообще что Вы имеете ввиду под понятием "в глобальной области видимости".
Синтаксис скриптов и функций MATLABa существенно отличается от синтаксиса С и С++
0
27.02.2017, 07:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2017, 07:22
Помогаю со студенческими работами здесь

Взаимодействие функций
Всем доброго времени суток! Постараюсь наиболее кратко описать ситуацию: Сам я не программист, а...

Взаимодействие функций между собой
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; const float pi =...

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

Создание GUI приложения с выводами графиков функций
изучаю WinAPI, чтоб потренироваться делать GUI приложения взял задачу сделать окно с выводами...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru