Clear Filters
Clear Filters

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

2 views (last 30 days)
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 Comments
KL
KL on 5 Oct 2017
Edited: KL on 5 Oct 2017
Hi Joseph, Can you describe what you're trying to achieve this code?
Joseph Lee
Joseph Lee on 5 Oct 2017
Edited: Joseph Lee on 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.

Sign in to comment.

Accepted Answer

KL
KL on 5 Oct 2017
Edited: KL on 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 Comments
KL
KL on 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 on 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;

Sign in to comment.

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!