MATLAB Answers

How to move slider-bar with a step-size of two?

6 views (last 30 days)
John Doe
John Doe on 17 May 2020
Commented: Rik on 18 May 2020
Hey there everyone. I have a slider which I want to increase like 1:2:10 by dragging the bar with mouse. How can I accomplish that?
Thanks in advance!

  1 Comment

Rik
Rik on 18 May 2020
I don't know if you have already come across this page, but especially since GUIDE is going to be removed from Matlab, here are some useful tips: https://www.mathworks.com/matlabcentral/answers/483657-how-to-create-a-gui

Sign in to comment.

Accepted Answer

Rik
Rik on 17 May 2020
Edited: Rik on 17 May 2020
Round the Value property to the nearest value in your array in the callback function.
allowed_vals=1:2:10;%better: store this in the guidata struct
val=3.2;%val=get(hObject,'Value');
[~,idx]=min(abs(allowed_vals-val));
val_rounded=allowed_vals(idx);
%set(hObject,'Value',val_rounded);
disp(val_rounded)

  4 Comments

Show 1 older comment
Rik
Rik on 18 May 2020
Did you read the documentation for these functions?
[~,idx]=min(abs(allowed_vals-val));
%subtract the value of the slider from the allowed values
%then take the absolute value to calculate the distance between the current value and all allowed values
%use the min funtion to find the index with the lowest difference
val_rounded=allowed_vals(idx);
%use the index of the lowest difference to select the value from the array
And the guidata struct is called handles in a GUIDE GUI. It is the variable that is stored with your GUI figure, so it is a good way to share data between callbacks. You can set a value in the StartupFcn and use that in your callback. That way you have a place that makes sense to set an array of allowed values, and you give yourself the option of having some callback modify this array (e.g. if you implement a data set selector that uses different ranges).
John Doe
John Doe on 18 May 2020
I see. Thanks for the explanation.
Actually, I am trying to pass this slider value to a filter.
x = imboxfilt(Dummyimage,sliderval)
When I increase the slider, the picture gets blurred. But then when I decrease the value, the blurness does not decrease. I want the blur amount to vary with the slider value.
Is it because the pixels are already averaged and cannot be reverted back? Is there a way to solve this issue? Thanks.
Rik
Rik on 18 May 2020
You need to blur the original image, so you will have to store both the original and the processed version.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!