“Matlab错误”;冒号运算符用作索引时需要整数操作数;

“Matlab错误”;冒号运算符用作索引时需要整数操作数;,matlab,matlab-guide,Matlab,Matlab Guide,我正在使用滑块增加f的值。它为我提供了GUI上所需的操作——但我的命令窗口显示了以下警告: 警告:冒号运算符用作时需要整数操作数 索引 事实上,如果我输出f的值,我会发现它不是一个整数 我试过fix,round,floor等,但都没有用 为什么我仍然收到这个警告 f = get(handles.slider_frames, 'Value'); f = round(f); window = 4; while f > 0 x = output(:, f:f + w

我正在使用滑块增加
f
的值。它为我提供了GUI上所需的操作——但我的命令窗口显示了以下警告:

警告:冒号运算符用作时需要整数操作数 索引

事实上,如果我输出
f
的值,我会发现它不是一个整数

我试过
fix
round
floor
等,但都没有用

为什么我仍然收到这个警告

f      = get(handles.slider_frames, 'Value');
f      = round(f);
window = 4;

while f > 0
    x = output(:, f:f + window - 1);  % <---- warning points to this line
    x = mean(x,2);

    %... code continues

end
f=get(handles.slider_frames,'Value');
f=圆形(f);
窗口=4;
当f>0时
x=输出(:,f:f+窗口-1);% 确保
round(f)
的值大于
0

如果
四舍五入(f)==0
,则索引将从零开始:

> f=0; f:f + 4 - 1
ans =
 0     1     2     3

> f=1; f:f + 4 - 1
ans =
 1     2     3     4
添加:为了避免这种情况,您应该使用滑块的
Min
Max
SliderStep
属性,这样
Value
将返回整数值(或至少是非常接近整数的数值,舍入误差最小)。
例如,如果你想

Slider.Min = 1;
Slider.Max = 79;
那么你应该把

Slider.SliderStep = [1 10] / ( Slider.Max - Slider.Min )
在这种情况下,单击带有箭头的滑块按钮将使滑块值增加1,但单击滑块槽时,滑块值将增加10。
有关更多说明,请参阅
uicocontrol
SliderStep
属性文档。

谢谢@anandr-确保
f
为>0的最佳方法是什么?我的
SliderStep
设置为
[0.01 0.1]
,而
Min Max
设置为
[1300]
。然而,
300
可以随着
window
var的变化而减少(例如,到296)。我还是不明白为什么
f=round(f)
不起作用?我也不明白。顺便问一下,您是在
循环时更改
f
,还是它无限运行?
f
仅在分配给滑块的
Min-Max
值之间运行。
Min
始终为1,
Max
300
,但根据
window
计算(即
Max=300-window
)。如果用户激活一个按钮,则
f=0
,这样您就离开了循环。