如何绘制黑白彩色图片曼德尔布罗图
How to plot black and white color picture mandelbrot plot
以下代码摘自here。
我正在尝试对下面的代码进行以下更改
If c is not part of the set, plot a white
pixel, and if it is part of the set, plot a black pixel.
Use the imshow command to plot your image
% Parameters:
% Input, integer M, the number of pixels in the X direction.
% Input, integer N, the number of pixels in the Y direction.
% Input, integer COUNT_MAX, the number of iterations. While 10 or
% 20 is a reasonable value, increasing COUNT_MAX gives a sharper image.
%
m=601;
n=401;
count_max = 200;
%Change the range of x's and y's here
x_max = 1;
x_min = - 2;
y_max = 1;
y_min = - 1;
% Create an array of complex sample points in [x_min,x_max] + [y_min,y_max]*i.
%
I = ( 1 : m );
J = ( 1 : n );
X = ( ( I - 1 ) * x_max + ( m - I ) * x_min ) / ( m - 1 );
Y = ( ( J - 1 ) * y_max + ( n - J ) * y_min ) / ( n - 1 );
[ Zr, Zi ] = meshgrid ( X, Y );
C = complex ( Zr, Zi );
%
% Carry out the iteration.
%
epsilon = 0.001;
Z = C;
ieps = 1 : numel ( C );
%Iterate through 1 to maximum no. of iterations
for i = 1 : count_max
Z(ieps) = Z(ieps) .* Z(ieps) + C(ieps);
W(ieps) = exp ( - abs ( Z(ieps) ) );
ieps = ieps ( find ( epsilon < W(ieps) ) );
end
%
% Display the data.
%
d = log ( abs ( Z ) );
t = delaunay ( Zr, Zi );
%
% To see individual pixels, use 'flat' color.
%
h = trisurf ( t, Zr, Zi, d, 'FaceColor', 'flat', 'EdgeColor', 'flat' );
%
% h = trisurf ( t, Zr, Zi, d, 'FaceColor', 'interp', 'EdgeColor', 'interp' );
view ( 2 )
axis equal
axis on
title_string = sprintf ( 'Mandelbrot set, %d x %d pixels, %d iterations', ...
m, n, count_max );
title ( title_string )
xlabel ('Real Axis');
ylabel ('Imaginary Axis');
% Terminate.
对于第一点,我不知道该怎么做。
为了完成第二点:
当我更换
view(2)
到 imshow(2)
我看不到图片,只有标题和标签
如果我改变:
view(2)
到 imshow()
我得到一个 3D 图。
nargin
只是报告传递给函数的输入参数的数量。您可以使用一系列 if
语句来检查用户通过了哪些输入(如果有),并为他们没有通过的输入设置默认值。
看起来你把它变成了脚本而不是函数,并在顶部硬编码了 m
、n
和 count_max
的值。在这种情况下,nargin
语句无关紧要。但是,我会将其 back 更改为函数。
function mandelbrot ( m, n, count_max )
%// If no input were provided use m = 101
if ( nargin == 0 )
m = 101;
end
%// If the second input wasn't provided, set it equal to m
if ( nargin <= 1 )
n = m;
end
%// If the third input wasn't provided, set count_max = 20
if ( nargin <= 2 )
count_max = 20;
end
%// Other stuff here
end
然后你可以用你想要的参数调用它
mandelbrot(601, 401, 200)
以下代码摘自here。
我正在尝试对下面的代码进行以下更改
If c is not part of the set, plot a white pixel, and if it is part of the set, plot a black pixel.
Use the imshow command to plot your image
% Parameters:
% Input, integer M, the number of pixels in the X direction.
% Input, integer N, the number of pixels in the Y direction.
% Input, integer COUNT_MAX, the number of iterations. While 10 or
% 20 is a reasonable value, increasing COUNT_MAX gives a sharper image.
%
m=601;
n=401;
count_max = 200;
%Change the range of x's and y's here
x_max = 1;
x_min = - 2;
y_max = 1;
y_min = - 1;
% Create an array of complex sample points in [x_min,x_max] + [y_min,y_max]*i.
%
I = ( 1 : m );
J = ( 1 : n );
X = ( ( I - 1 ) * x_max + ( m - I ) * x_min ) / ( m - 1 );
Y = ( ( J - 1 ) * y_max + ( n - J ) * y_min ) / ( n - 1 );
[ Zr, Zi ] = meshgrid ( X, Y );
C = complex ( Zr, Zi );
%
% Carry out the iteration.
%
epsilon = 0.001;
Z = C;
ieps = 1 : numel ( C );
%Iterate through 1 to maximum no. of iterations
for i = 1 : count_max
Z(ieps) = Z(ieps) .* Z(ieps) + C(ieps);
W(ieps) = exp ( - abs ( Z(ieps) ) );
ieps = ieps ( find ( epsilon < W(ieps) ) );
end
%
% Display the data.
%
d = log ( abs ( Z ) );
t = delaunay ( Zr, Zi );
%
% To see individual pixels, use 'flat' color.
%
h = trisurf ( t, Zr, Zi, d, 'FaceColor', 'flat', 'EdgeColor', 'flat' );
%
% h = trisurf ( t, Zr, Zi, d, 'FaceColor', 'interp', 'EdgeColor', 'interp' );
view ( 2 )
axis equal
axis on
title_string = sprintf ( 'Mandelbrot set, %d x %d pixels, %d iterations', ...
m, n, count_max );
title ( title_string )
xlabel ('Real Axis');
ylabel ('Imaginary Axis');
% Terminate.
对于第一点,我不知道该怎么做。
为了完成第二点: 当我更换
view(2)
到 imshow(2)
我看不到图片,只有标题和标签
如果我改变:
view(2)
到 imshow()
我得到一个 3D 图。
nargin
只是报告传递给函数的输入参数的数量。您可以使用一系列 if
语句来检查用户通过了哪些输入(如果有),并为他们没有通过的输入设置默认值。
看起来你把它变成了脚本而不是函数,并在顶部硬编码了 m
、n
和 count_max
的值。在这种情况下,nargin
语句无关紧要。但是,我会将其 back 更改为函数。
function mandelbrot ( m, n, count_max )
%// If no input were provided use m = 101
if ( nargin == 0 )
m = 101;
end
%// If the second input wasn't provided, set it equal to m
if ( nargin <= 1 )
n = m;
end
%// If the third input wasn't provided, set count_max = 20
if ( nargin <= 2 )
count_max = 20;
end
%// Other stuff here
end
然后你可以用你想要的参数调用它
mandelbrot(601, 401, 200)