2017-03-25 7 views
-3

Ich bin ein Anfänger in MATLAB und ich bin gebeten, eine Übung zu tun, um für Schleifen zu lernen. Ich habe 5 Zahlen, 1 bis 5 (1, 2, 3, 4, 5) und jede dieser Zahl wird einen Transformationsprozess zeigen, der aus vier Stufen besteht, so dass zum Beispiel für 5 (5 wird -> 5 (at das Ende der ersten Stufe) 4 (am Ende der zweiten Stufe 3 (dritte Stufe) 2 (zweite Stufe) 1 (erste Stufe)), für 4 (4, 4, 3, 2), für 3 (3, 3, 3, 2), für 2 (2, 2, 2, 1) und für 1 (1 1 1 1). Ich muss (für jede Zahl) das Ergebnis bei jeder Iteration ausgeben (zB für 5 -> 5 (Iteration 1), 4 (Iteration 2) und so weiter), so kann jemand mir helfen für mich als Anfänger in dieser Übung? Sein verwirrend. DankeFor Schleifen Übung in Matlab

+2

Können Sie etwas, was Sie bisher versucht haben, posten, auch wenn es nicht perfekt funktioniert? Wir könnten Ihnen eine Lösung anbieten, aber Sie werden viel mehr lernen, wenn Sie es zuerst selbst ausprobieren. Um den Fehler selbst zu finden, kann es hilfreich sein, den Code Schritt für Schritt mit dem [Matlab-Debugger] auszuführen (https://nl.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html). . – m7913d

+0

Es sieht Hausaufgaben (Ich habe nicht downvote, BTW). Hier werden viele eine Hausaufgabe nicht als legitime Frage anerkennen. Ich würde Ihnen vorschlagen, sich etwas Mühe zu geben, es von einer reinen Hausaufgabe auf eine Ebene wohlgeformter Fragen zu bringen, die die Entwickler dazu bringen würde, Ihre spezielle Frage zu beantworten. Auf diese Weise werden Sie viel besser und schneller lernen. – Developer

+0

Vielen Dank für Ihre Antwort. Nein, es ist keine HW, ich versuche nur, diese Idee nur zu Übungszwecken zu machen. Hier ist, was ich erreicht habe: –

Antwort

0

überprüfen Sie die for loop auf MathWorks aus.

Es Ist nicht besonders klar, was Sie fragen, ich schlage vor, Ihre Frage zu ma zu bearbeiten Es ist klar, was Sie tun wollen und was das Problem ist, das Sie dabei haben.

Es scheint, als ob Sie nur eine For-Schleife verwenden sollten. Sie könnten von jedem Element in jeder Schleife 1 subtrahieren, aber eine Einschränkung eingeben, damit das Element nicht auf Null geht. Um damit zu helfen, könnten Sie den find function verwenden, um den Index jedes Elements zu erhalten, und innerhalb der for-Schleife würden Sie eine Einschränkung einschließen, wenn das Element < 1 das Element = 1 setzt. Auf diese Weise werden am Ende der Iteration alle Elemente gleich 1 angezeigt, wenn sie für 5 Schritte ausgeführt werden.

Um jedes Mal die Iterationsnummer auszugeben, geben Sie einfach die Variable ein, die Sie innerhalb der Schleife durchlaufen.

for n=5:-1:1 %decrements from 5 to 1 A-1; %A is the vector you started with n %by not suppressing the output with a semicolon will show the value of n in the command window. You could also use disp(n) indZeroEl = find(A==0); %the index of any element equal to zero A(indZeroEL) = 1; end

Ich habe keinen Zugriff bekam jetzt in Matlab dies zu überprüfen, aber zumindest sollten Sie auf dem richtigen Weg zu bekommen.