Получение данных из итераций в таблицу с помощью MATLAB GUIDE - PullRequest
1 голос
/ 17 июня 2020

Я хочу извлечь данные из каждой итерации в каждую строку таблицы, которую я использовал, как показано ниже:

set(handles.tableIteration,'data',vars)

Но он получил только последние значения из последней итерации в первая строка таблицы? Зачем? Как я могу получить все значения в каждой итерации в таблице?

Интерфейс

% --- Executes on button press in btnSolve.
function btnSolve_Callback(hObject, eventdata, handles)
% hObject    handle to btnSolve (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
syms x
func = handles.editEquation.String;
S = vectorize(char(func)); % For Signs Like %,^,&,.
f = str2func(['@(x) ', func]);
a = str2double(handles.editBeginning.String);
b = str2double(handles.editEnd.String);
n = str2double(handles.editMaximumIteration.String); 
error = str2double(handles.editError.String);

%Bisection Method
if f(a)*f(b) > 0
  disp('f(a)*f(b) must be less than zero');
else
fx = 2*error;
num = 0;
while(num < n && abs(fx) > error)
    fa = f(a);
    x = (a+b)/2;
    fx = f(x);
    if (sign(fx) == sign(fa))
        %Retrieving the data to the table
        vars = {num2str(a),num2str(b),num2str(x), num2str(fx)};
        set(handles.tableIteration,'data',vars)
        a = x;
    else
        %Retrieving the data to the table
        vars = {num2str(a),num2str(b),num2str(x), num2str(fx)};
        set(handles.tableIteration,'data',vars)
        b = x;
    end
    num = num + 1;
end

end
handles.btnPlot.Enable = 'on';

1 Ответ

1 голос
/ 17 июня 2020

Используя метод set для data uitable, устанавливает все данные таблицы в качестве значения, которое вы отправляете.

Решение 1:

Определите все данные, которые вам нужны в таблице перед настройкой:

vars = {num2str(a),num2str(b),num2str(x), num2str(fx)};
data = [get(handles.tableIteration, 'Data'); vars];
set(handles.tableIteration,'Data', data)

Решение 2:

Определите точную строку, которую вы хотите установить:

vars = {num2str(a),num2str(b),num2str(x), num2str(fx)};
handles.tableIteration.Data(end+1, :) = vars;
...