سؤال

In MATLAB, I have the following data:

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

What I'm trying to achieve is to apply uicontrol that creates two lists with this data (mass, velocity, time, acceleration, speed), and have the ability to click on one of the variables (mass) in each column and there is a numerical data output, like mass = 23 45 44

Output: numerical data stored in these variables

Here is the code:

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

Thanks,

Amanda

هل كانت مفيدة؟

المحلول

I suggest you to not use a function to keep things simpler and keep all the variables in your base workspace.

Here is an example for one list box:

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']);

However this displays in command window, you could change the code to show it in a text box in your gui.

You can also execute a script as the Callback function.

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

and then create an m-script in your directory: (myScript.m)

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

Note that everything is still in your base workspace.

Hope it helps.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top