gpt4 book ai didi

matlab - getappdata 在 MATLAB 中返回空矩阵

转载 作者:行者123 更新时间:2023-12-02 04:53:57 24 4
gpt4 key购买 nike

我有一段代码,我在其中使用 setappdata,然后我使用 getappdata 调用数据,它返回一个空的 matirx,即使它不为空。下面是我的一段简化代码:

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

我应该解释一下,我正在使用 getappdatasetappdata,因为我想在不同的 GUI 之间传递数据,而在执行此操作时我遇到了空矩阵问题。所以这是我最终目标的一个非常简化的问题。我还阅读了很多不同的文章以及关于这个问题和命令的信息,包括 mathworks 网站,但我对这个问题很迷茫。

最佳答案

首先,让我们解释一下发生了什么。

edit1_Callback 中,您将 setappdata 应用于 hObject。此时 hObject 引用 edit1,即编辑框,您已将其应用程序数据值 H 设置为 5。

然后您将在 pushbutton1_Callback 中调用 getappdata。此时 hObject 引用 pushbutton1,您将获得它的应用程序数据值 H,该值从未设置过,因此您得到 [].

之前的回答建议您改为在根对象 0 上使用 setappdatagetappdata。这可行,但它与使用全局变量基本相同,这是不好的。

相反,我建议您最有可能只想确保您在正确的事情上设置和获取应用程序数据。在 edit1_Callback 中,尝试:

setappdata(handles.edit1,'H',C)

pushbutton1_Callback 中,尝试:

N=getappdata(handles.edit1, 'H')

我认为这应该有效(它假设编辑框实际上被称为 edit1,我认为这很可能是给定您的 GUIDE 生成的代码,但如果您将其命名为其他名称,请更改它) .

关于matlab - getappdata 在 MATLAB 中返回空矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18330949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com