Math, asked by pjth2018, 9 months ago

Is it reasonable to fit a curve to a data, or should I leave it as discrete points? This is to show a periodic behavior.

Answers

Answered by dubeypriyanshu586
1

Answer:

will be the first to admit I am a complete newbie with the "fit" function and "cfun" data type, and find the documentation available on it much less than user friendly, so please refrain from directing me to it - I have been through it front to back and have not found a solution.

I am going through a dataset in which I am analyzing hundreds of discrete blocks, each of which has an essentially periodic behaviour. I need to find the amplitude of this periodic behaviour. I have included an example.

My problem is this. I used a very clear sample dataset containing 13 samples (one of the best I have) with a very obvious cosine behaviour. I set the fit function up and ran it, and got parameters that give me almost a straight line. I tried using repmat thinking maybe it was my sample size, and this does almost nothing.

I manually solved the periodic fit and have included the plot with the original data, the empirically derived fit, and the results from the 'fit' function below. I have also provided what I believe to be the relevant chunk of code, but I could be wrong. Please let me know what else if anything I need to include. As I have to perform this operation on literally hundreds or thousands of these blocks, this is not something I can feasibly do manually, so if someone can direct me as to what I'm doing wrong, I would be infinitely grateful.

Thank you kindly for your time.

My image should be available here: http://i42.tinypic.com/jf7oud.jpg

Here is what cfun spits out:

cfun =

General model Sin1:

cfun(x) = a1*sin(b1*x+c1)

Coefficients (with 95% confidence bounds):

a1 = 0.8323 (-22.99, 24.66)

b1 = 0.004459 (-0.9294, 0.9383)

c1 = 1.936 (-72.97, 76.84)

And here is the relevant snippet:

%%%%%%%%%%%%%%%%%

% CURVE FITTING %

%%%%%%%%%%%%%%%%%

x = 2*pi.*((0:num_phases-1)./(num_phases-1));

num_phases2 = num_phases*10;

x2 = 2*pi.*((0:num_phases2-1)./(num_phases2-1));

x = x';

x2 = x2';

y = results(working_block*num_phases+1:working_block*num_phases+num_phases,1);

y2 = repmat(y,10,1);

cfun = fit(x,y,'sin1');

test = 0.025*cos(2*pi.*((0:num_phases-1)./(num_phases-1)))+0.775;

figure(1);

plot(2*pi.*((0:num_phases-1)./(num_phases-1)),results(working_block*num_phases+1:working_block*num_phases+num_phases,1)); hold on;

plot(2*pi.*((0:num_phases-1)./(num_phases-1)),test,'-r');

plot(cfun,'-g');

xlabel('Block');

ylabel('Correlation');

legend('Original Data

Similar questions