【问题标题】:'Undefined function or variable' in MatlabMatlab中的“未定义函数或变量”
【发布时间】:2013-02-24 19:45:01
【问题描述】:

这是我的代码:

    function [im,sindx,end1]=alln(im,i,j,secret,sindx,end1)
    slen=length(secret);
    p=im(i,j);
    neigh= [im(i-1,j) im(i+1,j) im(i,j-1) im(i,j+1) im(i-1,j-1) im(i+1,j-1) im(i-1,j+1) im(i+1,j+1)];
    minpix = min (neigh)
    maxpix = max (neigh)

        if minpix < p < maxpix
        lowlim = minpix+1;
        highlim = maxpix-1;   
        range = highlim-lowlim+1;

        nbits=floor(log2(abs(range)));   

        if sindx+nbits-1>slen
            end1=1;
            return
        end
        for k=1:nbits
            bin(k)=secret(sindx+k-1);
        end
        b = bin2dec(bin);
        newvalue1 = abs (minpix + b);
        newvalue2 = abs (maxpix - b);
        if abs(p-newvalue1)<= abs(p-newvalue2)
            im(i,j) = newvalue1;
        else
            im(i,j) = newvalue2;
        end

        sindx=sindx+nbits;

    end
end

我的主程序调用了这个函数。当我运行程序时,我收到以下错误消息:

??? Undefined function or variable "bin".

Error in ==> alln at 34
            b = bin2dec(bin);

我知道有很多专家认为这根本不是问题。我是 MATLAB 新手。请各位大侠指路,代码中的哪种修改可以解决这个问题?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    首先,文件中是否缺少某些行?也许你已经从顶部剥离了一些 cmets?因为错误消息说

    b = bin2dec(bin); 
    

    是第 34 行,但在您提供的代码中是第 22 行。

    好吧,不说了……

    错误消息说'bin'没有定义,但我看到它被设置就行了......

    bin(k)=secret(sindx+k-1); 
    

    这表明我没有运行那条线。

    我看到 bin = ... 行在“for”循环内,所以我怀疑 for 循环运行了零次,这意味着“bin”永远不会被定义。什么是 nbits?是 1,还是可能小于 1?这将完全阻止循环运行。

    尝试删除末尾的分号

    nbits=floor(log2(abs(range))); 
    

    再次运行您的代码。

    省略分号将强制在命令行窗口中打印 nbits 的值。我打赌你会发现它是 1 或更少。如果是这样的话,那就开始看看如何计算 nbits,我打赌你会发现问题的。

    【讨论】:

      【解决方案2】:

      函数alln 的哪些输入参数出现错误?

      假设nbits 为0,那么下面的循环将不会运行:

      for k=1:nbits
          bin(k)=secret(sindx+k-1);
      end
      

      所以,bin 将是未定义的。所以,错误发生了。这是可能发生错误的情况之一。这种可能的情况很多。

      【讨论】:

      • 另一个问题 Neeraj,如何进入调试模式。我的意思是我想通过使用“Step”、“Step In”等来运行我的程序。但是这些选项在我的程序中被禁用。如何启用它们?
      猜你喜欢
      • 2012-04-15
      • 2023-03-08
      • 2013-09-27
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      • 2015-02-22
      相关资源
      最近更新 更多