Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

How to ensure that dynamically create symbolically variables are real?

조회 수: 7 (최근 30일)
Kevin Bachovchin
Kevin Bachovchin 2014년 2월 14일
마감: MATLAB Answer Bot 2021년 8월 20일
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.
Thank you, Kevin
  댓글 수: 1
Kevin Bachovchin
Kevin Bachovchin 2014년 2월 14일
편집: Kevin Bachovchin 2014년 2월 14일
Al, B1, and C1 can be declared to be real syms using the following syntax.
syms A1 B1 C1 real
A = [A1 B1 C1]
It seems to be there should be some equivalent way when declaring the syms dynamically.

답변 (2개)

Azzi Abdelmalek
Azzi Abdelmalek 2014년 2월 14일
I don't think you can, for example force the variable A1 to be real. If
A1=5+j
Then
index = {'1'};
List = {'A','B','C'};
A=sym(strcat(List,index))
out=subs(A(1))
The result is a complex number
  댓글 수: 5
Azzi Abdelmalek
Azzi Abdelmalek 2014년 2월 14일
s=regexp('A':'Z','.','match')
n=3
a=strjoin(strcat(s(1:n),'1'))
eval(['syms ' a ' real'])
eval(['A=[' a ']'])
Kevin Bachovchin
Kevin Bachovchin 2014년 2월 14일
I can't assume that the list is going to be alphabetic either. Basically the list can be whatever cell array the user inputs. Is there a way to do something like
index = {'1'};
List = {'A','B','C'};
A=sym(strcat(List,index))
out=subs(A(1))
and just ensure the symbolic variables are real for the purposes of symbolic math that comes later.

Kevin Bachovchin
Kevin Bachovchin 2014년 2월 20일
clear all
index = {'1'};
List = {'A','B','C'};
A=sym(sym(strcat(List,index)),'real')
  댓글 수: 2
Walter Roberson
Walter Roberson 2014년 2월 21일
Not if the variable names are not all the same number of characters.
Kevin Bachovchin
Kevin Bachovchin 2014년 2월 21일
It seems to work fine even when the variables names in List have different number of characters.
clear all
index = {'1'};
List = {'AR','BRR','C'};
A=sym(sym(strcat(List,index)),'real')

이 질문은 마감되었습니다.

태그

Community Treasure Hunt

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

Start Hunting!

Translated by