Combine or Superpose 151 Sine Waves?

2 views (last 30 days)
Using the below code and I have been able to successfully created 151 different sine waves all fit to my data set.
y = Score(:);
n = 501;
t = (1:501)';
games = 1:501;
data(1:151) = struct('X',NaN(501,3),'bhat',NaN(3,1),'yhat',NaN);
for ii = 1:151
tmp = 2*pi*(sincos(ii))*t;
data(ii).X = rand(501,3);
data(ii).X(:,2) = cos(tmp)';
data(ii).X(:,3) = sin(tmp)';
data(ii).bhat = data(ii).X\y;
data(ii).yhat = data(ii).bhat(1)+data(ii).bhat(2)*cos(tmp)+data(ii).bhat(3)*sin(tmp);
end
My question is how do I combine or superpose all 151 sine waves into one sine wave?
Thanks!!

Accepted Answer

Walter Roberson
Walter Roberson on 3 May 2012
Guessing about which field you are referring to:
sum(horzcat(data.yhat),2) ./ 151

More Answers (1)

Clifford Shelton
Clifford Shelton on 4 May 2012
Thanks a bunch. Both of the suggestions work. But now it seems that the single sin wave created is extremely thin. My data set has values that range between 0-20.
and each of the 151 sine waves constructed separately also have amplitudes that fit the range of values.
When the sin waves are all added together using your above suggestion..the single sine wave only has a value range between 5-5.4. This makes the newly constructed single sine wave look like a small tightrope when plotted with my data set and isn't very useful visually to see the best fit.
Do you have any idea how to remedy that problem?
  8 Comments
Walter Roberson
Walter Roberson on 4 May 2012
The std() and max/min calls are just for information to try to figure out the problem. You can remove the std() call.
Remove the existing line
yhat = sum(horzcat(data.yhat),2) ./151;
and use
yhat_array = horzcat(data.yhat);
yhat = mean(yhat_array,2);
and then for information purposes
max(yhat_array, [], 2) - min(yhat_array, [], 2)
with no semi-colon
Clifford Shelton
Clifford Shelton on 4 May 2012
hm..that gives me a max of 1.67 and a min of 1.12.
that didn't seem to do what we had planned.
I'm not exactly understanding how if the 151 sine waves standing alone have a wider range in values...why does that all of a sudden shrink when they are added together?
Shouldn't the sums of them create even higher and lower max and mins on the sine waves?
What would be a way for me to just do simple addition of each sine wave from the scalar structure? I've done that in the past with sinewaves and it created desired results.
You are the MAN by the way!

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!