MATLAB:uicontrol和列表

时间:2013-05-29 22:51:48

标签: list matlab uicontrol

在MATLAB中, 我有以下数据:

mass = [ 23 45 44]
velocity = [34 53 32]
time = [1 2 3]
acceleration = [32 22 12]
speed = [12 33 44]

我想要实现的是应用uicontrol,使用此数据(质量,速度,时间,加速度,速度)创建两个列表,并且能够单击每列中的一个变量(质量)并且有一个数值数据输出,如质量= 23 45 44

输出:存储在这些变量中的数值数据

以下是代码:

function learnlists()
figure;
yourcell={'mass','velocity','time','acceleration','speed'}
hb = uicontrol('Style', 'listbox','Position',[100 100 200 200],...
'string',yourcell,'Callback',@measurements)

yourcell={'mass','velocity','time','acceleration','speed'}
hc = uicontrol('Style', 'listbox','Position',[300 100 200 200],...
'string',yourcell,'Callback',@measurements)


function [out] = measurements(hb,evnt)
outvalue = get(hb,'value');

v = get(hb,'value')
if v == 1
    mass = [1 2  3 4 5]
elseif v == 2
     velocity = [ 1 2 3 4 5]

end

end

   end

谢谢,

阿曼达

1 个答案:

答案 0 :(得分:1)

我建议你不要使用函数来保持简单,并将所有变量保存在基础工作区中。

以下是一个列表框的示例:

mass = [ 23 45 44];
velocity = [34 53 32];
time = [1 2 3];
acceleration = [32 22 12];
speed = [12 33 44];

figure;
yourcell = {'mass','velocity','time','acceleration','speed'};
hb = uicontrol('Style', 'listbox','Position',[100 100 200 200],...
     'string',yourcell,'Callback',...
     ['switch get(hb, ''Value''), ',...
     'case 1, mass, ',...
     'case 2, velocity, ',...
     'case 3, time, ',...
     'case 4, acceleration, ',...
     'case 5, speed, ',...
     'end']);

但是,这会显示在命令窗口中,您可以更改代码以在gui的文本框中显示它。

您还可以将脚本作为回调函数执行。

hb = uicontrol('Style', 'listbox','Position',[100 100 200 200],...
     'string',yourcell,'Callback', 'myScript');

然后在您的目录中创建一个m脚本: (myScript.m)

switch get(hb, 'Value')
    case 1
        mass
    case 2
        velocity
    case 3
        time
    case 4
        acceleration
    case 5
        speed
end

请注意,所有内容仍在您的基本工作区中。

希望它有所帮助。