Info
이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.
help to fix this numeric symbolic array
조회 수: 2 (최근 30일)
이전 댓글 표시
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
답변 (1개)
Karan Gill
2017년 8월 12일
편집: Karan Gill
2017년 10월 17일
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
Walter Roberson
2017년 8월 12일
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
2017년 8월 13일
Yes, I do not recommend using vpa(xScaled,2) to anyone who hasn't carefully read the vpa doc :) Too much potential for confusion.
이 질문은 마감되었습니다.
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!