Combine or Superpose 151 Sine Waves?

1 次查看(过去 30 天)
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!!

采纳的回答

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

更多回答(1 个)

Clifford Shelton
Clifford Shelton 2012-5-4
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 个评论
Walter Roberson
Walter Roberson 2012-5-4
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 2012-5-4
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!

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 MATLAB 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by