MATLAB GUI:将变量更新为 mat 文件
MATLAB GUI: updating variables to mat file
我有一个程序,最后会启动一个 GUI。我使用指南构建它。我使用名为 n.mat 的 mat 文件(和按钮功能)将程序中的 4 个变量加载到 4 个 GUI 文本框中。
节目中
n = [nuno, ndue, ntre, nquattro];
save n.mat
在 GUI 界面按钮
% --- Executes on button press in upload.
function upload_Callback(hObject, eventdata, handles)
% hObject handle to upload (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
S = load('n.mat');
handles.v1 = S.nuno;
handles.v2 = S.ndue;
handles.v3 = S.ntre;
handles.v4 = S.nquattro;
set(handles.initial1,'String',num2str(handles.v1));
set(handles.initial2,'String',num2str(handles.v2));
set(handles.initial3,'String',num2str(handles.v3));
set(handles.initial4,'String',num2str(handles.v4));
guidata(hObject, handles);
然后我有其他 4 个文本框,我可以在其中更改变量的值并将它们保存在另一个 mat 文件中。我不确定我这样做是否正确。
在程序中(调用 myGUI 之前)我为更新的变量初始化 m 向量。
nunof = 0;
nduef = 0;
ntref = 0;
nquattrof = 0;
m = [nunof, nduef, ntref, nquattrof];
save m.mat
在程序中(调用 myGUI 后)我尝试加载 m.mat 文件并从中提取变量,以便我可以在程序中进一步的计算中使用它们。
load m.mat;
nunof = m.nunof;
nduef = m.nduef;
ntref = m.ntref;
nquattrof = m.nquattrof;
在此之前,在 GUI 界面 'done' 按钮中,我尝试将我的输入保存到 m.mat 文件中,如下所示:
function done_Callback(hObject, eventdata, handles)
% hObject handle to done (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% save the parameters to file
load('m.mat');
m = [nunof, nduef, ntref, nquattrof];
nunof = str2num(get(handles.final1,'String'));
nduef = str2num(get(handles.final2,'String'));
ntref = str2num(get(handles.final3,'String'));
nquattrof = str2num(get(handles.final4,'String'));
save('m.mat','-append');
我想知道为什么这不起作用以及如何更改它。非常感谢。
您不能使用 save('m.mat','-append');
。您缺少附加选项。
为了使用追加你必须声明一个文件名,变量然后追加。
save(filename,variables,'-append')
取自 - https://au.mathworks.com/help/matlab/ref/save.html
此外,根据您的代码,您没有重新定义 m 结构中的变量。
我有一个程序,最后会启动一个 GUI。我使用指南构建它。我使用名为 n.mat 的 mat 文件(和按钮功能)将程序中的 4 个变量加载到 4 个 GUI 文本框中。
节目中
n = [nuno, ndue, ntre, nquattro];
save n.mat
在 GUI 界面按钮
% --- Executes on button press in upload.
function upload_Callback(hObject, eventdata, handles)
% hObject handle to upload (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
S = load('n.mat');
handles.v1 = S.nuno;
handles.v2 = S.ndue;
handles.v3 = S.ntre;
handles.v4 = S.nquattro;
set(handles.initial1,'String',num2str(handles.v1));
set(handles.initial2,'String',num2str(handles.v2));
set(handles.initial3,'String',num2str(handles.v3));
set(handles.initial4,'String',num2str(handles.v4));
guidata(hObject, handles);
然后我有其他 4 个文本框,我可以在其中更改变量的值并将它们保存在另一个 mat 文件中。我不确定我这样做是否正确。
在程序中(调用 myGUI 之前)我为更新的变量初始化 m 向量。
nunof = 0;
nduef = 0;
ntref = 0;
nquattrof = 0;
m = [nunof, nduef, ntref, nquattrof];
save m.mat
在程序中(调用 myGUI 后)我尝试加载 m.mat 文件并从中提取变量,以便我可以在程序中进一步的计算中使用它们。
load m.mat;
nunof = m.nunof;
nduef = m.nduef;
ntref = m.ntref;
nquattrof = m.nquattrof;
在此之前,在 GUI 界面 'done' 按钮中,我尝试将我的输入保存到 m.mat 文件中,如下所示:
function done_Callback(hObject, eventdata, handles)
% hObject handle to done (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% save the parameters to file
load('m.mat');
m = [nunof, nduef, ntref, nquattrof];
nunof = str2num(get(handles.final1,'String'));
nduef = str2num(get(handles.final2,'String'));
ntref = str2num(get(handles.final3,'String'));
nquattrof = str2num(get(handles.final4,'String'));
save('m.mat','-append');
我想知道为什么这不起作用以及如何更改它。非常感谢。
您不能使用 save('m.mat','-append');
。您缺少附加选项。
为了使用追加你必须声明一个文件名,变量然后追加。
save(filename,variables,'-append')
取自 - https://au.mathworks.com/help/matlab/ref/save.html
此外,根据您的代码,您没有重新定义 m 结构中的变量。