Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

General questions about function and if command.

Asked by C Zeng

C Zeng (view profile)

on 23 Oct 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.

0 Comments

C Zeng

C Zeng (view profile)

Products

No products are associated with this question.

2 Answers

Answer by Matt Fig

Matt Fig (view profile)

on 23 Oct 2012
Edited by Matt Fig

Matt Fig (view profile)

on 23 Oct 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 Comment

C Zeng

C Zeng (view profile)

on 23 Oct 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.

Matt Fig

Matt Fig (view profile)

Answer by Walter Roberson

Walter Roberson (view profile)

on 23 Oct 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 Comments

C Zeng

C Zeng (view profile)

on 23 Oct 2012

Can you be clear, Walter? I am curious how does it happen.

Walter Roberson

Walter Roberson (view profile)

on 23 Oct 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 (view profile)

on 26 Oct 2012

Thanks, Walter, so in this case x is not well defined? Will it cause any problem to nested function?

Walter Roberson

Walter Roberson (view profile)

Contact us