|
|
Von Vektor Wert subtrahieren |
|
Philipp68 |

Forum-Century
|
 |
Beiträge: 167
|
 |
|
 |
Anmeldedatum: 21.10.15
|
 |
|
 |
Wohnort: Mannheim / Ilmenau
|
 |
|
 |
Version: R2014a, R2017a, R2019b
|
 |
|
|
 |
|
Verfasst am: 07.12.2016, 16:09
Titel: Von Vektor Wert subtrahieren
|
 |
Hallo,
ich möchte von jedem Y - Wert eines Vektors einen bestimmten Wert subtrahieren.
Ich bekomme nun aber eine 130 x 130 Matrix und Neu(:,i) wird rot unterstrichen (appears to change size on every loop iteration).
Ansich soll nur ein neuer Vektor erstellt werden.
Wäre für einen Tipp sehr dankbar
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 07.12.2016, 20:46
Titel: Re: Von Vektor Wert subtrahieren
|
 |
Hallo Philipp68,
Die Warnung lässt sich mit einer "Pre-allocation" lösen:
Ein iterativ wachsendes Array benötigt eine Menge Resourcen. In deinem Fall hat das Endergebnis 130*8 = 1040 Byte plus 100 Byte Header für die Variable. Matlab erstellt aber ohne Pre-allocation in jeder Iteration ein neues Array in und kopiert die alten Daten um. Dazu werden insgesamt sum(1:130)*8 + 130 * 100 = 21515 Byte. Je größer das Array w
ird, desto schlimmer wird das: Bei 1000 Elementen geht es schon um 4MB. Das kann ein Programm massiv ausbremsen.
Darum ist Pre-allocation grundsätzlich Pflicht.
Es geht in Matlab allerdings noch viel einfacher:
Eine Schleife ist hier überflüssig.
Wieso Du eine 130x130-Matrix bekommst, weiß ich nicht. Poste bitte die Dimensionen der Inputs.
Gruß, Jan
|
|
|
Philipp68 |
Themenstarter

Forum-Century
|
 |
Beiträge: 167
|
 |
|
 |
Anmeldedatum: 21.10.15
|
 |
|
 |
Wohnort: Mannheim / Ilmenau
|
 |
|
 |
Version: R2014a, R2017a, R2019b
|
 |
|
|
 |
|
Verfasst am: 08.12.2016, 11:49
Titel:
|
 |
Guten Morgen Jan,
vielen Dank für den Hinweis. An diese einfache Schreibweise habe ich nicht gedacht. Ich habe eben den Code nochmal laufen lassen, Workspace vorher gelöscht und nun einen 1 x 130 Vektor erhalten (neuen Werte sind identisch). Ich kann nun leider nicht mehr nachvollziehen, wie die 130x130 Matrix entstanden ist. Falls dieser Fall nochmal auftreten sollte, würde ich es hier posten.
Lg
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 08.12.2016, 16:47
Titel:
|
 |
Hallo Philipp68,
Eine Möglichkeit wäre z.B.:
Gruß, Jan
|
|
|
Philipp68 |
Themenstarter

Forum-Century
|
 |
Beiträge: 167
|
 |
|
 |
Anmeldedatum: 21.10.15
|
 |
|
 |
Wohnort: Mannheim / Ilmenau
|
 |
|
 |
Version: R2014a, R2017a, R2019b
|
 |
|
|
 |
|
Verfasst am: 13.12.2016, 15:07
Titel:
|
 |
Hallo Jan,
perfekt, vielen Dank!
|
|
|
|
|
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.
|
|