我的代码可以运行,但每次运行第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
为什么会出现此警告,我可以忽略它吗?
答案 0 :(得分:3)
可能是因为以下一项或多项:pos(2)
,pos(2)+pos(4)
,pos(1)
和pos(1)+pos(3)
不是整数,应该是哪些索引。您可能希望使用round
函数将它们四舍五入为整数值。
答案 1 :(得分:1)
Maayan,
问题似乎发生在你的pos矢量值(以及你对pos矢量值的计算值)。
这是MathWorks(MATLAB)网站引用的解决方案: http://www.mathworks.com/support/solutions/en/data/1-FA9A2S/?solution=1-FA9A2S
使用FIX,FLOOR,CEIL或ROUND函数修改索引计算,以确保索引是整数。当MATLAB在包含变量的行上处于调试模式时,您可以通过比较变量和在该变量上运行的ROUND函数的输出来测试变量是否包含整数。