how to set a unit to variable?

I encounter the error after run this :
30*unit::mm

2 Comments

Check below link if you have version greater than or equal to R2017A
Discussion of character strings is not very relevant to the question of whether MATLAB can handle units.

Sign in to comment.

 Accepted Answer

Karan Gill
Karan Gill on 7 Apr 2017
Edited: Karan Gill on 17 Oct 2017
Units are now in MATLAB if you have Symbolic Math Toolbox. Try:
>> u = symunit;
>> x = 2*u.meter
x =
2*[m]
>> x = rewrite(x,u.ft)
x =
(2500/381)*[ft]
>> double(separateUnits(x))
ans =
6.5617

1 Comment

Note: the implementation of units has difficulty with quantity 0, which tends to make the most difference with temperature (e.g., 0C and 0F)

Sign in to comment.

More Answers (2)

the cyclist
the cyclist on 27 Dec 2015
In general, MATLAB variables do not have units, and what you have written is not a valid MATLAB syntax (to my knowledge).
There is a contribution to the File Exchange that allows for assigning unit to variables: http://www.mathworks.com/matlabcentral/fileexchange/29621-units-conversion-toolbox/content/UnitConversion-rev2/html/defining.html.

1 Comment

Karan Gill
Karan Gill on 7 Apr 2017
Edited: Karan Gill on 7 Apr 2017
Units are now in MATLAB if you have Symbolic Math Toolbox. See the tutorial: https://www.mathworks.com/help/symbolic/units-of-measurement-tutorial.html
Posted a separate answer below so that OP can accept.

Sign in to comment.

Steven Lord
Steven Lord on 27 Dec 2015
That syntax is specifically for use in the MuPAD Notebook Interface (as stated by the note at the top of this documentation page) not in MATLAB.

3 Comments

ok,but how to use mupad.i want define a variable in mupad and use that in matlab workspace.
30 * sym('unit::mm')
is no longer supported. These days you should use symunit . Or if you are despairate,
30 * feval(symengine, 'unit::mm')

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!