Effacer les filtres
Effacer les filtres

Finding the Y value corresponding to X value in a parametric plot

2 vues (au cours des 30 derniers jours)
Joseph Lee
Joseph Lee le 5 Oct 2017
Commenté : Joseph Lee le 12 Oct 2017
how do i find the value of Y when X= 1360 for every loop? X and Y gives a matrix. s is a random number for each loop
smax=0.4;
smin=0.1;
S=smin+rand(1,n)*(smax-smin);
S_cumulative=cumsum(S);
n= 3200;
R=200.04;
V=30;
v=20000;
i=1;
while i<n
t= linspace (0,50,100000);
X=R*sind((v*t/(R))+(V*(t))+S_cumulative(i);
Y=-R*cosd((v*t/R));
end
i=i+1;
  2 commentaires
KL
KL le 5 Oct 2017
Modifié(e) : KL le 5 Oct 2017
Hi Joseph, Can you describe what you're trying to achieve this code?
Joseph Lee
Joseph Lee le 5 Oct 2017
Modifié(e) : Joseph Lee le 5 Oct 2017
this plots 3200 parametric curves and im trying to find the minimum Y values among all the curves for X range {1360,1400}, eg. for position X=1360, i want to find the lowest Y value for that point given by all the curves. using find(X==1360) does not work. I can solve it on paper by finding t, time then substituting into Y equation but i cant put this into the code.

Connectez-vous pour commenter.

Réponse acceptée

KL
KL le 5 Oct 2017
Modifié(e) : KL le 5 Oct 2017
If all your curves have the same timestep and same number of measurements why not put them all together in a matrix and then find the minimum? For example,
allY = rand(10,4); %say, you have 4 curves with 10 values (random data in this example)
X = (1:10)';
data_summary = [X allY] %put them together
intvl = 3:6; %in your case 1360 to 1400
minVals = min(data_summary(intvl,2:end))
  7 commentaires
KL
KL le 11 Oct 2017
As far as I have understood, every column of the Y matrix is a curve and they are somehow associated with X along the row. So when I say find minimum value of Y when X = 6 (for example), we are trying to find the minimum along the row 6 across all columns (hence along all curves).
You're saying there are 100000 values of y for each iteration (or curve), well that means 100000 x, right? How about storing it vertically?
X Y1
1 0.4
2 0.2
... ...
100000 0.34
and then concatenate it horizontally for the next iteration,
X Y1 Y2
1 0.4 0.8
2 0.2 0.4
... ... ...
100000 0.34 0.1
So, this how I could understand the problem from your descriptions. This is why we insist on creating a minimal example with a sample code.
Joseph Lee
Joseph Lee le 12 Oct 2017
This worked, thanks for tip on arrays. Im looking for a way to find minimum for the 1st column of each cell, comparing the 1st,2nd columns and so on to get the minimum.
M = cell(n, 1) ;
j=8;
N=1;
while j<=24
while N<=160
idx=find(abs(X-j)<0.01);
Ymin(N,:)=min(Y(idx));
j=j+0.1;
N=N+1;
end
end
M{i}=Ymin;

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by