Как я могу изменить ось (пределы), сохраняя фигуру там, чтобы я мог построить некоторые другие данные на этой фигуре для анализа? - PullRequest
0 голосов
/ 27 июня 2011

Я пытался увидеть траекторию точки, заданной в джулии, сначала нанеся на карту джулию, заданную как изображение, с помощью традиционного метода скорости убегания, а затем построив точку на той же кривой, чтобы увидеть, как они уходят в бесконечность,0 или танцевать вокруг.

Теперь проблема в том, что, когда я строю график джулии, установленной как изображение, ось поворачивается к 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

Ответы [ 2 ]

1 голос
/ 28 июня 2011

О, я думаю, я вижу.Вы имеете в виду что-то вроде этого:

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

Основная идея состоит в том, чтобы создать вторую ось, которая находится в том же месте (свойство Position), но не имеет никаких декораций (Visible = 'off'),а затем втянуть в этот второй.Вам нужен этот отвод, потому что цветовая шкала будет изменять положение первых осей.Вы хотите нарисовать его, чтобы убедиться, что позиция установлена, прежде чем копировать его для вторых осей.

Это то, что вы имели в виду?

0 голосов
/ 27 июня 2011

Команда 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...