I am trying to create a sinusoidal model to simulate the sea as a fixed surface, but I'm not sure how to adapt a simple sinusoidal model so that the wave height and frequency varies within a range (more like the sea). I would change the range for varying sea states, but just need to see how to create a varying amplitude and frequency within a secified range.

5 件のコメント

darova
darova 2020 年 4 月 13 日
Can you show something? Picture?
Reuben Salisbury
Reuben Salisbury 2020 年 4 月 13 日
t=0:0.1:20
X0= input('Wave amplitude ')
w=input('Wave Frequency ')
y=X0sin(wt) %simple sinusoidal wave with no variation
This is just a standard wave with no variation, but I want a random array of amplitudes between set values.
darova
darova 2020 年 4 月 13 日
Can you make a sketch? I don't understand
Reuben Salisbury
Reuben Salisbury 2020 年 4 月 13 日
I am trying to make the value of X0 vary so that the maximum amplitude is not always constant
darova
darova 2020 年 4 月 13 日
try this madness
x = 0:0.01:10;
y = sin(20*x).*sin(x);
plot(x,y)

サインインしてコメントする。

 採用された回答

Ameer Hamza
Ameer Hamza 2020 年 4 月 13 日
編集済み: Ameer Hamza 2020 年 4 月 13 日

0 投票

Try something like this
t = linspace(-10,10,100);
[X,Y] = meshgrid(t);
f = (sin(X+Y)/2+0.5)*0.3+0.3; % frequency change between 0.3 to 0.6
A = (cos(X.*Y/3.5)/2+0.5)*0.3 + 0.7; % amplitude change between 0.7 to 1.0
Z = A.*sin(f.*X).*sin(f.*Y);
surf(X,Y,Z)
It have both variable frequency and amplitude between a specified range.

7 件のコメント

Reuben Salisbury
Reuben Salisbury 2020 年 4 月 14 日
is there a way to make it so that the amplitude and frequency are randomly varying in 2 dimensions only? or otherwise a way that i can simulate a boat travelling over the surface you have shown?
Ameer Hamza
Ameer Hamza 2020 年 4 月 14 日
By two dimensions, do you want to have one just independent and one dependent variable?
Reuben Salisbury
Reuben Salisbury 2020 年 4 月 14 日
yes exactly, just a sinusoidal function in two dimensions with a varying amplitude and frequency
Ameer Hamza
Ameer Hamza 2020 年 4 月 14 日
編集済み: Ameer Hamza 2020 年 4 月 14 日
try this
Ts = 0.01;
x = -100:Ts:100;
fd = (sin(x)/2+0.5)*0.4+0; % frequency change between 0 to 0.4
fx = cumsum(fd)*Ts;
A = (cos(x/3.5)/2+0.5)*0.7 + 0.3; % amplitude change between 0.3 to 1.0
z = A.*sin(fx);
plot(x,z)
Reuben Salisbury
Reuben Salisbury 2020 年 4 月 14 日
編集済み: Reuben Salisbury 2020 年 4 月 14 日
That's Great, thank you so much for all of your help.
What figures need to be changed to vary the range of frequencies/ampltudes?
Ameer Hamza
Ameer Hamza 2020 年 4 月 14 日
In this equation
fd = (sin(x)/2+0.5)*0.4+0; % frequency change between 0 to 0.4
0 at the end is the lower range of the frequency and 0.4 is the change in frequency. So
fd = (sin(x)/2+0.5)*1.0+0.5;
will have frequency in range [0.5, 1.5].
Similar parameters are defined for amplitude.
Reuben Salisbury
Reuben Salisbury 2020 年 4 月 14 日
Great, thanks again.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Community Treasure Hunt

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

Start Hunting!

Translated by