I'm a new user of MATLAB and I already met some difficulties with my MATLAB program. It consists in plot Brownian and Bachelier cartoon exactly as you can see following this link.
Such function is similar to Bolzano's function. Can someone give me some advice concerning how to generate the new points?

2 Comments

Andrew Newell
Andrew Newell on 14 Apr 2011
What have you tried and what difficulties have you had?
Samuel
Samuel on 25 Apr 2011
Edited: Walter Roberson on 9 Mar 2024
I tried something obtaining a partial result. So far my code is the following
function [x,y]=cartoon(n)
H=1/2; %Hurst's exponent
if nargin ~= 1
n = 4;
end
% end of recursion
if n <= 0
x = [0 1];
y = [0 1];
% recursive method call
else
[x0,y0] = cartoon(n-1);
% calculate new co-ordinates
x = (4/9)*[x0 x0+5/4];
y = 2/3*[y0 y0+H];
end
plot(x,y,'-');
hold off;
end
The code start to divide the straight and rise line in 3 unlike parts creating a generator with a central interval [4/9,5/9] and so on. But the code is not complete because it doesn't apply the generator in the central intervals (like [4/9,5/9] and the others that step by step are generated). How can I settle my code so that I get the intentional result?

Sign in to comment.

 Accepted Answer

Andrew Newell
Andrew Newell on 25 Apr 2011
The key point you are missing is that you need to feed in the coordinates of the endpoints as well as n. That will allow you to recursively call cartoon for each subinterval. Here is a code that will do what you want:
function [x,y]=cartoon(x,y,n,H)
if nargin < 3
n = 4;
end
if nargin < 4
H = 1/2; % Hurst's exponent
end
% If n <=0, x and y are equal to the input.
if n > 0
% Create the first division.
x = x(1) + (x(2)-x(1))*[0 4/9 5/9 1];
y = y(1) + (y(2)-y(1))*[0 2/3 2/3*H 1];
% Subdivide each interval recursively.
[x1,y1] = cartoon(x(1:2),y(1:2),n-1,H);
[x2,y2] = cartoon(x(2:3),y(2:3),n-1,H);
[x3,y3] = cartoon(x(3:4),y(3:4),n-1,H);
% The vectors x1,x2,x3 overlap at their endpoints.
x = [x1 x2(2:end) x3(2:end)];
y = [y1 y2(2:end) y3(2:end)];
end
Note that I have also removed the plot command from inside the function. You can now recreate the left plot using a loop like this:
for i=1:4
subplot(4,1,i)
[x,y] = cartoon([0 1],[0 1],i,1/2);
plot(x,y)
end
For the right hand plots, you'll need to run cartoon on each of the two line segments and piece the results together.

2 Comments

Samuel
Samuel on 25 Apr 2011
Perfect! Thank you so much!
Shin Kelly
Shin Kelly on 30 Dec 2012
wow.. this is fabulous work,,,
hello I'm highschool student studying fractal and trying to observe(?) it in animals' organ..
Can you give me some advice for generalizing the photo(of organ) and caculate the fractal dimension? Please,,

Sign in to comment.

More Answers (0)

Categories

Find more on Fractals in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!