Basic Matlab Help...Please
古いコメントを表示
I have 50 wave heights (H) and 50 corresponding wave frequencies (w) and I need to create 50 sine waves over a 30 minute period and then add them up.
I have tried:
S = H.*sin(w.*t) which does not work
and:
S_1 = H(1)*sin(w(1).*t)
which takes too long because I would have to do that 50 times and then later would have to do it 306 times.
I need a quicker way to do it that does element by element multiplication to create 50 sine waves and then add the sin waves up element by element.
Thank you
回答 (3 件)
Tom
2012 年 2 月 28 日
I think that you have to have a for loop. What about
for t=1:1800
S(t) = sum(H.*sin(w*t))
end
This should give you an array S that is the sum of all the waves at each second, so that (for example) S(61) will be the sum of the waves at 1 minute and 1 second and so on.... You should then be able to graph S as a function of time.
plot(S)
1 件のコメント
Walter Roberson
2012 年 2 月 28 日
A for loop makes things easier and clearer, but see my new answer for a method without a for loop.
Walter Roberson
2012 年 2 月 28 日
Let H, w, and t all be row vectors, and H and w must have the same number of elements but t can be different. Then you want
S = sum(bsxfun(@times,H(:),sin(bsxfun(@times,w(:),t))));
4 件のコメント
Stephen
2012 年 2 月 29 日
Stephen
2012 年 2 月 29 日
Walter Roberson
2012 年 2 月 29 日
Hmmm, I did test before I posted. Are you sure your t is a *row* vector?
Stephen
2012 年 2 月 29 日
カテゴリ
ヘルプ センター および File Exchange で MATLAB Coder についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!