Помещение редактируемого ввода текста в матрицу в MATLAB - PullRequest
0 голосов
/ 05 марта 2012

Я новичок.Я хочу спросить, как поставить редактировать текст в матрицу?Например, у меня есть 30 редактируемых текстов, которые будут заполнены числом 0 - 1. Я хочу сделать матрицу x(1,1), .... x(1,30) из ввода редактируемого текста.

Я пробовал этокод:

function edit1_Callback(hObject, eventdata, handles)

% hObject handle to edit1 (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 edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double

x(1, 1) = str2double(get(hObject,'string'))

до ....

function edit30_Callback(hObject, eventdata, handles)

% hObject handle to edit30 (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 edit30 as text
% str2double(get(hObject,'String')) returns contents of edit30 as a double

x(1, 30) = str2double(get(hObject,'string'))

но окно командной строки выглядит так ...

x =

     1

x =

     0 0

x =

     0 0 0

x =

         0 0 0 0.2500

x =

         0 0 0 0 0.5000

x =

     0 0 0 0 0 0

но на самом деле я хочурезультат - матрица, как

1 0 0 0.25 0.5 0

Кто-нибудь знает, как решить эту проблему?

1 Ответ

0 голосов
/ 05 марта 2012

Ваша проблема - область действия функции. Каждая функция обратного вызова определяет x в своей собственной области, поэтому, когда функция завершается (отображая значение x в консоли), x исчезает.

Один из способов - передать переменную x между функциями, используя структуру handles. Просто используйте handles.x вместо x. Я также рекомендовал бы инициализировать эту матрицу как handles.x = zeros(1,30); при инициализации GUI.

...