# Finding the index of x values to create an equally spaced array.

19 views (last 30 days)
HenT2020 on 4 Apr 2020
Commented: Star Strider on 5 Apr 2020
Hi,
I would like to pick 53 (or any other arbituary number) data points from my data set by selecting the index of the matrix. I would like to know the y values of 53 evenly spaced values of x. I want to plot the same graph but with only 53 data points. Ive attempted this by creating a linspace of length 53 with max and min values corresponding to the data, then trying to use the 'find' function for when my x array is equal to these numbers to find the array indices, and then finally finding the corresponding y-values.
dx = linspace(minx,maxx,53);
inx = find(x == dx);
dy = y(inx);
what I find very confusing is that the inx indexes are much larger than the size of the x and y arrays ( a factor of about 80 for some reason) so I cant find the corresponding y values as it exceeds the array.
Any help would be much apprieciated, cheers

#### 1 Comment

Florian Floh on 4 Apr 2020
Hi,
are your x-values equally spaced or randomly sampled?

Star Strider on 4 Apr 2020
Your approach appears to be correct, as far as it goes. Use the interp1 function to create your result vector:
x = 0:195;
y = 8*exp(-0.03*x) + 2;
dx = linspace(min(x),max(x),53);
dy = interp1(x, y, dx);;
figure
plot(x, y, '-b')
hold on
plot(dx, dy, '+r')
hold off

HenT2020 on 5 Apr 2020
Thanks! This solves my problem
Star Strider on 5 Apr 2020
As always, my pleasure!