Я не уверен, правильно ли я это сделаю, но хочу иметь функцию, которая при вызове существенно сбрасывает 4 графика. Я храню графики как handles.distplot1
, handles.distplot2
и т. Д. В надежде на то, что вы выбрали, какой график показан на оси. Мне нужно будет сбросить эти графики после нескольких разных событий, поэтому, естественно, я хочу бросить их в функции и избежать избыточности кода. Я надеюсь, что такая функция, какMatlab GUI - Устранение неполадок с помощью функции обновления
function setupDistPlots(hObject, eventdata, handles)
% filler data for surfc
x = [1 2];
z = zeros(2);
% setup blank plots for funtion to work with
a = figure(1); set(a, 'Visible', 'off')
handles.distplot1 = surfc(x, x, z);
b = figure(2); set(b, 'Visible', 'off');
handles.distplot2 = bar(NaN);
c = figure(3); set(c, 'Visible', 'off')
handles.distplot3 = surfc(x, x, z);
d = figure(4); set(d, 'Visible', 'off')
handles.distplot4 = bar(NaN);
guidata(hObject, handles);
0 Кое-что, я считаю, должно работать должным образом, но я понятия не имею, как это назвать. В функции открытия я пытаюсь setupDistPlots(hObject, eventdata, handles)
но получить следующее сообщение об ошибке при попытке получить доступ к handles.distplot1
позже:
Reference to non-existent field 'distplot1'.
Error in tabbedGUI>distanceToggle_Callback (line 212)
distribution(hObject,
handles.distplot1, ...
Error in gui_mainfcn (line 95)
feval(varargin{:});
Error in tabbedGUI (line 45)
gui_mainfcn(gui_State, varargin{:});
Error in
@(hObject,eventdata)tabbedGUI('distanceToggle_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback
редактирования: Также, пожалуйста, указать на все, что я мог бы улучшить. Все, что я делаю в Matlab, кажется хакером, как будто должно быть лучше.
edit2: Проблема с функцией открытия вызывала setupDistPlots
перед вызовом функции открытия функции guidata(hObject, handles)
. Однако теперь, когда когда я звоню `setupDistPlots снова на нажатие кнопки, я получаю следующее сообщение об ошибке:
Error using matlab.graphics.primitive.Data/set
Invalid or deleted object.
Error in andrewDistribution (line 45)
set(hplot1, 'xData', x1, 'yData', y1, 'zData', zeros(length(x1)))
Error in tabbedGUI>distanceToggle_Callback (line 200)
distribution(hObject, handles.distplot1, ...
Error in gui_mainfcn (line 95)
feval(varargin{:});
Error in tabbedGUI (line 45)
gui_mainfcn(gui_State, varargin{:});
Error in @(hObject,eventdata)tabbedGUI('distanceToggle_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback
Вы инициирующего, что обратный вызов, нажав на что-то или MATLAB пытается вызов этого обратного вызова при загрузке графического интерфейса? – Suever
Где в функции открытия вы разместили эту строку? Если перед существующими 'guidata (hObject, handles),' line, то ваши изменения будут перезаписаны дескрипторами GUIDE по умолчанию. Кроме того, это 'handles', а не' handle'. – excaza
Ошибка при нажатии кнопки, и обратный вызов пытается получить доступ к 'handleles.distplot1'. 'setupDistPlots' запускается в функции открытия, но, похоже, не обновляет дескрипторы.Ошибка не до тех пор, пока я не нажму на определенную кнопку – Shatnerz