【问题标题】:Using a function in matlab, I get the error `indices must either be real positive integers or logicals.` [duplicate]在matlab中使用函数,我得到错误`索引必须是真正的正整数或逻辑。` [重复]
【发布时间】:2012-01-11 08:06:33
【问题描述】:

以下代码的目的是绘制 RGB 图像的 SNR(好吧,代码说明了灰度的 id,因为我无法为 RGB 做这是最终目标)和 y axix 绘制干净和嘈杂之间的平均误差图像除以干净图像的标准偏差(以缩放误差)。代码产生错误

??? Subscript indices must either be real positive
integers or logicals.

==> cr_t 在 34 处出错

varra=var(var(CleanImg_normalized)); 
  1. 请帮助纠正代码,因为我得到一个点作为图而不是线图的单个值
  2. 如何修改RGB图像的代码
  3. 在 db 中计算 SNR 的整数倍数是否有任何意义,我见过最常用的 10,20 个数字。

【问题讨论】:

  • 错误似乎表明var 是一个数组,而不是计算方差的内置函数。您是否将 var 定义为您范围/工作区中其他地方的变量?
  • 另外,在上面的第 4 行有一个错字,你指的是 'CleanIm' 而不是 'CleanImg'。也许一些预定义的 CleanIm 会导致一些问题?另外,你为什么要绘制一个点?这是尝试清理图像的一部分吗?
  • @Vidar:谢谢您的回复。那个错误不再存在,我刚刚重新启动了我的机器。是的,情节是单点而不是线图!为什么会这样?我想要绘制 SNR 与由干净图像的方差缩放的平均误差。我该怎么做?

标签: matlab image-processing matrix


【解决方案1】:

正如@Chris 所说,根据您的错误消息,matlab 似乎认为var 是一个变量。所以也许你已经分配了这个变量。要检查这样做:

whos var

如果输出不为空,则表示确实分配了var

在这种情况下,请执行以下操作:

clear var

之后,变量var 不应再分配。所以再次运行你的脚本。但是,您还应该检查在您的脚本期间没有分配var

【讨论】:

  • :错误消失了,我刚刚重新启动了我的机器,并且没有在其他任何地方分配方差 var 变量。但是,对于绘图,它只是给出了一个点作为绘图而不是线图!值是SNR = 0.9786 varra = 4.7182e-005。不知道现在逻辑上出了什么问题。请帮忙。
猜你喜欢
  • 2021-07-02
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
  • 1970-01-01
  • 2016-02-14
  • 2016-02-16
  • 2014-09-11
  • 2013-02-05
相关资源
最近更新 更多