0

我的代码有效,但每次运行到第 13 行时,它都会在命令窗口中写入:“警告:冒号运算符在用作索引时需要整数操作数”。我的代码的相关部分如下所示:

  filename = uigetfile;
    obj = mmreader(filename);
     nFrames=obj.NumberOfFrames;
     for k = 1 : nFrames  
    this_frame = read(obj, k);
    thisfig = figure();
    thisax = axes('Parent', thisfig);
    image(this_frame, 'Parent', thisax);

    if k==1
        handle=imrect;
        pos=handle.getPosition;
    end
    partOf=this_frame(pos(2):pos(2)+pos(4),pos(1):pos(1)+pos(3));%this is line 13
    vector(k)=mean2(partOf);
    title(thisax, sprintf('Frame #%d', k));

 end

为什么会出现此警告,我可以忽略它吗?

4

2 回答 2

3

这可能是因为以下一项或多项:pos(2)pos(2)+pos(4)和不是整数,而索引应该是pos(1)pos(1)+pos(3)您可能希望使用该round函数将它们四舍五入为整数值。

于 2013-09-09T08:23:12.093 回答
1

玛雅人,

问题似乎来自您的 pos 向量的值(以及您对 pos 向量值进行的计算的值)。

这是从 MathWorks(MATLAB) 网站引用的解决方案: http ://www.mathworks.com/support/solutions/en/data/1-FA9A2S/?solution=1-FA9A2S

使用 FIX、FLOOR、CEIL 或 ROUND 函数修改索引计算以确保索引是整数。当 MATLAB 在包含变量的行上处于调试模式时,您可以通过将该变量与在该变量上运行的 ROUND 函数的输出进行比较来测试变量是否包含整数。

于 2013-09-09T08:26:00.773 回答