Extract a row as a function of a variable

I have a numerical solution, which comes as a symbolic 6x51 matrix when I assign the values to T as T=[0:0.1:5].
I want to extract the first row (1x51) as a function of T, how to do it? The `rows2vars` prescription doesn't seem to work.
syms a T
v3=-2.375; g=1; b=0.00001; e2=0.5; k=pi/2;
w=-2*cos(k);
eqn = sin(3*k+a)/sin(2*k+a)==v3-w+(g.*T.^2)./(1+b.*T.^2)+(e2.*T.^2.*sin(k)^2)./(sin(2*k+a)^2+b*T.^2*sin(k)^2);
sol = solve(eqn,a,[0 pi]);
solutions = vpa(subs(sol),3);
xx=subs(solutions,T,[0:0.1:5])
% xx(1,:)
T2 = rows2vars(xx); %does not work

 采纳的回答

T=linspace(0,5,numel(xx(1,:)));
y=T.^2+sin(P+xx(1,:));
plot(T,y)

17 个评论

@madhan Thanks. Could you please specify your answer to the question? I am unable to understand your meaning, as I already used subs()..
solve() doesn't solve your equation at all
This is running well on mine, could you try the following?
syms a T
v3=-2.375;
g=1;
b=0.00001;
e2=0.5;
k=pi/2;
w=-2*cos(k);
eqn = sin(3*k+a)/sin(2*k+a)==v3-w+(g.*T.^2)./(1+b.*T.^2)+(e2.*T.^2.*sin(k)^2)./(sin(2*k+a)^2+b*T.^2*sin(k)^2);
sol = solve(eqn,a,[0 pi]);
solutions = vpa(subs(sol),3);
xx=subs(solutions,T,[0:0.1:5])
xx(1,:)
Are you sure? because I get
Error using sym.getEqnsVars>checkVariables (line 92)
Second argument must be a vector of symbolic variables.
Error in sym.getEqnsVars (line 54)
checkVariables(vars);
Error in solve>getEqns (line 429)
[eqns, vars] = sym.getEqnsVars(argv{:});
Error in solve (line 226)
[eqns,vars,options] = getEqns(varargin{:});
Error in COMMUNITY (line 9)
sol = solve(eqn,a,[0 pi]);
Sure, I get the result on R2014a as
xx = 0.0000000000058100074003806983143150013215135 + 0.0000000000022920983812460537064838532923356*i,..........
etc
ok do one thing just attach your result as a text file here
ok now we have xx what you want to do with it?
just extract the first row of it.. like xx(1,:), But as a function of T, because I want to use it to plot for T later.
If I can call it by something having T in it.. xx(1, something depending on T) if possible,,
plot(T,real(xx(1,:))) % because xx is complex so we plot T vs xx(1,:) or it's imaginary number
Ok here's the situation:
I want to plot this first row, in a function involving T, so I want that when I give a range to T, say [0,5], then the function T.^2+sin(p+xx(1,f(T))) automatically leads to [0.5].^2+sin(p+xx(1,f([0,5]))) where f(T) is the first row in xx.
Wait a minute.... where did you bring f from? what's f?
T=linspace(0,5,numel(xx(1,:)));
plot(T,xx(1,:))
No just to explain that the second argument in xx(1,:) should be a function of T, f(T) so I wrote xx(1,:)=xx(1,f(T)).
T=linspace(0,5,numel(xx(1,:)));
y=T.^2+sin(P+xx(1,:));
plot(T,y)
@madhan Thanks :) Could you please update your answer?, I'll accept it.
Anytime :) , updated my answer.

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Matrix Indexing 的更多信息

产品

版本

R2014a

Community Treasure Hunt

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

Start Hunting!

Translated by