How to ensure that dynamically create symbolically variables are real?
이전 댓글 표시
Hello,
I'm creating symbolic variables dynamically and I wanted to ensure that the symbolic variables are real.
I have the code
clear all
index = {'1'};
List = {'A','B','C'};
A=sym(strcat(List,index))
How can I modify this to make sure that the symbolic variables stored in A are real? I have tried changing to A=sym(strcat(List,index),'real'), but this doesn't work.
I'm looking to do something like
syms A1 B1 C1 real
A = [A1 B1 C1]
except I want to declare the variable names dynamically.
(I can't assume that List will contain alphabetically ordered letters. It is whatever list the user inputs.)
Thank you, Kevin
댓글 수: 1
Matt Tearle
2014년 2월 20일
I'm assuming you know that dynamically created variable names make for hideous programming, right? ( Obligatory link )
But maybe you have a reason, involving users and symbolic stuff, so... answer below.
채택된 답변
추가 답변 (2개)
Matt Tearle
2014년 2월 20일
편집: Matt Tearle
2014년 2월 20일
This, maybe?
names = strcat(List,index,{' '})
eval(['syms ',names{:},'real'])
eval(['A = [',names{:},']'])
Ergh. I shall now go take a shower...
댓글 수: 2
Kevin Bachovchin
2014년 2월 20일
편집: Kevin Bachovchin
2014년 2월 20일
Matt Tearle
2014년 2월 21일
편집: Matt Tearle
2014년 2월 21일
I don't understand the objection. You said:
I'm looking to do something like
syms A1 B1 C1 real
A = [A1 B1 C1]
except I want to declare the variable names dynamically.
As far as I can see, that's exactly what my code does -- I get A1, B1, and C1 as real symbolic variables, then A is a 1x3 sym created from them.
Walter Roberson
2014년 2월 21일
A(1:length(List),1) = sym(0);
for K = 1 : length(List)
A(K) = sym(List{K});
end
A = sym(A, 'real');
The behavior you are trying to use does not work because there is no functionality for sym() that even approximates it. You can pass a single string (horizontal char vector) or you can pass an existing symbolic array or you can pass a numeric array. No syntax for multiple strings. No syntax for multiple existing symbolic arrays.
댓글 수: 1
Kevin Bachovchin
2014년 2월 21일
카테고리
도움말 센터 및 File Exchange에서 Common Operations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!