필터 지우기
필터 지우기

How to write a vector-valued function with vector input from the screen in MATLAB?

조회 수: 4 (최근 30일)
I am trying to do the following in MATLAB:
1. input *from screen* a small positive integer M (between 1 and 8);
2. input *from screen* M function expressions with variables `t, x1, x2, ... xM`; name for now these M functions f1,f2,...,fM;
3. given a vector `v=[t,x1,x2,...,xM]`, evaluate each of the M functions with the input `v`;
4. the output is a vector `Y=[y1,y2,...,yM]` where `y1=f1(v),y2=f2(v),...`.
I learned from this [old code][1] that I can do (1) and (2) with
TRUE = 1;
FALSE = 0;
OK = FALSE;
while OK == FALSE
fprintf(1,'Input the number of equations\n');
M = input(' ');
if M <= 0 | M > 7
fprintf(1,'Number must be a positive integer < 8\n');
else
OK = TRUE;
end;
end;
ss = cell(M,1);
for I = 1:M
fprintf(1,'Input the function F_(%d) in terms of t and y1 ... y%d\n', I,M);
fprintf(1,'For example: ''y1-t^2+1'' \n');
kk = input(' ');
ss{I} = kk;
end;
How can I do (3) and (4)?
[1]: https://www.mathworks.com/matlabcentral/answers/uploaded_files/97690/ALG057.m

채택된 답변

jack
jack 2017년 12월 21일
I have just found that (3) and (4) can be done by the following code
TRUE = 1;
FALSE = 0;
OK = FALSE;
while OK == FALSE
fprintf(1,'Input the number of equations\n');
M = input(' ');
if M <= 0 || M > 7
fprintf(1,'Number must be a positive integer < 8\n');
else
OK = TRUE;
end
end
ss = cell(M,1);
for I = 1:M
fprintf(1,'Input the function F_(%d) in terms of t and y1 ... y%d\n',...
I,M);
fprintf(1,'For example: ''y1-t^2+1'' \n');
kk = input(' ');
ss{I} = kk;
end
%(3)
V = 1:M+1; %replacing V with other input vectors here
c = num2cell(V);
Y = zeros(1,M);
if M==1
ysym = sym('y1');
else
ysym = sym('y%d',[1,M]);
end
syms t
for I = 1:M
z = evalin(symengine, ss{I});
f = symfun(z,[t,ysym]);
Y(I)=f(c{:});
end
%(4)
Y

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Conversion Between Symbolic and Numeric에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by