|
|
Daten gezielt aus Array kopieren |
|
Gast-Oliver |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.01.2008, 17:35
Titel: Daten gezielt aus Array kopieren
|
|
Hallo zusammen,
ich bin noch ziemlich unerfahren mit Matlab und hätte eine kleine Frage...Vielleicht kann mir einer von euch einen Tipp geben.
Wenn ich z.B. eine Variable x erstellt habe welche aus einer Spalte besteht mit Zahlen von 1 bis 10 (for i=1:1:10 x(i,1)=i end) . Nun möchte ich z.B die Werte 5 bis 8 aus der Variable x kopieren und diese in einer Variable y einfügen. Y sollte somit eine Spalte sein mit den Werten 5, 6, 7, 8.
Ich hatte folgenden code für diese kleine Anwendung erstellt:
und bekomme die Fehlermedlung ??? Subscripted assignment dimension mismatch.
Warum? Kann man in einer for schleife keine zwei parameter verwenden? Wie könnte ich das lösen?
Viele Grüsse, Oliver
|
|
|
|
|
Michaela |
Forum-Century
|
|
Beiträge: 239
|
|
|
|
Anmeldedatum: 12.07.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: bis 2007b
|
|
|
|
|
|
Verfasst am: 10.01.2008, 18:28
Titel:
|
|
zweites for und zweites end eingefügt.
Auch ist es vermutlich notwendig, y vorher zu initialisieren
Schneller gehts aber so:
[/b]
_________________
---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
|
|
|
Gast-Oliver |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.01.2008, 19:01
Titel:
|
|
Ok, Vielen Dank Michaela für deine Antwort...
Gruss, Oliver
|
|
|
keloid |
Forum-Century
|
|
Beiträge: 216
|
|
|
|
Anmeldedatum: 04.10.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.5.0.342 (R2007b)
|
|
|
|
|
|
Verfasst am: 11.01.2008, 10:24
Titel:
|
|
|
|
|
Um es zu verdeutlichen:
"Subscripted assignment dimension mismatch" bedeutet, dass die Dimensionen der Variablen nicht mit dem übereinstimmen, was die entsprechende Funktion erwartet, wobei als Funktion hier das "=" gilt.
Mit
wird lediglich ein Vektor (sozusagen eine 1x4- oder 4x1-Matrix) erstellt, der die Elemente 5, 6, 7, 8 enthält.
Da als Laufvariable aber ein Skalar erwartet wird (sozusagen eine 1x1-Matrix), gibt die Funktion den Fehler zurück, dass die Dimensionen nicht übereinstimmen.
Dennoch wird mit Michaelas erstem Beispielprogramm nicht das gewünschte Ergebnis erzielt.
Beispielsweise wird im ersten Durchlauf folgendes berechnet:
1. i = 1, j = 5 also y(1,1) = x(5,1)
2. i = 1, j = 6 also y(1,1) = x(6,1)
3. i = 1, j = 7 also y(1,1) = x(7,1)
4. i = 1, j = 8 also y(1,1) = x(8,1)
Am Ende stünde im Vektor y also (8, 8, 8, 8).
Das zweite Beispielprogramm ist da perfekt geeignet, denn es ist schnell geschrieben und Matlab rechnet automatisch mit den schnellsten Routinen (denn For-Schleifen in Matlab zu benutzen sollte nur in dringenden Fällen gemacht werden).
Nachtrag:
Es ist natürlich auch möglich, z.B. bei einer nicht von vorn herein bekannten "Verschiebung" eine Variable einzuführen, z.B.:
i = 4;
y = x(1+i:end);
|
|
|
|
|
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 - 2024
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.
|
|