after command bottom, I want X=[d2;d4;d9]
조회 수: 5 (최근 30일)
이전 댓글 표시
clc
clear
A=[2;4;9];
n=length(A);
for i=1:n
s = ['syms d' int2str(A(i))];
eval(s)
end
댓글 수: 10
James Tursa
2014년 10월 28일
@Geoff: Not sure of Tatina's reason, of course, but I have done this many times myself. E.g., to pass some symbolic matrices & vectors through a section of code to verify the resulting formulas match expected model. Etc.
Geoff Hayes
2014년 10월 29일
@James - thanks for the clarification. I've never used the Symbolic Toolbox so wasn't sure if you this was something that is expected/typical.
답변 (1개)
James Tursa
2014년 10월 28일
Is this what you want? Basically repeated your code, but get rid of the zeros initialization which will make X a double array (not what you want):
clc
clear
% X=zeros(3,1) % Commented out
A=[2;4;9];
n=length(A);
for i=1:n
s = ['syms d' int2str(A(i))];
eval(s);
X(i,1)=s; % Build up symbolic matrix
end
댓글 수: 3
James Tursa
2014년 10월 28일
편집: James Tursa
2014년 10월 28일
Sorry about that. I don't have MATLAB on the machine I am using right now, so can't verify the syntax. Try either X(i) = s, or pre-allocate X=[] and then use X=[X;s]. I know there is a way to do this because I have done it before. Could always build up a char array of the result and then eval it, I suppose.
James Tursa
2014년 10월 29일
편집: James Tursa
2014년 10월 29일
Another attempt to get the symbolic vector defined in your code (still not on a machine w/MATLAB, so this is untested)
clc
clear
y='X=['; % Used to build up the symbolic vector string
A=[2;4;9];
n=length(A);
for i=1:n
s = ['syms d' int2str(A(i))];
eval(s);
y = [y 'd' int2str(A(i)) ';']; % Build up symbolic string
end
y(end) = ']'; % Replace the last ; with ]
eval(y); % Generate the symbolic vector
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!