A small digression from the main topic of this blog – dogs coding in C++ – to highlight a small portion of the ugliness in the MATLAB syntax.

Let’s assign a variable:

>> A = 2

A =

     2

>> disp(A)
     2

>> disp(eval('A'))
     2

Ok, so A equals eval(‘A’). What about:

>> eval('B = 3')

B =

     3

>> disp(B)
     3

>> disp(eval('B'))
     3

Ok, what if…

>> eval('C') = 4

eval =

  Columns 1 through 20

     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0

  Columns 21 through 40

     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0

  Columns 41 through 60

     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0

  Columns 61 through 67

     0     0     0     0     0     0     4

Wat?
Let’s double check the variables now…

>> disp(A)
     2

>> disp(B)
     3

>> disp(C)
Undefined function or variable 'C'.
 
>> disp(eval(C))
Undefined function or variable 'C'.
 
>> disp(eval('C'))
     4

WAT?!?

>> disp(eval('A'))
     0

>> disp(eval('B'))
     0

Wait, but…

>> eval

eval =

  Columns 1 through 20

     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0

  Columns 21 through 40

     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0

  Columns 41 through 60

     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0

  Columns 61 through 67

     0     0     0     0     0     0     4

Leave a Reply