Asked by Lee
Thanks MathMate. Print plotting sounds awful O_O. What you suggested was correct and this code worked
disp('Problem 13.9')
x=[-2*pi:.00001*pi:2*pi];
a=0;
y=sin(x-a);
g=plot(x,y);
title(sprintf('sin(x-%.2f)\n',a))
grid on;
set(g,'EraseMode','xor')
while a<=8*pi
a=a+.1*pi;
y=sin(x-a);
plot(x,y)
title(fprintf('sin(x-%.2f)\n',a))
grid on;
drawnow
end
I have another question though that I seem to be struggling with.
Create an animation of the following:
Let x vary form -2pi to +2pi
Let y=sin(x)
Let z=sin(x-a)cos(y-a)
Let a be the animation variable.
Remember that you'll need to mesh x and y to create two-dimensional matrices; use the resulting arrays to find z.
Here's my attempt at a solution.
x=-2*pi:pi/50:2*pi;
y=sin(x);
[X,Y]=meshgrid(x,y);
z=sin(X)*cos(Y);
h=surf(z);
axis tight
set(gca,'nextplot','replacechildren');
shading interp
colormap(jet)
for a=0:pi/100:8*pi
z=sin(X-a)*cos(Y-a);
set(h,'zdata',z);
drawnow
end
When I try to run it the axes are colored for like a tenth of a second and then it just turns to white. I don't know exactly what I'm doing wrong.
disp('Problem 13.9')
x=[-2*pi:.00001*pi:2*pi];
a=0;
y=sin(x-a);
g=plot(x,y);
title(sprintf('sin(x-%.2f)\n',a))
grid on;
set(g,'EraseMode','xor')
while a<=8*pi
a=a+.1*pi;
y=sin(x-a);
plot(x,y)
title(fprintf('sin(x-%.2f)\n',a))
grid on;
drawnow
end
I have another question though that I seem to be struggling with.
Create an animation of the following:
Let x vary form -2pi to +2pi
Let y=sin(x)
Let z=sin(x-a)cos(y-a)
Let a be the animation variable.
Remember that you'll need to mesh x and y to create two-dimensional matrices; use the resulting arrays to find z.
Here's my attempt at a solution.
x=-2*pi:pi/50:2*pi;
y=sin(x);
[X,Y]=meshgrid(x,y);
z=sin(X)*cos(Y);
h=surf(z);
axis tight
set(gca,'nextplot','replacechildren');
shading interp
colormap(jet)
for a=0:pi/100:8*pi
z=sin(X-a)*cos(Y-a);
set(h,'zdata',z);
drawnow
end
When I try to run it the axes are colored for like a tenth of a second and then it just turns to white. I don't know exactly what I'm doing wrong.
Answers
Answered by
MathMate
I had a quick look at the code, and I suggest the following changes (just a guess).
I believe the code has worked as expected, but the duration of the animation is only about 1/10th of a second.
To test the hypothesis, change
for a=0:pi/100:8*pi
to
for a=0:pi/1000:8*pi
to make 10 times more frames. If it stays for about a second, then it is the problem.
The other "problem" that it stays white at the end is probably the endpoint (8π) puts everything to zero, so it is/may be coloured white.
Try changing the endpoint to, say
8.5π or 8.25π and see if it makes a difference.
Let me know how it goes.
I believe the code has worked as expected, but the duration of the animation is only about 1/10th of a second.
To test the hypothesis, change
for a=0:pi/100:8*pi
to
for a=0:pi/1000:8*pi
to make 10 times more frames. If it stays for about a second, then it is the problem.
The other "problem" that it stays white at the end is probably the endpoint (8π) puts everything to zero, so it is/may be coloured white.
Try changing the endpoint to, say
8.5π or 8.25π and see if it makes a difference.
Let me know how it goes.
Answered by
Lee
I tried both and both results leave me with the same result, It just flashes real quick and then turns white... I even tried a=0:pi/1000000000:8*pi, it stays for a little bit longer but then turns white....
I think it's an issue with something else... what I'm not exactly sure as it's strange that something does appear but then quickly disappears...
I think it's an issue with something else... what I'm not exactly sure as it's strange that something does appear but then quickly disappears...
Answered by
MathMate
A couple of things you could try:
1. put
refreshdata
before "drawnow".
Hopefully this will update every frame of the image.
2. put a finer grid, such as
x=-2*pi:pi/500:2*pi;
instead of 50.
Sorry that I cannot be more definite because I don't have access to Matlab, especially the plotting part.
1. put
refreshdata
before "drawnow".
Hopefully this will update every frame of the image.
2. put a finer grid, such as
x=-2*pi:pi/500:2*pi;
instead of 50.
Sorry that I cannot be more definite because I don't have access to Matlab, especially the plotting part.
Answered by
Lee
Same thing. I wounder if I'm suppose to be using the surfz function and not some other 3 dimensional plotting function?
Answered by
Lee
got it
<_< forgot the dot and got rid of the axis tight
disp('Problem 13.11')
x=-2*pi:pi/50:2*pi;
y=sin(x);
[X,Y]=meshgrid(x,y);
z=sin(X)*cos(Y);
h=surf(z);
set(gca,'nextplot','replacechildren');
shading interp
colormap(jet)
for a=0:pi/100:8.25*pi
z=sin(X-a).*cos(Y-a);
set(h,'zdata',z);
drawnow
end
<_< forgot the dot and got rid of the axis tight
disp('Problem 13.11')
x=-2*pi:pi/50:2*pi;
y=sin(x);
[X,Y]=meshgrid(x,y);
z=sin(X)*cos(Y);
h=surf(z);
set(gca,'nextplot','replacechildren');
shading interp
colormap(jet)
for a=0:pi/100:8.25*pi
z=sin(X-a).*cos(Y-a);
set(h,'zdata',z);
drawnow
end
Answered by
MathMate
Great! I missed that too (the dot).
There are no AI answers yet. The ability to request AI answers is coming soon!
Submit Your Answer
We prioritize human answers over AI answers.
If you are human, and you can answer this question, please submit your answer.