“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
,这样您就离开了循环。