How to use slider in matlab for varying two values in graph?
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Venkatkumar M
el 9 de Mzo. de 2020
Comentada: Rik
el 10 de Mzo. de 2020
HELLO,
I have reading of freq vs ampl for different s and h.
as slider moves over different s and h the exact graph should be displayed in the window.
How to create it SLIDER IN A PLOT?
here I have attached the example of excel data that i have.
Please help me to get in figure!
Semilogx(freq,amp) THE FUNCTION THAT I USE TO PLOT THE GRAPH
0 comentarios
Respuesta aceptada
Rik
el 9 de Mzo. de 2020
Editada: Rik
el 9 de Mzo. de 2020
You should create the plot and use the slider callback function to modify the underlying data.
The code below should get you most of the way there.
freq=[1;3;5;9;11;13;15;18;20;23;25;28;30;32;35;37;40;42;45;47;49;52;54;57;59;62;64;66;69;71;74;76;79];
s=2;h=2;%intial
data=cell(4,5);
data{2,2}=[10;20;30;40;50;60;70;80;90;100;110;120;130;140;150;160;170;180;190;200;210;220;230;240;250;260;270;280;290;300;310;320;330];
data{2,4}=[3;6;9;12;15;18;21;24;27;30;33;36;39;42;45;48;51;54;57;60;63;66;69;72;75;78;81;84;87;90;93;96;99];
data{2,5}=[15;30;45;60;75;90;105;120;135;150;165;180;195;210;225;240;255;270;285;300;315;330;345;360;375;390;405;420;435;450;465;480;495];
data{4,2}=[20;40;60;80;100;120;140;160;180;200;220;240;260;280;300;320;340;360;380;400;420;440;460;480;500;520;540;560;580;600;620;640;660];
data{4,4}=[50;100;150;200;250;300;350;400;450;500;550;600;650;700;750;800;850;900;950;1000;1050;1100;1150;1200;1250;1300;1350;1400;1450;1500;1550;1600;1650];
data{4,5}=[2;4;6;8;10;12;14;16;18;20;22;24;26;28;30;32;34;36;38;40;42;44;46;48;50;52;54;56;58;60;62;64;66];
handles=struct;
handles.f=figure(1);clf(handles.f)
axes(handles.f,'Units','Normalized','Position',[0.1 0.3 0.85 0.65])
handles.s=2;handles.h=2;handles.data=data;
handles.plot=semilogx(freq,data{s,h});
handles.slider_s=uicontrol(handles.f,'Style','slider',...
'Units','Normalized','Position',[0.1 0.05 0.85 0.08],...
'Min',1,'Max',size(data,1),'Value',s,...
'Callback',@(obj,event) slidercallback(obj,'s'));
handles.slider_h=uicontrol(handles.f,'Style','slider',...
'Units','Normalized','Position',[0.1 0.15 0.85 0.08],...
'Min',1,'Max',size(data,2),'Value',h,...
'Callback',@(obj,event) slidercallback(obj,'h'));
guidata(handles.f,handles)
function slidercallback(obj,type)
handles=guidata(obj);
data=handles.data;
if strcmp(type,'s')
h=handles.h;
%get list of allowed values and round the current value to that
s_allowed=find(~cellfun('isempty',data(:,h)));
[~,best_match]=min(abs(s_allowed-get(obj,'Value')));
s=s_allowed(best_match);
handles.s=s;guidata(obj,handles)%store new s to guidata
else
s=handles.s;
%get list of allowed values and round the current value to that
h_allowed=find(~cellfun('isempty',data(s,:)));
[~,best_match]=min(abs(h_allowed-get(obj,'Value')));
h=h_allowed(best_match);
handles.h=h;guidata(obj,handles)%store new h to guidata
end
set(handles.plot,'YData',data{s,h});
end
5 comentarios
Rik
el 9 de Mzo. de 2020
How you get your data into Matlab is up to you. You could do it with xlsread, but I chose to hard-copy it into Matlab variables.
Have you read the documentation for the functions I'm using? The documentation for Matlab is really good and it is worth spending time to understand these functions. They are very versatile and you can use it for many things. These specific vectors describe the positions of each element (I use trial and error to get the positions looking right).
You don't see the value of s and h because they aren't shown anywhere. You can edit the callback function to make sure the values are displayed and updated somewhere. I would suggest putting a text uicontrol element next to each slider. Then you can update the String property (and you can use sprintf to convert the numeric value to a char array).
Rik
el 10 de Mzo. de 2020
If my answer solved your problem feel free to mark it as accepted answer. If not, feel free to post your remaining issues.
Más respuestas (0)
Ver también
Categorías
Más información sobre Migrate GUIDE Apps en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!