Ich muss für die Uni eine Aufgabe bearbeiten. Es geht darum ein Windrad zu erstellen. Es soll dabei zunächst 9 Rotorblätter und später dann 50 Stück haben, was über eine For-Schleife realisiert werden soll. Leider wird bei mir die Schleife immer nur einmal durchlaufen und ich finde den Fehler einfach nicht. Wäre super wenn mir hier jemand helfen könnte.
0:40:9 ist effektiv 0.
Von 0 aus wird in Schrittweite 40 losgegangen, die 40 wird aber schon beim ersten Schritt überschritten. Es bleibt also bei der 0.
Ich dachte 0:40:9 bedeutet, dass mein erstes n, n=0 ist. Das zweite dann n=40, das dritte 80, ... und das insgesamt 9 Schritte durchgeführt werden. Ich am Ende also bei 360 bin. Wie müsste es denn richtig heißen?
Leider läuft es immer noch nicht. Ich bekomme in der Schleife bei i=... und j=.... die Fehlermeldung: "Matrix dimension must agree". Ich habe es auch mit ".*" probiert, dass hilft jedoch auch nicht.
dann schau dir doch mal die Variablen an, die an der Multiplikation beteiligt sind. f und g haben je drei Elemente, die Länge von h ändert sich in jeder Iteration.
Sinnvoller wäre wohl:
Im übrigen ist es gut, dass du den Code dokumentierst. Schön wäre jetzt noch, sinnvolle Variablennamen zu wählen. Das Alphabet abzuklappern halte ich jedenfalls keine gute Idee.
Im übrigen würde ich ein paar Strichpunkte empfehlen, um nicht das Command Window zuzuspammen.
Super danke Harald. Da war ich ja gar nicht so weit weg von der richtigen Lösung Bei meinem nächsten Projekt werde ich auf eine sinnvollere Zuweisung der Variablen Achten. Danke dafür!
a = [6.5, 7.5, 7]% Turm x-Werte
b = [0, 0, 10]% Turm y-Werte patch(a,b, 'b')% Turm zeichnen
rad = 2% Nabenradius
c = linspace(0,2*pi); % Nabe Kreisumfang
d = rad*cos(c)+7; % Nabe Kreis
e = rad*sin(c)+10; % Nabe Kreis patch(d, e, 'w')% Nabe zeichnen
f = [0, 6, 6]% Rotorblatt x-Werte
g = [0, 0, 0.5]% Rotorblatt y-Werte
%patch(f,g,'r')% Rotorblatt zeichnen liegend
l = 9% Anzahl Rotorblätter
k = 360/l % Faktor Anzahl Rotorblätter
for n=0:k:360
h = n/180 * pi% Drehwinkel
i = f*cos(h) - g*sin(h)% Drehmatrix x-Werte
j = f*sin(h) + g*cos(h)% Drehmatrix y-Werte patch(i+7, j+10, 'r')% Rotorblatt zeichnen end
Jetzt sollen die Rotorblätter aber nicht an der Kreismitte ansetzen, sondern am Außenrand des Kreises. Das ganze natürlich so, dass bei Veränderung des Kreisdurchmessers und Anzahl der Rotorblätter alles weiterhin passt.
Ich habe versucht bei i=...*rad*sin(n) und bei j=... *rad*cos(n) einzufügen. Damit werden meine Rotorblätter aber nur Kreuz und Quer verschoben.
Ich meinte eigentlich addieren. Habe nur irrtümlicherweise mal geschrieben.
Es sieht jetzt so aus. Das Ergebnis ist aber immer noch nicht richtig Ich bekomme mit dem Zusatz bei i, und j auch immer ein zusätzliches Rotorblatt geplottet.
a = [6.5, 7.5, 7]% Turm x-Werte
b = [0, 0, 10]% Turm y-Werte patch(a,b, 'b')% Turm zeichnen
rad = 0.5% Nabenradius
c = linspace(0,2*pi); % Nabe Kreisumfang
d = rad*cos(c)+7; % Nabe Kreis
e = rad*sin(c)+10; % Nabe Kreis patch(d, e, 'w')% Nabe zeichnen
f = [0, 6, 6]% Rotorblatt x-Werte
g = [0, 0, 0.5]% Rotorblatt y-Werte
%patch(f,g,'r')% Rotorblatt zeichnen liegend
l = 4% Anzahl Rotorblätter
k = 360/l % Faktor Anzahl Rotorblätter
for n=0:k:360
h = n/180 * pi% Drehwinkel
i = (f*cos(h) - g*sin(h))+rad*sin(n)% Drehmatrix x-Werte
j = (f*sin(h) + g*cos(h))+rad*cos(n)% Drehmatrix y-Werte patch(i+7, j+10, 'r')% Rotorblatt zeichnen end
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.