Como ler várias linhas por indivíduo em um texto de edição com valor Max = 5 no Matlab?

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

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

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top