Como ler várias linhas por indivíduo em um texto de edição com valor Max = 5 no Matlab?
-
13-12-2019 - |
Pergunta
Tenho em minha interface um campo de edição de texto que aceita múltiplas linhas com um valor máximo de 5 e não consigo encontrar uma maneira de exibir uma matriz com os valores de entrada... algo assim:
m=[m(1) m(2) m(3) m(4) m(5)];
set(handles.show,'string',m)
como posso armazenar os valores no retorno de chamada de cálculo. Toda vez que executo isso, ocorre um erro.
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
Eu tenho masa_callback,rigidez_callback e fuerza_callback tento ler a entrada do usuário na caixa de texto de edição...então quero passar esses valores para calcul_callback como um array para realizar certas operações de acordo com o valor de n...o O erro que estou recebendo é que quando por exemplo n=2, eu adiciono dois valores na coluna masa_callback e fuerza_callback e 3 valores na coluna tremendo_callback, esses valores são passados para o caso n==2, e quando meu programa tenta exibir por exemplo a matriz m, ela exibe todos os valores que insiro juntos nos espaços de m(1) e m(2)...quero colocar apenas cada valor separado, não unidos!...Como posso corrigir isso, acredito que seja com um array e um loop, mas não sei como e como passar os valores do array para a equação para realizar operações (como números) e exibi-los como string
Solução
Para corrigir o problema com a entrada (supondo que você tenha seus dados em alguma matriz de células e que handles.show
refere-se a uma caixa de texto), use strvcat
:
someCellArray = {'a','b'};
m = strvcat(someCellArray{:});
set(handles.show,'string',m)
Seu problema decorre da linha
m = str2double(get(h_masa,'string'));
Você não deseja converter a string em double.
Desde o String
propriedade realmente retorna uma string multilinha, você deve modificar seu código assim:
m = get(h_masa,'String');
nRows = size(m,1);
for iRow = 1:nRows
eval(m(i,:));
end