General questions about function and if command.

1 visualizzazione (ultimi 30 giorni)
C Zeng
C Zeng il 23 Ott 2012
1. If I have a variable x, and I use a nested function f and in f.m, there is also a variable x but not equal to the first x. Will it bother the program? The x's are defined in different functions, will matlab recognize these?
2. I have an error message: --- Operands to the and && operators must be convertible to logical scalar values.
Error in V_F (line 16) if P(n)>0 && x>n-1 ---
However, P(n) is scalar and x is also scalar. What is wrong here?
Thanks.

Risposte (2)

Matt Fig
Matt Fig il 23 Ott 2012
Modificato: Matt Fig il 23 Ott 2012
For the first question, it makes a difference how and where you are accessing the variables. Post a simple example for anlaysis. For the second question, are you sure P is not a cell array and P(n) is not nan? Are you sure n is a scalar and not empty or nan? Are you sure x is a scalar and not empty or nan?
  1 Commento
C Zeng
C Zeng il 23 Ott 2012
Hi, Matt, thanks in advance!
(1) For example, in my current program, I define x as a vector, like x=zeros(1,N). I also define a function f(a,b,c) note f has nothing with x. In f.m file, I write a code to find the f_value, including define auxiliary variable x which is a scalar. By doing so, it seems to me that it will not affect any confusion, and by convention, matlab will not make any problem, right?
(2)Let me double check it. I think they are all well defined and will not be empty or infinity.

Accedi per commentare.


Walter Roberson
Walter Roberson il 23 Ott 2012
There might perhaps be a code path in which your local "x" does not get initialized in the subfunction on and so inherits the scalar value.
  3 Commenti
Walter Roberson
Walter Roberson il 23 Ott 2012
Suppose you have
if a > 3
x = 15;
elseif a < 3
x = 22;
end
then it might at first look like x is always being initialized, but in fact in the case that a is exactly 3, there would be a path in which x was not set, and so in that case would inherit its value from the nesting function.
C Zeng
C Zeng il 26 Ott 2012
Thanks, Walter, so in this case x is not well defined? Will it cause any problem to nested function?

Accedi per commentare.

Categorie

Scopri di più su Data Type Conversion in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by