我有一段代碼,其中我使用setappdata
,後來我使用getappdata
調用數據,它返回一個空的matirx,即使它不是空的。我的簡化代碼段是如下:getappdata在MATLAB中返回空矩陣
function edit1_Callback(hObject, eventdata, handles)
C=str2double(get(hObject,'String'))
setappdata(hObject,'H',C)
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
N=getappdata(hObject,'H')
當我運行代碼,我輸入一個值到editbox
然後推動pushbutton
,我得到下面的輸出
C =
5
N =
[]
我想以下輸出
C =
5
N =
5
我要解釋一下,我使用getappdata
和setappdata
因爲我想通過不同數據之間ent GUI,我在做這個時遇到了空矩陣問題。所以這是我最終目標的一個非常簡單的問題。我還閱讀了很多不同的文章和關於這個問題和命令的信息,包括數學工作站,但是我對這個問題很迷茫。
我想使用'0'的美妙之處在於,我可以通過使用不同名稱從一個句柄訪問所有變量。但我選擇不使用全局變量是有原因的,所以我認爲Sam給出的這個答案對我來說更合適。謝謝 – user2519890
如果你喜歡,如果沒有真正的全局變量,你可以得到一種半途而廢的方法,把所有內容都存儲在GUI主圖形的'appdata'中(如果你有多個窗口,選擇一個永遠存在的命令申請時間)。那麼這些數據將是'GUI的全局',但實際上並不是全局的。如果你發現傳遞一個GUI圖形的句柄是一件麻煩事。給它的'Tag'屬性分配一些獨特的東西,然後用'h = findobj('Tag','something')'在任何你喜歡的地方檢索它的句柄。 –
當我嘗試在GUI之間傳遞數據時使用'handles.edit1'而不是'0',我實際上遇到了一個問題,當它使用'0'時它工作正常,但是使用'handles.edit1'或'handles. * appropiateTag *我得到'參考不存在的'錯誤 – user2519890