Comment lire plusieurs lignes par personne dans une édition de texte avec une valeur Max=5 dans Matlab?

StackOverflow https://stackoverflow.com//questions/9695129

Question

J'ai dans mon interface graphique d'un champ de texte à modifier qui accepte plusieurs lignes avec une valeur Max de 5, et je ne peux pas trouver un moyen d'afficher une matrice avec des valeurs d'entrée...quelque chose comme ceci:

m=[m(1) m(2) m(3) m(4) m(5)];
set(handles.show,'string',m)

comment puis-je stocker les valeurs dans la calculer de rappel..à chaque fois que je l'exécute, il me met une erreur..

function masa_Callback(hObject, eventdata, handles)
% hObject    handle to masa (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 %h_edit is the handle to the edit box
m=str2double(get(hObject,'String'));

function calculate_Callback(hObject, eventdata, handles)
% hObject    handle to agregarm (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
f = str2double(get(h_fuerza,'string')); %h_edit is the handle to the edit box

m = str2double(get(h_masa,'string')); %h_edit is the handle to the edit box

[row, column] = size(m);

for i = 1:row 
eval(m{i,:}) %evaluate each line as in MATLAB command prompt
end

J'ai le masa_callback,rigidez_callback et fuerza_callback j'essaie de lire le mode d'entrée dans la zone de texte modifier...si je veux transmettre ces valeurs à l'calculate_callback comme un tableau à effectuer certaines opérations en fonction de la valeur de n...l'erreur que je reçois est que lorsque, par exemple, n=2, j'ajoute deux valeurs dans le masa_callback colonne et fuerza_callback et 3 valeurs dans la rigidez_callback, ces valeurs sont transmises pour le cas n==2, et quand mon programme tente d'afficher par exemple la matrice m, il affiche toutes les valeurs que je entrer ensemble dans les espaces de m(1) et m(2)...j'ai envie de mettre seulement séparés de la valeur, non réunis!...Comment puis-je résoudre ce problème, je crois que c'est avec un tableau et une boucle, mais je ne sais pas comment, et comment passer le tableau des valeurs de l'équation d'effectuer des opérations(que des chiffres) et l'afficher comme une chaîne de caractères

Était-ce utile?

La solution

Pour résoudre le problème avec l'entrée (en supposant que vous avez vos données dans une cellule de tableau, et que handles.show se réfère à une zone de texte), l'utilisation strvcat:

someCellArray = {'a','b'};
m = strvcat(someCellArray{:});
set(handles.show,'string',m)

Votre problème vient de la ligne

m = str2double(get(h_masa,'string'));

Vous ne voulez pas de convertir la chaîne de caractères à double.

Depuis le String propriété renvoie en fait d'une multiligne chaîne, vous devez modifier votre code comme ceci:

m = get(h_masa,'String');

nRows = size(m,1);

for iRow = 1:nRows
eval(m(i,:));
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top