所以我尝试使用setappdata和getappadata共享GUI数据。例如,让我们考虑一下这个
matfile1.m
h = EmotivEEG;
h.Run
for k = 1:4
out(:,:,k) = h.data + rand(1);
setappdata(0,'eegData', out(:,:,k);
pause(0.5);
end
h.delete
因此上述文件每隔0.5秒创建一个128x14矩阵并将其存储在eegData
中matfile2.m
some_var = getappdata(0,'eegData')
plot(some_var)
这似乎有效,但不是在循环中,如果我要求它绘制它我得到这个错误
Error using setappdata
Too many output arguments.
Error in eeg_live>eeg_live_OpeningFcn (line 83)
lmno = setappdata(0,'eegData');
Error in gui_mainfcn (line 221)
feval(gui_State.gui_OpeningFcn, gui_hFigure, [], guidata(gui_hFigure), varargin{:});
Error in eeg_live (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in Neucube>activation_Callback (line 3963)
eeg_live
Error in gui_mainfcn (line 96)
feval(varargin{:});
Error in Neucube (line 49)
gui_mainfcn(gui_State, varargin{:});
Error in @(hObject,eventdata)Neucube('activation_Callback',hObject,eventdata,guidata(hObject))
Error using pause
Error while evaluating uicontrol Callback
关于如何解决这个问题的任何想法。
提前感谢。
答案 0 :(得分:1)
您的代码似乎存在一些问题,但MATLAB告诉您生成错误的行不在您提供的代码段中,并且消息非常明确:
使用此命令(第83行):
lmno = setappdata(0,'eegData');
被禁止,因为setappdata
不接受输出参数,因此抛出错误。您只能使用getappdata
的作业。
需要考虑的其他要点:
1)确保您使用与get/setappdata
相同的变量名称(即eegdata
或eegData
......但它可能是错字)
2)您似乎没有在循环中调用第二个脚本,因此setappdata
在每次迭代时都会覆盖eegData
的值。
希望有所帮助!