我在做一些處理信號的GUI。其中一個組件是一個「記錄」按鈕,記錄麥克風幾秒鐘的聲音。稍後幾個滑塊以不同的方式移動它,稍後有一個播放按鈕可播放變形的聲音。在GUIDE中存儲/傳遞半大型數據,Matlab
我使用處理所有有關從滑塊選擇的頻率的信息,它工作正常,但是與錄製的聲音,我有點擔心,因爲我知道把手結構複製所有的時間。幾秒鐘的聲音可能不會太多,但我擔心性能問題,因爲gui運行很長時間,並且很多組件被點擊。我在一些Mathworks頁面上閱讀過,guidata /句柄不應該用於大型數據結構,因爲它被複制。我嘗試使用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中,而不是爲了便於閱讀而進行記錄。
編輯:我使用的指南。
這是MATLAB <2014B?錯誤是因爲'hObject.Parent',hObject不是一個結構 –
是的,>版本給出了8.3.0.532(R2014a),所以我會這樣猜測。我在Stackoverflow上看到了hObject.Parent,所以我只是複製它。任何解決方法?無庸置疑,該代碼應該在2014年和2016年都運行,但這並不是一個嚴格的要求。 – user1661303
複製粘貼代碼而不知道它的作用!多麼恐怖的可怕想法要做。主要是因爲你不知道如果失敗會發生什麼,並且並不是所有的代碼都是正確的。 –