How can I illustrate a sinusoidal plane wave in MATLAB?

24 次查看(过去 30 天)
Wikipedia's article Sinusoidal plane wave - Wikipedia shows the below image:
I am able to plot the red sine wave and the the blue lines (without the arrows) but I am unable to plot the planar vector fields.
How can I replicate the above image in a MATLAB figure?

采纳的回答

Aravind Varma Dantuluri
Thanks to Hassaan answer, I got to know about quiver function and used the below code to get the required image
mArrow3([0 0 0],[10 0 0],'color','red','stemWidth',0.05);
mArrow3([0 0 0],[0 10 0],'color','red','stemWidth',0.05);
mArrow3([0 0 0],[0 0 10],'color','red','stemWidth',0.05);
view(32, 32);
x = 0:0.1:10;
sine_wave = 5*sin(x);
hold on;plot3(x,zeros(length(x),1),sine_wave,'b');
vector_3d_x = 0:1:10;
vector_3d_y = 0:1:10;
vector_3d_z = 0:1:10;
[X,Y,Z] = meshgrid(vector_3d_x,vector_3d_y,vector_3d_z);
U = zeros(size(X));
V = zeros(size(Y));
W = sin(X);
hold on;quiver3(X, Y, Z, U, V, W, 'k');

更多回答(1 个)

Hassaan
Hassaan 2024-4-17
编辑:Hassaan 2024-4-17
% Define the domain
x = linspace(-2*pi, 2*pi, 100);
z = linspace(-2, 2, 20);
[X, Z] = meshgrid(x, z);
% Define the wave
y = sin(X);
% Create a new figure
figure;
% Plot the sinusoidal wave
surf(X, y, Z, 'FaceColor', 'red', 'EdgeColor', 'none');
alpha 0.5; % Making the surface semi-transparent
hold on;
% Plot the lines (without arrows)
for i = 1:size(Z, 1)
plot3(X(i, :), y(i, :), Z(i, :), 'b');
end
% Now let's add the planar vector fields using quiver3
[U, V, W] = deal(zeros(size(X))); % Preallocate U, V, W for quiver3
V = ones(size(X)); % Vectors point in the positive y-direction
% Create a grid in the y-direction for the vectors
Y = -2:0.5:2;
% Plot the vectors on each plane
for i = 1:length(Y)
quiver3(X, Y(i)*ones(size(X)), Z, U, V, W, 'k', 'MaxHeadSize', 0.005);
end
% Set the view angle
view(30, 45);
% Labels and title
xlabel('X-axis');
ylabel('Y-axis');
zlabel('Z-axis');
title('Sinusoidal Plane Wave with Planar Vector Fields');
% Remove the ticks
set(gca, 'XTick', [], 'YTick', [], 'ZTick', []);
% Remove the box around the plot
box off;
% Keep the axis aspect ratio normal
axis normal;
hold off;
-----------------------------------------------------------------------------------------------------------------------------------------------------
If you find the solution helpful and it resolves your issue, it would be greatly appreciated if you could accept the answer. Also, leaving an upvote and a comment are also wonderful ways to provide feedback.
It's important to note that the advice and code are based on limited information and meant for educational purposes. Users should verify and adapt the code to their specific needs, ensuring compatibility and adherence to ethical standards.
Professional Interests
  • Technical Services and Consulting
  • Embedded Systems | Firmware Developement | Simulations
  • Electrical and Electronics Engineering
Feel free to contact me.
  1 个评论
Aravind Varma Dantuluri
Thank you for the answer
But the vector field does not vary with the amplitude of sine wave as it is being done in the image in question?

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 2-D and 3-D Plots 的更多信息

产品


版本

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by