Info

Questa domanda è chiusa. Riaprila per modificarla o per rispondere.

help to fix this numeric symbolic array

2 visualizzazioni (ultimi 30 giorni)
Lisa Lee
Lisa Lee il 9 Ago 2017
Chiuso: MATLAB Answer Bot il 20 Ago 2021
I need some help with the code below:
scaleFactors = [ 3.4, 2.3;
1.7, 1.9 ]
xMatSym = sym('X',[ 2, 2 ]);
xScaled = xMatSym./scaleFactors;
I am hoping to get the results shown below:
X1_1/3.4 X1_2/2.3
X2_1/1.7 X2_2/1.9
But, instead I am getting the results below instead:
(5*X1_1)/17 (10*X1_2)/23
(10*X2_1)/17 (10*X2_2)/19
I know the reasons it doesn't work. But I don't know how to fix this. Can someone help me?
Thank you so much!
  3 Commenti
Lisa Lee
Lisa Lee il 12 Ago 2017
Hi, Jan, I am not sure what you mean about "{} code". I think that's for cell array. Mind to show what you mean to me with an example?

Risposte (1)

Karan Gill
Karan Gill il 12 Ago 2017
Modificato: Karan Gill il 17 Ott 2017
You can't have a "numeric symbolic" array because "numeric" and "symbolic" are different data types. For your options, see https://www.mathworks.com/help/symbolic/choose-symbolic-or-numeric-arithmetic.html.
Instead, try the vpa function on your result.
  2 Commenti
Walter Roberson
Walter Roberson il 12 Ago 2017
Note that vpa(xScaled) will get you output such as
[ 0.29411764705882352941176470588235*X1_1, 0.43478260869565217391304347826087*X1_2]
[ 0.58823529411764705882352941176471*X2_1, 0.52631578947368421052631578947368*X2_2]
You can also
>> vpa(xScaled,2)
ans =
[ 0.29*X1_1, 0.43*X1_2]
[ 0.59*X2_1, 0.53*X2_2]
Notice these are multiplications, not divisions, and it does matter for precision purposes how many digits you truncate to.
>> 1000/1.7
ans =
588.235294117647
>> 1000*.59
ans =
590
Karan Gill
Karan Gill il 13 Ago 2017
Yes, I do not recommend using vpa(xScaled,2) to anyone who hasn't carefully read the vpa doc :) Too much potential for confusion.

Questa domanda è chiusa.

Community Treasure Hunt

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

Start Hunting!

Translated by