|
|
|
Umgang mit leeren Arrays / Code-Verschönerung |
|
| Bijick |

Ehrenmitglied
|
 |
Beiträge: 914
|
 |
|
 |
Anmeldedatum: 18.06.07
|
 |
|
 |
Wohnort: Nürnberg
|
 |
|
 |
Version: R2006b, R2008b
|
 |
|
|
 |
|
Verfasst am: 09.11.2011, 10:12
Titel: Umgang mit leeren Arrays / Code-Verschönerung
|
 |
Hallo,
ich möchte folgenden Code vereinfachen; anstelle der if-Abfrage müsste doch eigentlich auch ein Einzeiler gehen, aber ich krieg's nicht hin.
Sieht jemand eine Möglichkeit? Ich würde mich sehr freuen.
Herzliche Grüße
Bijick
_________________
>> why
|
|
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 09.11.2011, 12:31
Titel: Re: Umgang mit leeren Arrays / Code-Verschönerung
|
 |
Hallo Bijick,
Einen Einzeiler bekomme ich nicht sinnvoll hin. Aber dies ist immerhin effizienter:
STRMATCH ist sehr langsam, da es den Cell-String zunächst in eine CHAR-Matrix konvertiert. Den zweiten Aufruf des String-Vergleichs kann man sich sparen, indem man den ersten gleich speichert.
Der Name der Matlab-Funktion "var" sollte nicht mit einer Variable überschrieben werden. Das kann zu sehr unerwarteten Problemen führen.
Gruß, Jan
|
|
|
|
| Bijick |
Themenstarter

Ehrenmitglied
|
 |
Beiträge: 914
|
 |
|
 |
Anmeldedatum: 18.06.07
|
 |
|
 |
Wohnort: Nürnberg
|
 |
|
 |
Version: R2006b, R2008b
|
 |
|
|
 |
|
Verfasst am: 10.11.2011, 07:45
Titel:
|
 |
Hallo Jan,
danke für die guten Tipps. Ich werde auf jeden Fall mal strcmp versuchen.
Für weitere Vorschläge - insbesondere Einzeiler-Versuche - bin ich weiterhin dankbar!
Herzliche Grüße
Bijick
_________________
>> why
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 10.11.2011, 09:12
Titel:
|
 |
Hallo Bijick,
Das passt nicht in einen einzigen Befehl. Aber wenn Du soetwas oft aufrufen musst, wäre es schneller die Daten Vorab zu erstellen:
Wenn die Daten größer sind und später nur lesend darauf zugegriffen wird, würde dann jeweils nur eine Shared-Copy erzeugt werden, so dass die Vektoren nicht neu im Speicher erzeugt werden müssen.
Gruß, Jan
|
|
|
|
| Bijick |
Themenstarter

Ehrenmitglied
|
 |
Beiträge: 914
|
 |
|
 |
Anmeldedatum: 18.06.07
|
 |
|
 |
Wohnort: Nürnberg
|
 |
|
 |
Version: R2006b, R2008b
|
 |
|
|
 |
|
Verfasst am: 10.11.2011, 16:17
Titel:
|
 |
Hallo Jan,
noch mal danke. Es geht mir aber in diesem Fall überhaupt nicht um die Effizienz. Der Teil ist total vernachlässigbar im Vergleich zur Hauptrechnung und die Variablen sind auch sehr klein. Ich stehe nur in einem kleinen Wettbewerb in Bezug auf einzeilige Lösungen und wollte mich in diesem Fall nicht so schnell geschlagen geben. Aber Deine Aussage "Das passt nicht in einen einzigen Befehl" stimmt mich froh, denn dann sollte mich auch der liebe Kollege nicht vorführen können.
Herzliche Grüße
Bijick
_________________
>> why
|
|
|
|
| Bijick |
Themenstarter

Ehrenmitglied
|
 |
Beiträge: 914
|
 |
|
 |
Anmeldedatum: 18.06.07
|
 |
|
 |
Wohnort: Nürnberg
|
 |
|
 |
Version: R2006b, R2008b
|
 |
|
|
 |
|
Verfasst am: 10.11.2011, 16:57
Titel:
|
 |
Hallo,
ich nochmal. Es geht natürlich doch. Der liebe Kollege hat innerhalb von 5 Minuten die folgende Lösung gefunden:
Wie gesagt, es kommt nicht auf die Effizienz an. Ich muss noch viel lernen.
Herzliche Grüße
Bijick
_________________
>> why
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 10.11.2011, 20:43
Titel:
|
 |
Hallo Bijick,
Es geht also um Sport.
Die Lösung verblüfft mich, da ich eine [0 x 1] Matrix für 'd' erwartet hätte. Aber es kommt tatsächliche [0x0] heraus:
Prima! Ich hoffe Du fragst Deinen Kollegen, ob er hier im Forum Fragen beantworten möchte :-)
Gruß, Jan
|
|
|
|
|
|
|
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.
|
|