I want to draw dual phase portraits in a 4x4 linear differential equation system. My codes contain 4 variables as below (x1, x2, y1, y2).

1 view (last 30 days)
p=0.1; q=15;
x1dom = linspace(-p,p,q);x2dom = linspace(-p,p,q);y1dom = linspace(-p,p,q);y2dom = linspace(-p,p,q);
[X1,X2,Y1,Y2] = ndgrid(x1dom,x2dom,y1dom,y2dom);
A=[1.1 0 0.8 0 ; 0 1.2 0 0 ; 0 0 -0.9 0 ; 0 0 0 -0.5];
X1dot= A(1,1)*X1 + A(1,2)*X2 + A(1,3)*Y1 + A(1,4)*Y2;
X2dot= A(2,1)*X1 + A(2,2)*X2 + A(2,3)*Y1 + A(2,4)*Y2;
Y1dot= A(3,1)*X1 + A(3,2)*X2 + A(3,3)*Y1 + A(3,4)*Y2;
Y2dot= A(4,1)*X1 + A(4,2)*X2 + A(4,3)*Y1 + A(4,4)*Y2;
quiver(X1,X2,X1dot,X2dot)
Error using matlab.graphics.chart.primitive.Quiver/set
Error setting property 'XData' of class 'Quiver':
Value must be an array of numeric type with 3 or fewer dimensions.

Error in quiver (line 81)
set(h,'Parent',parax,'Color_I',c,'LineStyle_I',ls,pvpairs{:});
How could I solve this problem?
  2 Comments
Abolfazl Chaman Motlagh
Abolfazl Chaman Motlagh on 12 Sep 2021
your X1 , X2 , X1dot , X2dot are 4 dimensional array. how do you want to plot them with quiver? it is exactly the error the code returns.
"Value must be an array of numeric type with 3 or fewer dimensions."

Sign in to comment.

Answers (0)

Community Treasure Hunt

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

Start Hunting!