2014-12-03 1 views
0

У меня есть MATLAB GUI (гид), который помогает мне сделать некоторые расчеты ..MATLAB Сохранение значения, которое обновляется бесступенчатой ​​

У меня есть кнопки «Рассчитать», который вычисляет новый вес и значение х каждый время, которое я нажимаю на него (и манипулировать входами)

Мне нужно сохранить это значение в матричной форме, но я не знаю, как это сделать. Поэтому ему необходимо создать матрицу, которая равна длине значений расчета и сохранить их.

Петля, которая подсчитывает количество кликов для расчета, может помочь, но я не уверен.

Любая помощь будет оценена по достоинству.

+0

Ваш гий создан с помощью гида? – patrik

+0

Да, он создан с помощью гида – Aerodynamicist

+0

Хорошо, я понимаю, что я имею в виду, если он был создан с помощью GUIDE, но, я думаю, вы поняли. Во всяком случае, вам нужно написать то, что вы хотите сделать внутри функции обратного вызова, которая создается вместе с кнопкой. Данные могут передаваться вместе с функцией, используя (я думаю) 3-й аргумент [ссылка на документацию] (http://se.mathworks.com/help/matlab/creating_guis/write-callbacks-using-the- гид-workflow.html) – patrik

ответ

0

Вот какой простой код, который я думаю, делает то, что вы хотите. Я создал «программный» графический интерфейс для демонстрации, но его легко реализовать в коде GUIDE. В частности, посмотрите на CalculateCallback, который является обратным вызовом, выполняемым, когда пользователь нажимает кнопку, используемую для «вычисления». Здесь нет вычислений/манипуляции данными как таковой, код принимает только пользовательские входы из текстовых полей и обновляет матрицу со значениями. Существует также счетчик для отслеживания количества вычислений.

Код прокомментирован. Si должно быть легко следовать. Если нет, просьба уточнить!

function CalculateGUI 

clear 
clc 
close all 

%// Create figure and uielements 
handles.fig = figure('Position',[440 500 500 150]); 

handles.CalcButton = uicontrol('Style','Pushbutton','Position',[60 70 80 40],'String','Calculate','Callback',@CalculateCallback); 

handles.Val1Text = uicontrol('Style','Text','Position',[150 100 60 20],'String','Value 1'); 
handles.Val1Edit = uicontrol('Style','Edit','Position',[150 70 60 20],'String',''); 

handles.Val2Text = uicontrol('Style','Text','Position',[220 100 60 20],'String','Value 2'); 
handles.Val2Edit = uicontrol('Style','Edit','Position',[220 70 60 20],'String',''); 

handles.MatrixText = uicontrol('Style','Text','Position',[290 125 100 20],'String','Value 1 Value 2'); 
handles.MatrixEdit = uicontrol('Style','Text','Position',[300 25 80 100]); 

handles.CounterText1 = uicontrol('Style','Text','Position',[40 20 80 20],'String','Loop counter'); 
handles.CounterText2 = uicontrol('Style','Text','Position',[130 20 80 20],'String',''); 

%// Initialize counter to get # of values calculated 
handles.CalculateCounter = 0; 
handles.MatrixValues = zeros(1,2); 

guidata(handles.fig,handles); %// Save handles structure of GUI. IMPORTANT 

    function CalculateCallback(~,~) 

     %// Retrieve elements from handles structure. 
     handles = guidata(handles.fig); 

     %// Get entries in text boxes. Assumes inputs are numbers. 
     Val1 = str2double(get(handles.Val1Edit,'String')); 
     Val2 = str2double(get(handles.Val2Edit,'String')); 

     %// If 1st calculation, initialize the matrix containing the 
     %// values. Otherwise, concatenate current values with existing matrix. 
     if handles.CalculateCounter == 0 
      handles.MatrixValues = [Val1,Val2]; 
     else 
      handles.MatrixValues = [handles.MatrixValues; Val1,Val2]; 
     end 

     %// Print matrix values in text box. 
     set(handles.MatrixEdit,'String',num2str(handles.MatrixValues)); 

     %// Update counter and display current value in GUI. 
     handles.CalculateCounter = handles.CalculateCounter + 1; 
     set(handles.CounterText2,'String',num2str(handles.CalculateCounter)) 
     guidata(handles.fig,handles); %// Save handles structure of GUI. 
    end 
end 

Вот скриншот GUI после некоторых вычислений:

enter image description here

После того, как вы закончите вы можете получить данные из handles.MatrixValues и делать все, что вы хотите с ними. Надеюсь, что поможет вам начать работу!

Смежные вопросы