# Reading Excel XY Data and Interpolate

3 views (last 30 days)
João on 16 Oct 2014
Commented: Matt Tearle on 16 Oct 2014
Hello,
I now need to interpolate them to find the function that goes through those points. How do I do this? What function do I use?
I also have to get the wave periods. Is there a way to have matlab calculate them? I mean, give me the list of values of when the function goes from negative to positive?
Thanks

Matt Tearle on 16 Oct 2014
This is a pretty huge question -- it really depends what you're assuming about the data and, consequently, what you're trying to fit to it. In general, though, if the data represents a wave signal, you probably want to do an FFT to get the frequencies.
If, however, you know it's just a single frequency wave, then, to answer your specific question about getting the periods, you can do something like this:
% Generate some data (a single-frequency wave)
w = rand;
x = linspace(0,20,501);
y = sin(2*pi*w*x);
plot(x,y)
% Find where the signal goes from positive to negative
zerocross = (y(1:end-1)>0) & (y(2:end)<0);
periods = diff(x(zerocross))
% Get the mean period and compare to what it should be
disp(mean(periods))
disp(1/w)
One last side point: two calls to xlsread is unnecessarily slow. Get x and y together and split them in MATLAB:
X = data(:,1);
Y = data(:,2);
##### 2 CommentsShow 1 older commentHide 1 older comment
Matt Tearle on 16 Oct 2014
Right. Without having your data, I just created something with a single frequency. But, as I said, doing what I did really requires an assumption that your data does come from a single-frequency source (with unknown frequency that you can figure out). Otherwise, you should use an FFT to determine the dominant frequencies in the signal. After that, if you wanted to, you could model the signal by fitting a particular Fourier series to the data. Once you know the frequencies in your model, that becomes a linear regression problem, and you can use \ in base MATLAB or regress in Statistics Toolbox.