How to plot parametric equations by using "for loop"

If we have,
t= linspace (-30,-1.6);
X= ((3*t)./(1+t.^3);
Y= ((3*t.^2)./(1+t.^3));
plot(X,Y);
How we plot X and Y by using for loop?

18 Kommentare

Torsten
Torsten am 18 Mai 2017
What do you want to do within the for-loop ?
Best wishes
Torsten.
KSSV
KSSV am 18 Mai 2017
Bearbeitet: KSSV am 18 Mai 2017
Why you want a loop, when the given code plots the data?
Wajahat
Wajahat am 18 Mai 2017
Actually, i want to plot a matrix equations. To plot matrix equations we use for loop.
KSSV
KSSV am 18 Mai 2017
How?
Wajahat
Wajahat am 18 Mai 2017
Bearbeitet: Guillaume am 18 Mai 2017
t= linspace (-30,-1.6);
q=linspace (-30,-1.6);
X= ((3*i*t)./(1+t.^3);
Y= ((3*i*t.^2)./(1+t.^3));
a=[X Y; -Y X];
b=[X Y; -conj(Y) conj(X)];
c=[X X; -Y Y];
q1=q-(det(a)./det(b));
u1=-(det(c)./det(b));
plot(q1,u1)
now we have matrix a, b and c. How we plot it using for loop?
KSSV
KSSV am 18 Mai 2017
This gives error because, det exists for square matrices...in this a is not square matrix.
Wajahat
Wajahat am 18 Mai 2017
No, a is a square matrix a=[X Y; -Y X]
a is a 2x200 matrix. It's definitively not square.
Rik
Rik am 18 Mai 2017
a is not square with the above code, it is 2x200.
And when you want to plot something, it is at least as important to think about how you want to plot as what you want to plot. What do you want to be on what axis? Do you want to show more information using marker sizes or colors?
With a, b and c, you could make a 3D scatter plot (or surface plot) with the values in a, b and c as the x, y and z values. Is that what you want?
Wajahat
Wajahat am 18 Mai 2017
without using for loop, it gives error (i.e. one of the matrix would not be a square), my question is, how to plot parametric equations with for loop?
KSSV
KSSV am 18 Mai 2017
And I would like to point put that determinant of a=[X Y; -Y X] would be always zero, even though you make it a square. We cannot help you unless your question is clear.
Wajahat, We really have no idea what it is you're asking. You started with:
if we have [parametric equation and code that plots it given], how we plot X and Y by using for loop?
To which you were told: It's already working, why do you want to use a loop?
You then changed your question to say that you had a matrix instead. Again, said you needed to use a loop without explaining why. When asked why you wanted to use a loop, you gave some code that did not even work.
You've now changed your question again back to the original question. Our answer is still the same: It's already working, why do you want to use a loop?
We have no idea why you insist on using a loop. You haven't showed us why a loop is needed and we have no idea what it is you want looping over.
Wajahat
Wajahat am 19 Mai 2017
Bearbeitet: Wajahat am 19 Mai 2017
Guillaume, i have written a code (below) in which a matrices a and b are involved and get the plot of a solution q1 by using loop.
clear all;
close all;
x=-10:.1:10;
t=-10:.1:10;
q=.2;
mu1=4-.3*i;
mu2=.3+i;
for k=1:length(x)
for l=1:length(t)
x11=exp(i.*x(k)./(2*mu1)).*exp(-i.*mu1.*t(l)./2);
x21=exp(i.*x(k)./(2*mu2)).*exp(-i.*mu2.*t(l)./2);
y11=exp(-i.*x(k)./(2*mu1)).*exp(i.*mu1.*t(l)./2);
y21=exp(-i.*x(k)./(2*mu2)).*exp(i.*mu2.*t(l)./2);
a=[y11 y21; mu1.*x11 mu2.*x21];
b=[x11 x21; y11 y21];
q1(l,k)=q-(det(a)./det(b));
end
end
surf(x,t,abs(q1));
This is a plot of q1, where a and b are square matrices.
Now i write another solution i.e.
u1=-(det(c)./det(b));
where c=[x11 x21; mu2.*y11 mu1.*y21];
and plot a parametric curve between q1 and u1 (i.e. plot(q1,u1)). How can we do it by using loop? If we don't use loop then the dimension of the matrices does'nt match, i.e. one of the matrix would not be a square.
Still, there is something missing....First change your above code following: Replace i with 1i, and preallocate q1.
q1 = zeros(length(x),length(t)) ;
Now coming to a,b,c which are
a=[X Y; -Y X];
b=[X Y; -conj(Y) conj(X)];
c=[X X; -Y Y];
You can make them a square matrix, using meshgrid to X,Y. But the determinants of them would be zero.
Wajahat
Wajahat am 19 Mai 2017
KSSV, can you send me a complete code with changing as you mentioned?
clear all;
close all;
x=-10:.1:10;
t=-10:.1:10;
q=.2;
mu1=4-.3*1i;
mu2=.3+1i;
q1 = zeros(length(x),length(t)) ;
for k=1:length(x)
for l=1:length(t)
x11=exp(1i.*x(k)./(2*mu1)).*exp(-1i.*mu1.*t(l)./2);
x21=exp(1i.*x(k)./(2*mu2)).*exp(-1i.*mu2.*t(l)./2);
y11=exp(-1i.*x(k)./(2*mu1)).*exp(1i.*mu1.*t(l)./2);
y21=exp(-1i.*x(k)./(2*mu2)).*exp(1i.*mu2.*t(l)./2);
a=[y11 y21; mu1.*x11 mu2.*x21];
b=[x11 x21; y11 y21];
q1(l,k)=q-(det(a)./det(b));
end
end
surf(x,t,abs(q1));
Wajahat
Wajahat am 19 Mai 2017
KSSV, why we replace i with 1i, and preallocate q1. what is the reason behind it?
KSSV
KSSV am 19 Mai 2017
Bearbeitet: KSSV am 19 Mai 2017
You should be knowing that matlab is showing red line under them, it is to improve the speed.

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Graphics Performance finden Sie in Hilfe-Center und File Exchange

Tags

Gefragt:

am 18 Mai 2017

Bearbeitet:

am 19 Mai 2017

Community Treasure Hunt

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

Start Hunting!

Translated by