Ich versuche eine stückweise Funktion (der Form y = αx + β) auf einer einzigen Zeichnung zu plotten, so dass für verschiedene Bereiche auf der x-Achse, Ich habe verschiedene Werte von α und β für die Funktion.Zeichnen von "sägezahnartigen" Funktionen auf MATLAB
Ich möchte die Positionen (auf der X-Achse) dieser Schritte nach Belieben modifizierbar machen, anstatt eine vorbestimmte Anzahl solcher Teilfunktionen zu haben. Wenn es geplottet wird, sollte es idealerweise wie eine Reihe von Linien mit verschiedenen Steigungen und Abschnitten aussehen, die jeweils durch einen Abstand voneinander getrennt sind. Wenn also mein Abstandsvektor 10 Elemente hat, habe ich meinen Code so geschrieben, dass ich entsprechend 10 verschiedene Teilfunktionen für verschiedene Regionen auf der X-Achse haben werde.
Hier ist der Code, den ich geschrieben habe.
x = linspace(0,100,10000);
y = zeros(1,10000);
spacing = 0:10:100;
alpha = linspace(1,3,length(spacing)); %setting arbitrary upper lim
beta = linspace(1,5,length(spacing));
for j = 1:length(spacing)
for i=1:10000
if x(i) <= spacing(j)
y(i) = alpha(j)*x(i) + beta(j);
i = i + 1;
else
j = j + 1;
end
end
end
plot(x,y)
Wenn ich dies jedoch plotte, bekomme ich eine einzige Steigung. Es scheint nicht, eine Änderung des Abstands (j) aufgrund des j = j + 1 Iterator in der else-Anweisung
Irgendwelche Vorschläge oder helfen zu erkennen, wie ich Ansatz sollte so viel sein würde, geschätzt!
Dank zu beginnen, die Sinn macht. Ich bin auch neugierig, ob es möglich ist, die linearen Plots von y = 0 zu starten, anstatt an der Stelle zu beginnen, an der die vorherige Stückfunktion unterbrochen wurde. Ich dachte daran, den 'i' Wert auf 1 in der Schleife zurückzusetzen, sobald y (i) aktualisiert wurde, aber das würde nicht mit dem Problem umgehen, wie die x-Achse immer noch wie üblich 0-100 lesen kann. – Ferreroire
Sie können Ylim ([0 max (y)]) am Ende des Codes hinzufügen. Allgemeiner beschränkt ylim ([a b]) die Darstellung für a <= y <= b. Siehe die aktualisierte Antwort. –