GUI MATLAB中的对数刻度滑块

3

我在MATLAB中创建GUI的时候遇到了滑块的问题。我希望有一个范围从10^-1到10^-5的滑块,但是它要以0.1的因数为间隔。因此,这个滑块需要有一个对数刻度。有人知道如何解决这个问题吗?


欢迎来到SO。您能提供一个[mcve]吗? - lhcgeneva
3
在基本的MATLAB中,最接近的方法是使用滑块的线性值作为幂。MATLAB中没有非线性滑块刻度,你可能需要深入了解底层的Java才能找到类似的东西。 - sco1
1个回答

0

我不太确定我是否正确理解了您的意思。如果您想从线性刻度制作对数刻度:

对数的定义:

enter image description here

所以,如果你需要从10^-1滑动到10^-5,你想要从你的滑块中获取一些值并进行适当的转换。我建议将minmax设置为1和5(或-5和-1),在每个滑块回调后或仅使用滑块值时使用以下公式进行转换:

y = 10^(-x)

其中y是您想要的值,x是滑块中的一个值。 在代码中应该类似于这样:

logValue = 10^(-get(hObject,'Value'));
set(handles.text2,'string',logValue);

通过在GUI中放置某种文本框来检查此方法,该文本框将向您显示y

但是,如果您想从对数制制作线性刻度:

 y = log(x)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接