首页 文章

在GUIDE,Matlab中存储/传递半大数据

提问于
浏览
1

我正在做一个做一些信号处理的gui . 其中一个组件是“记录”按钮,它记录麦克风几秒钟的声音 . 一些滑块稍后以不同的方式对其进行俯仰移位,稍后会播放播放变换后的声音的“播放”按钮 .

我使用手柄获取有关从滑块中选择的频率的所有信息,它工作正常 . 但是由于录制的声音,我有点担心,因为我知道句柄结构一直被复制 . 几秒钟的声音可能不会太多,但我会被用于大型数据结构,因为它被复制了 . 我按照这里的说明尝试使用setappdata和getappdata https://se.mathworks.com/help/matlab/ref/getappdata.html

在这里https://se.mathworks.com/help/matlab/creating_guis/share-data-among-callbacks.html#bt9p4t0

它不起作用,并给了我一个

Attempt to reference field of non-structure array.

Error in gui>recordbutton_Callback (line 334)
setappdata(hObject.Parent, 'v', 'Record')

错误 .

这是我尝试存储它的方式:

% --- Executes just before gui is made visible.
function gui_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to gui (see VARARGIN)

setappdata(hObject, 'v', '');

%% --- Other app-specific inits


% --- Executes on button press in recordbutton.
function recordbutton_Callback(hObject, eventdata, handles)
% hObject    handle to recordbutton (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
setappdata(hObject.Parent, 'v', 'Record')
getappdata(hObject.Parent)

我已经尝试将它存储在hObject.Parent和hObject本身 . 两者都给出了相同的错误 . 我希望数据可以从所有其他组件的回调函数访问,但不能一直复制 . 请注意,在这个例子中,我只是尝试将字符串'Record'存储在变量v而不是记录中以便于阅读 .

编辑:我正在使用GUIDE .

1 回答

  • 2

    要在r2014a和r2016b中完成这项工作,您有两种选择:

    使r2014a像r2016b一样工作:

    function recordbutton_Callback(hObject, eventdata, handles)
    % hObject    handle to recordbutton (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    hObject = handle(hObject);
    setappdata(hObject.Parent, 'v', 'Record')
    getappdata(hObject.Parent)
    

    在两者中使用r2014a语法:

    function recordbutton_Callback(hObject, eventdata, handles)
    % hObject    handle to recordbutton (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    Parent = get ( hObject, 'Parent' );
    setappdata(Parent, 'v', 'Record')
    getappdata(Parent)
    

相关问题