我有一个MATLAB GUI(由GUIDE提供)帮助我做一些计算..
我有一个'计算'按钮,每按一次就会计算一个新的重量和x值(并操纵输入)
我需要以矩阵形式存储该2值,但我不知道如何使用它。因此需要创建一个等于计算值长度的矩阵并存储它们。
计算“计算”点击次数的循环可能有所帮助,但我不确定。
任何帮助将不胜感激。
答案 0 :(得分:0)
这是一些简单的代码,我认为你做了什么。我为演示创建了一个“程序化”GUI,但在GUIDE代码中很容易实现。具体来说,查看CalculateCallback
,这是用户按下用于“计算”的按钮时执行的回调。这里没有计算/数据操作本身,代码只从文本框中获取用户输入并使用值更新矩阵。还有一个计数器来跟踪计算的数量。
代码被注释,应该很容易遵循。如果没有,请要求澄清!
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屏幕截图:
完成后,您可以从handles.MatrixValues
获取数据并随意执行任何操作。
希望能帮助您入门!