solving symbolic array to output a numerical solution

조회 수: 12 (최근 30일)
Samuel Casallas
Samuel Casallas 2021년 3월 26일
댓글: Walter Roberson 2025년 2월 4일
Hi there, I was wondering if I could get some feedback on a potential solution for this problem. I am trying to solve for ma3 and obtain a numerical value for each value used in the FLcD3 array. However, the output of Ma3 is a struct with fields. How do I get it so the solution is an array with the numerical values? I'm guessing I would need some form of a for loop but i'm not quite sure how to set it up.
PSW = 0.36:0.03:0.69;
L12 = PSW*TL;
D = 0.03;
Ma4 = 1;
P4 = 1.013;
Lc3 = TL-L12;
FLcD3 = 4*f*Lc3/D;
ma3 = sym('ma3', [1 length(PSW)]) ;
eqn1 = (-1./G).*(1-ma3.^-2)+((G+1)./(2.*G)).*log((((G+1)./2).*ma3.^2)./(1+((G-1)./2).*ma3.^2)) == FLcD3;
Ma3 = vpasolve(eqn1,ma3)
%This is the output I get
Ma3 =
ma31: [1×1 sym]
ma32: [1×1 sym]
ma33: [1×1 sym]
ma34: [1×1 sym]
ma35: [1×1 sym]
ma36: [1×1 sym]
ma37: [1×1 sym]
ma38: [1×1 sym]
ma39: [1×1 sym]
ma310: [1×1 sym]
ma311: [1×1 sym]
ma312: [1×1 sym]

답변 (2개)

madhan ravi
madhan ravi 2021년 3월 26일
편집: madhan ravi 2021년 3월 26일
struct2array(Ma3)

VBBV
VBBV 2023년 6월 1일
편집: VBBV 2023년 6월 1일
From the reference link given by @madhan ravi, you can use struct2cell function and later convert the cell to double array using cell2mat function. And i think both struct2cell & cell2mat are documented well in Matlab
Ma3 = vpasolve(eqn1,ma3)
cell2mat(struct2cell(Ma3))
  댓글 수: 5
Torsten
Torsten 2025년 2월 4일
Why don't you directly apply
matkElemNL22 = vpa(subs(auxMLStructure.KNL22))
?
Walter Roberson
Walter Roberson 2025년 2월 4일
Side note:
As of R2025a (currently in pre-release), cell2mat() does support sym objects.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Number Theory에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by