Plotting damped sine travelling wave equation in Matlab
17 views (last 30 days)
Show older comments
Greetings all,
Please correct me if I am wrong on any of this, but I am trying to plot a damped/attenuating sine wave of the form y(x,t)=Ae^-alpha(x) * sin(wt-Bx + phi).
Granted the sin is not in the exponential, I've been trying to code this up knowing that travelling waves have spatial as well as temporal dimensions.
The code I have after user input is:
x=0:.001:1;
Beta = 2*pi/lambda; %(lambda is user input)
y1=zeros(100,100);
for t=0:.001:1
y1(t,:)=A*sin(Beta*x-w*t + phi).exp(-alpha*x)
end
%A, alpha, w, and phi are user input as well
So I'm getting a "Subscript indices must be either real positive integers or logicals." Where am I going wrong?
Also, I am trying to plot this damped wave - do I need to use plot3? If so, why?
Thanks!
-J
1 Comment
Prasad Reddy
on 24 Apr 2020
y1(t,:)=A*sinBeta.*x-w*t+phi).*exp(-alpha.*x)
please check the above equation. it may work.
you need not to use plot3 command.
Accepted Answer
KSSV
on 24 Apr 2020
Edited: KSSV
on 24 Apr 2020
You index t, is taking zero for the first time. Indices cannot be negative and zero in MATLAB. You need not to use loop, you can follow as below.
clc; clear al ;
A = rand ;
lambda = rand ;
w = rand ;
phi = rand ;
alpha = rand ;
x=0:.001:1;
Beta = 2*pi/lambda; %(lambda is user input)
t=0:.001:1 ;
[X,T] = meshgrid(x,t) ;
Y1 = A*sin(Beta*X-w*T + phi).*exp(-alpha*X) ;
surf(X,T,Y1)
0 Comments
More Answers (2)
Deepak Gupta
on 24 Apr 2020
Your y1 seems to be function of two variables x and t so yes, you will need to use plot3 at it will plot y1 against two variables.
You can try below code to find value of y1:
x=0:.001:1;
t =(0:.001:1)';
Beta = 2*pi/lambda; %(lambda is user input)
y1=zeros(1001,1001); % y1 should have same dimention as x*t matrix.
y1=A*sin(Beta*x-w*t + phi).*exp(-alpha*x)
plot3(t, x, y1)
0 Comments
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!