octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Need test run in Matlab


From: John W. Eaton
Subject: Re: Need test run in Matlab
Date: Thu, 31 Jan 2019 15:05:22 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0

On 1/29/19 2:39 PM, Christian Himpe wrote:
Here is the output of the corrected script.

Thanks.

I'm a bit confused by these results. Maybe I'm missing something, but I don't understand the case of f3(1), which shows that "sigma -1" is evaluated as a command. Compare this with f1(), which fails when there is a variable in the local workspace that conflicts with the name of the function (sigma). How does that make sense?

Functions:

function f1 ()
  sigma = svd (1);
  eval ('sigma -1;');
end

function f3 (sigma)
  eval ('sigma -1;');
end

function r = sigma (opt)
  global sigma_call;
  if (nargin == 0)
    sigma_call = 'function';
    r = 1;
  elseif (ischar (opt))
    sigma_call = 'command';
    r = 1;
  else
    sigma_call = 'unexpected';
  end
end

Output you sent for calling f1() and f3(1):

f1: error: Error using f1 (line 3)
Error: "sigma" was previously used as a variable, conflicting with its use here as the name of a function or command. See "How MATLAB Recognizes Command Syntax" in the MATLAB documentation for details.
f1 (): none

f3 (1): command

Here are the functions:

function f1 ()
  sigma = svd (1);
  eval ('sigma -1;');
end

function f3 (sigma)
  eval ('sigma -1;');
end

function r = sigma (opt)
  global sigma_call;
  if (nargin == 0)
    sigma_call = 'function';
    r = 1;
  elseif (ischar (opt))
    sigma_call = 'command';
    r = 1;
  else
    sigma_call = 'unexpected';
  end
end

Why should f3(1) succeed in calling sigma as a command-style function when f1() fails with an error message about sigma defined as a variable and later being used as a command-style function? Isn't sigma defined as a variable in both cases prior to the use as a function?

jwe




reply via email to

[Prev in Thread] Current Thread [Next in Thread]