【问题标题】:matlab indices not in range? [closed]matlab索引不在范围内? [关闭]
【发布时间】:2013-11-20 23:41:06
【问题描述】:

我正在尝试为 IP 编写最佳量化。 我是 matlab 新手,在这段代码中,我试图遍历 Z 的每个间隔中的每个像素,将其与直方图相乘并求和,这样我就可以计算出最佳 Q。

问题:Attempted to access hist(257);index out of bounds because numel(hist)=256.

for i=1:K,

    for j=(Z(i)):Z(i+1),

       sum1=(j)*hist(j+1)+sum1;
       count=count+hist(j+1);

    end
end

【问题讨论】:

  • 异常很明显,你访问的是不存在的hist(257)

标签: matlab indexing indices


【解决方案1】:

错误告诉您无法访问hist(257),因为数组hist 中只有256 个元素。请注意,hist 也是一个内置函数名称,因此您确实应该考虑为您的变量指定一个不同的名称。

如何解决:

仔细考虑您的代码以及您想要实现的目标。什么是ZhistK? j 可以达到的最大值是多少(=Z(i+1))?这就是您索引hist 的值,显然hist 并没有那么大。那么每个变量的形状是什么?

【讨论】:

  • K=2^N; N 是开头的位数 Z 等分 Z=z0:D:zk; z0=0,zk=255(灰度)。 Z的最大值是255,K+1=numel(Z)。所以我不明白 hist 是如何达到 257 的?数字(历史)=256
  • 听起来确实令人费解。当代码停止时,ijZ(i+1) 的值是多少?是否还有其他您未显示的代码会更改 Z 的值?
  • 解决了,你说得对,问题不在这个循环中。
猜你喜欢
  • 1970-01-01
  • 2018-08-30
  • 2020-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
相关资源
最近更新 更多