跨 GUI、Matlab 的数据

Data across GUI, Matlab

所以我尝试使用 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

所以上面的文件每 o.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

关于如何解决这个问题的任何想法。

提前致谢。

您的代码似乎有一些问题,但是 MATLAB 告诉您产生错误的行不在您提供的代码段中,而且消息很清楚:

使用此命令(第 83 行):

lmno = setappdata(0,'eegData');

被禁止,因为 setappdata 不接受输出参数,因此抛出错误。您只能使用 getappdata.

的赋值

其他需要考虑的要点:

1) 确保您使用与 get/setappdata 相同的变量名称(即 eegdataeegData...不过可能是打字错误)

2) 您似乎没有在循环中调用第二个脚本,因此 setappdata 在每次迭代时都会覆盖 eegData 的值。

希望对您有所帮助!