|
|
for- und if-Schleife ersetzen |
|
Ibero |

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 28.10.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.01.2015, 15:11
Titel: for- und if-Schleife ersetzen
|
 |
Hallo Zusammen,
ich möchte unten stehenden Code gerne ohne for- und/oder if-schleife schreiben, da die Berechnung aktuell viel zu lange dauert.
Ist es möglich den Code umzuschreiben. Habe bisher noch keine Lösung dafür gefunden.
[code]M=zeros(8000,190);
%O (8000x190 logical), I, R, Z(8000x190 double)
for i=2:1:8000
for k=1:1:190
if O(i,k)==1
M(i,k)=R(i,k)-I(i,k)+Z(i,k);
else M(i,k)=Z(i,k);
end
M(M<=0)=0;
end
end
M;[/code]
Ich bin für jeden Tipp dankbar!
Beste Grüße
Ibero
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 06.01.2015, 19:14
Titel:
|
 |
Hallo,
auf den ersten Blick so:
Ist es beabsichtigt, die i-Schleife bei 2 zu beginnen? Falls ja, muss das bei meinem Vorschlag noch berücksichtigt werden.
Grüße,
Harald
|
|
|
Ibero |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 28.10.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.01.2015, 16:15
Titel:
|
 |
Funktioniert einwandfrei, danke!
Ich habe noch ein paar weitere for- und if-Schleifen in meinem Programm, bei denen ich nicht genau weiß ob sie nötig sind.
z.B.
[code]
%A = double 8000x190; Liste = double 24x190
for i=2:1:8000
for k=1:1:190
if A(i,k)==1 %Wenn A(i,k)=1, dann sollen die Spalten Werte um den Wert aus Liste (Zeile 18, Spalte k) steigen.
A(i,k)=A(i-1,k)+Liste(18,k);
elseif A(i,k)==2
A(i,k)=A(i-1,k)+Liste(21,k);
elseif A(i,k)==3
A(i,k)=A(i-1,k)+Liste(24,k);
end
end
end[/code]
Geht das auch ohne Schleife? Oder braucht man immer eine Schleife, wenn man (i+x) oder (i-x) benutzt, um auf vorhergehende oder nachfolgende Werte zuzugreifen?
z.B.
A(A==1)=???
A(A==2)=???
Beste Grüße
Ibero
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.01.2015, 16:22
Titel:
|
 |
Hallo,
kann A nur die Werte 1, 2, 3 annehmen oder auch andere Werte?
Grundsätzlich kann es auch interessant sein, den Code mal mit dem Profiler zu analysieren und zu überprüfen, welche Code-Teile wirklich die meiste Zeit benötigen. Dann kann man sich bei der Laufzeitverbesserung auf genau diese Teile konzentrieren.
Grüße,
Harald
|
|
|
Ibero |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 28.10.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.01.2015, 16:33
Titel:
|
 |
Hallo und schon mal Danke für die schnelle Antwort!
A nimmt auch andere Werte als 1,2 und 3 an.
Ich werde es mal mit dem Profiler analysieren. Die Schleife oben benötigt einzeln gar nicht so viel Zeit. Ich habe jedoch mehrere Schleifen, die ähnlich aufgebaut sind und das summiert sich dann.
Ist es denn überhaupt möglich eine for-Schleife zu umgehen, wenn man z.B. in einer Spalte auf nachfolgende bzw. vorhergehende Elemente zugreifen möchte? (z.B. in Spalte i: Wenn der Wert 0 wird, sollen die Werte in den nächsten 5 Zeilen der Spalte i auch 0 sein)
Viele Grüße
Ibero
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
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.
|
|