Azzera filtri
Azzera filtri

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

2 visualizzazioni (ultimi 30 giorni)
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 Commenti
KL
KL il 5 Ott 2017
Modificato: KL il 5 Ott 2017
Hi Joseph, Can you describe what you're trying to achieve this code?
Joseph Lee
Joseph Lee il 5 Ott 2017
Modificato: Joseph Lee il 5 Ott 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.

Accedi per commentare.

Risposta accettata

KL
KL il 5 Ott 2017
Modificato: KL il 5 Ott 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 Commenti
KL
KL il 11 Ott 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 il 12 Ott 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;

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by