0

在 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

谢谢,

阿曼达

4

1 回答 1

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-script: (myScript.m)

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

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

希望能帮助到你。

于 2013-05-29T23:35:12.133 回答