Saving the values into a mat file error
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hy Guys. I hope you all are well. I have an urgent question as I am working on a big project. I am having an error in a code and I just want to fix this small error. I am saving the values into a mat file with my GUI and then uploading the values back by clicking on the save and upload button respectively.
However, I want my edit text boxes to write only letters and not alphabets. So, I entered an additional code where I make the letters read only and output Enter a number if an alphabet is written. However, my code shown above is not working for saving the values as it is giving me the errors:
cell contents reference from a non-cell array object.
Error in GUI_ParametersFinal>edit_TemperatureValue_Callback (line 187)
evalstring = sprintf('handles.mystructdata.%s.string = ''%s''',tagname,str{1});
This is my complete code:
function edit_TemperatureValue_Callback(hObject, eventdata, handles)
% hObject handle to edit_TemperatureValue (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit_TemperatureValue as text
% str2double(get(hObject,'String')) returns contents of edit_TemperatureValue as a double
str=get(hObject,'String');
tagname=get(hObject,'tag');
evalstring = sprintf('handles.mystructdata.%s.string = ''%s''',tagname,str{1});
evalc(evalstring);
guidata(hObject,handles)
For saving pushbutton, my code is
data = handles.mystructdata;
save('testmatfile.mat','data');
It will be so nice if someone can help :) Thank you so much.
0 commentaires
Réponse acceptée
Stephen23
le 16 Oct 2019
Modifié(e) : Stephen23
le 16 Oct 2019
Rather than this indirect, complex, buggy, obfuscated, strongly inadvisable code:
evalstring = sprintf('handles.mystructdata.%s.string = ''%s''',tagname,str{1});
evalc(evalstring);
just use simpler, neater, efficient, and much better dynamic fieldnames:
handles.mystructdata.(tagname).string = str{1};
"cell contents reference from a non-cell array object."
Clearly str is not a cell array, so your indexing will throw an error. It is worth noting that some GUI objects (e.g. some uicontrol types) can support the String property as either a character vector or cell array of character vectors: it is up to you to ensure/check this in the code. You might just need:
handles.mystructdata.(tagname).string = str;
or you could do something fancy like this:
if iscellstr(str)
handles.mystructdata.(tagname).string = str{1};
else
handles.mystructdata.(tagname).string = str;
end
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Whos dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!