Ich schreibe eine Funktion, um ein Fraktalbild in einem Diagramm zu erstellen. Wenn ich meinen Code starte, erscheint ein Plot, aber es ist leer. Ich denke, dass die Probleme irgendwo in meinen if/elsif-Aussagen liegen, aber es fällt mir schwer, sie zu finden. Mein Code ist:Erstellen von Fraktalbild in einem Diagramm MATLAB, aber das Diagramm ist leer
function [] = fractal(x, y, N)
close all
start = [x, y];
X = zeros(N+1,1);
Y = zeros(N+1,1);
X = start;
hold on
for i = 1:N
prob = rand;
if prob >= 0.01
X(i+1,:) = 0;
Y(i+1,:) = 0.16*y(1);
elseif prob == 0.02:0.86
X(i+1,:) = (0.85*x(i))-(0.04*y(i));
Y(i+1,:) = (-0.04*x(i))+(0.85*y(i))+1.6;
elseif prob == 0.87:0.94
X(i+1,:) = (0.2*x(i))-(0.26*y(i));
Y(i+1,:) = (0.23*x(i))+(0.22*y(i))+1.6;
elseif prob == 0.95:1.0
X(i+1,:) = (-0.15*x(i))+(0.28*y(i));
Y(i+1,:) = (0.26*x(i))+(0.24*y(i))+0.44;
plot(X(i,:),Y(i,:),'.','Markersize',1)
axis equal
end
end
end
Wenn ich meinen Code ausführen mit
>> fractal(1,1,1000)
... ein Grundstück kommt, aber es ist leer.
Warum überprüfen Sie doppelt nach 'prob'? Wenn der Code die Zeile erreicht, sagen wir, 'elseif (prob> 0.86 ...' ist es sicher, dass 'prob> 0.86', weil die 'elseif' Anweisung oben ausgewertet und zur nächsten Iteration rückgeführt werden würde. Ich würde verwenden 'if prob <0,01' und' elseif prob <0,86' Aussagen –
Crowley
@Crowley Das stimmt, aber ich möchte explizit sein – rayryeng
X kann auch definiert werden durch: 'X = [x; Nullen (N, 1)]; ' – Crowley