How can i get continuous plots with a video pause?
9 views (last 30 days)
Show older comments
Here is my initial script that works perfectly for my probem:
clear all
clc
xs=8;
v=3;
L=20;
ta=0.2;
t=1; %
n=1:1:40;
x=0:0.1:20;
omga = zeros(1,length(n)) ;
F = zeros(1,length(n)) ;
u = zeros(length(n),length(x)) ;
for j=1:length(n)
F(j)=exp(-((n(j)*pi*v*ta/L).^2)/4);
u(j,:)=sin(n(j)*pi*xs/L)*F(j)*sin(n(j)*pi*x/L)*cos(n(j)*pi*v/L*t(k)); % no loop needed
end
us = sum(u) ;
plot(x,us)
xlabel ('distance')
ylabel('Displacement')
Now I want to make 3 plots for different values of t. BUt it shows only one plot: how can i modify my script to get all the three plots in a short video.
clear all
clc
xs=8;
v=3;
L=20;
ta=0.2;
t=1:1:3; % this line is changed
n=1:1:40;
x=0:0.1:20;
omga = zeros(1,length(n)) ;
F = zeros(1,length(n)) ;
u = zeros(length(n),length(x)) ;
for j=1:length(n)
F(j)=exp(-((n(j)*pi*v*ta/L).^2)/4);
for k=1:length(t) % additional for loop
u(j,:)=sin(n(j)*pi*xs/L)*F(j)*sin(n(j)*pi*x/L)*cos(n(j)*pi*v/L*t(k)); % no loop needed
end
end
us = sum(u) ;
plot(x,us)
xlabel ('distance')
ylabel('Displacement')
0 Comments
Answers (1)
Vaibhav
on 5 Oct 2023
Edited: Vaibhav
on 5 Oct 2023
Hi Andi
I understand that you would like to have 3 plots in a short video.
One possible solution is to make use of the "drawnow" and "pause" functionalities. The "drawnow" command ensures immediate updating and display of the plot, while the "pause(x)" command introduces a short delay of 'x' seconds between each plot, creating a video effect. Adjust the duration according to the requirements.
Below is a code snippet demonstrating the application of "drawnow" and "pause" for generating three plots in a single video.
clear all
clc
% Define parameters
xs = 8;
v = 3;
L = 20;
ta = 0.2;
t = 1:1:3;
n = 1:1:40;
x = 0:0.1:20;
% Initialize omega, F, and displacement array
omga = zeros(1, length(n));
F = zeros(1, length(n));
u = zeros(length(n), length(x));
figure % Create a new figure for the plots
% Loop over each time value
for k = 1:length(t)
% Loop over each term in the series
for j = 1:length(n)
% Calculate F value for each term
F(j) = exp(-((n(j) * pi * v * ta / L) ^ 2) / 4);
% Calculate displacement u for each term and distance value
u(j, :) = sin(n(j) * pi * xs / L) * F(j) * sin(n(j) * pi * x / L) * cos(n(j) * pi * v / L * t(k));
end
us = sum(u); % Sum up displacements for each term to get total displacement
% Plot the displacement
plot(x, us)
xlabel('distance')
ylabel('Displacement')
title(['t = ', num2str(t(k))])
drawnow % Force the plot to update and display
pause(0.5) % Pause for a short duration to create a video effect
end
You can refer to below documentation to know more about "drawnow" feature:
You can refer to below documentation to know more about “pause” feature:
Hope this helps!
Regards,
Vaibhav
0 Comments
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!