Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
GL
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 27

Передача аргументов в grPlot в приложении GUI без среды GUIDE

30.08.2014, 00:04. Показов 2001. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В одной из вложенных функций при попытке выполнить grPlot выдается ошибка:

Matlab M
1
2
3
4
 Undefined function 'grPlot' for input arguments of type 'double'.
Error in Rout/BtnDoCallback (line 333)
            grPlot(V(:,1:2),[sp(1:end-1);sp(2:end)]','d','%d','');
Error while evaluating uicontrol Callback
Недавно вопрос "как обеспечить передачу данных из одной вложенной функции в другую" на форуме исчерпывающим образом раскрыл tvoretsmira (большое ему спасибо - его рекомендации по setappdata и getappdata решили проблему).
Здесь, видимо, также необходима передача данных - ошибка при обращении к grPlot указывает на это.
Привязка вопросов к задаче:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
function Rout
hFig = figure
function BtnDoCallback(hObject, eventdata) % вложенная функция
- внутри этой вложенной функции выполняется программа, которая  формирует массив исходных данных sp 
- внутри этой вложенной функции задан массив исходных данных V 
- sp и V требуются для работы grPlot, не понятно как их сделать "видимыми" для  grPlot (1-я проблема)   
                grPlot(V(:,1:2),[sp(1:end-1);sp(2:end)]','d','%d','');
                set(get(gcf,'CurrentAxes'),'FontName','Times New Roman Cyr','FontSize',12)
                title(['\bfКратчайший путь из вершины' num2str(s) 'в вершину' num2str(t)]);
- картинка на выходе grPlot должна размещаться либо в отдельном окне либо на hFig, но как это сделать (2-я проблема)    
end; % end - BtnDoCallback
end; % end -  function Rout
Заранее признателен за помощь
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.08.2014, 00:04
Ответы с готовыми решениями:

Передача данных из вложенной функции в другую в приложении GUI без среды guide
Поясните, пожалуйста, как передать матрицу M из первой вложенной функции во вторую: 1. function Rout 2. function ...

Таблица uitable в GUI без GUIDE
Помогите, пожалуйста, с выводом таблицы!!! Создан шаблон таблица, в который должны вводиться статистические характеристики из массива...

Передача аргументов в приложении
Здравствуйте. Пишу оконное приложение, которое должно реализовывать функции snmpwalk утилиты: опрашивать WiFi контроллер, и получать с него...

5
 Аватар для tvoretsmira
462 / 452 / 56
Регистрация: 28.05.2013
Сообщений: 699
30.08.2014, 00:21
В ошибке сказано что матлаб не может найти функцию grPlot
Цитата Сообщение от tvoretsmira Посмотреть сообщение
Чтобы матлаб мог найти функцию файл функции должен находится в текущей директории или на пути поиска матлаба.
Также функция может находится в файле из которого её вызывают.
Цитата Сообщение от GL Посмотреть сообщение
картинка на выходе grPlot должна размещаться либо в отдельном окне либо на hFig
Укажите в свойстве Parent этой картинки указатель hFig.
1
GL
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 27
30.08.2014, 13:46  [ТС]
Подскажите, пожалуйста - до попытки создания приложения GUI существующая программа с помощью grPlot выдавала требуемую картинку. Теперь grPlot во вложенной функции. Но как сделать, чтобы grPlot мог находиться 1) "в текущей директории или на пути поиска матлаба" либо 2) "в файле из которого её вызывают". Для этого grPlot надо переместить за пределы вложенной функции? При этом потребуется передача данных и операторы setappdata и getappdata? Или речь совсем не о том?
0
 Аватар для tvoretsmira
462 / 452 / 56
Регистрация: 28.05.2013
Сообщений: 699
30.08.2014, 14:24
Цитата Сообщение от GL Посмотреть сообщение
до попытки создания приложения GUI существующая программа с помощью grPlot выдавала требуемую картинку.
Видимо потому, что текущей директорией в матлабе тогда была папка в которой был размещен файл функции grPlot.
Если вы имели ввиду компиляцию в *.exe файл, то видимо grPlot.m надо добавить в проект.
Для того чтобы файл был на пути поиска в матлабе надо сделать как показано на картинке:

Только в третьем пункте, надо выбрать не первую попавшуюся папку (как я нарисовал), а папку в которой лежит grPlot.m
2
GL
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 27
11.09.2014, 17:38  [ТС]
Подскажите, пожалуйста - как можно осуществить передачу данных из одной вложенной функции в другую с помощью "guidata"?
Имеется графическое окно
Matlab M
1
 hF=figure('Name','Rout',....]);
В нем вложенная функция
Matlab M
1
 function BtnSelectCallback(~, ~)
% в пределах этой функции получен массив M
При попытке сохранить этот массив использован скрипт:
Matlab M
1
2
3
handles = guidata(gcf); % получаем структуру handles
        handles.data = M;                    % добавляем в нее поле data
        guidata(handles, gcf);               % сохраняем структуру
Matlab M
1
 end
% end_function BtnSelectCallback
При попытке открыть этот массив за пределами вложенной функции использован скрипт:
Matlab M
1
 M=guidata(handles, gcf)
При этом выдается ошибка:
Undefined function or variable "handles".
Error in Rout (line 208)
M=guidata(handles, gcf)
Error using guidata (line 89)
H must be the handle to a figure or figure descendent.
Error in Rout/BtnSelectCallback (line 203)
guidata(handles, gcf); % сохраняем структуру
Error while evaluating uicontrol Callback

Какими здесь должны быть скрипт и аргументы.
P.S. Вопрос связан только с использованием "guidata/handles". Другие способы (на основе assign/evalin, setappdata/getappdata, global) помог освоить tvoretsmira
0
 Аватар для tvoretsmira
462 / 452 / 56
Регистрация: 28.05.2013
Сообщений: 699
11.09.2014, 22:02
Matlab M
1
2
3
4
5
6
handles=guidata(hF);%Эта строка нужна не всегда
% При создании интерфеса через GUIDE  cвойству 'Callback' присваивается указатель
% на анонимную функцию, например:
% @(hObject,eventdata)dB2sonGUI('YourCallbackFcn',hObject,eventdata,guidata(hObject)) 
% то есть это же выражение выполняется в анонимной функции
M=handles.data;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.09.2014, 22:02
Помогаю со студенческими работами здесь

Создание exe-файла из GUI (GUIDE) приложения
В архиве форума не нашел ответ на вопрос о принципиальной возможности решения этой задачи. Заранее благодарен мнению экспертов по данной...

Передача структур в GUIDE
Добрый день! оформляю интерфейс в среде GUIDE в Matlab. Возникла проблема. Приложение состоит из 3-х окон. в в первом и во втором...

Как запустить qt gui программу, как демон, без gui, скрыв gui?
Как запустить qt gui программу, как демон, без gui, скрыв gui? В gui браузер выполняет определенные действия, и нужно запустить этот...

[ubuntu] Как запустить qt-gui программу без gui-интерфейся из консоли?
Как запустить qt-gui программу без gui-интерфейса из консоли?


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru