我一直试图通过传统的逃逸速度法将朱莉娅设定为图像,然后在同一条曲线上绘制一个点,看看它们如何变为无穷大,从而看到朱莉娅中的一个点的轨迹。 0或跳舞。
现在的问题是,当我将julia设置为图像时,轴会变为0到300而我的复数是-1 + -1i到1 + 1i所以当我绘制我不能看到它们时我想要的方式。
作为一个整体,我希望当我绘制一个图形时,我可以提取该图形并将其粘贴到新轴上,然后可以在其上绘制新数据。
我想以某种方式将轴更改为新轴,同时保持图形不会发生任何变化..
这是matlab代码,我一直在搞乱..
figure;
hold on;
N =100
zMax = 1;
c = 0; %= 0.285+0.01i;
% julia
MAT=300;
mat=linspace(-zMax,zMax,MAT);
[MATx,MATy]=meshgrid(mat,mat);
Z=zeros(MAT,MAT);
M=zeros(MAT,MAT);
Z=MATx+i*MATy;
for k=1:MAT
for j=1:MAT
M(k,j)=escapeVelocity(Z(k,j),c,N);
end
end
imagesc(atan(0.1*M));
axis xy;
xlabel('Re(z)'); ylabel('Im(z)');
colorbar;
%Now the main probelm exist. Whenever I try to plot Z it plots according to
%previous image axis which is from 0 to 300.
Z0 = 0 + 1i;
Z=Z0;
for n= 1:N
plot ((Z,'*','LineWidth',4);
Z = Z^2 + c;
pause
end
答案 0 :(得分:1)
哦,我想我明白了。你的意思是这样的:
figure;
N =100
zMax = 1;
c = 0; %= 0.285+0.01i;
% julia
MAT=300;
mat=linspace(-zMax,zMax,MAT);
[MATx,MATy]=meshgrid(mat,mat);
Z=zeros(MAT,MAT);
M=zeros(MAT,MAT);
Z=MATx+i*MATy;
for k=1:MAT
for j=1:MAT
M(k,j)=escapeVelocity(Z(k,j),c,N);
end
end
a1 = axes;
imagesc(atan(0.1*M));
axis xy;
xlabel('Re(z)'); ylabel('Im(z)');
colorbar;
% get first axes on screen and settled
drawnow;
% create a 2nd axes on top of it
a2=axes('Position',get(a1,'Position'),'Visible','off');
hold on
Z0 = 0 + 1i;
Z=Z0;
h = plot(Z,'*','LineWidth',4,'Parent',a2);
for n= 1:N
Z = Z^2 + c;
set(h,'XData',real(Z),'YData',imag(Z));
pause
end
基本思想是创建一个位于同一位置的第二个轴(位置属性),但没有任何装饰(Visible ='off'),然后绘制到第二个轴。你需要那个画面,因为颜色条会抖动第一个轴的位置。您想要绘制它以确保在将位置复制到第二个轴之前确定位置。
这是你的意思吗?
答案 1 :(得分:0)
plot命令清除轴,创建一个线对象,并返回该对象的句柄。做你想做的最简单,最有效的方法就是简单地重用它创建的对象。这看起来像这样:
for n = 1:N
if n==1
h=plot(Z,'*','LineWidth',4);
else
set(h,'XData',real(Z),'YData',imag(Z));
end
Z = Z^2 + c;
pause;
end