WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Daten gezielt aus Array kopieren

 

Gast-Oliver

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2008, 17:35     Titel: Daten gezielt aus Array kopieren
  Antworten mit Zitat      
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:

Code:
for i=1:1:4
     j=5:1:8
     y(i,1)=x(j,1);
end


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

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 10.01.2008, 18:28     Titel:
  Antworten mit Zitat      
Code:

y = []
for i=1:1:4
for j=5:1:8
y(i,1)=x(j,1);
end
end
 


zweites for und zweites end eingefügt.

Auch ist es vermutlich notwendig, y vorher zu initialisieren

Schneller gehts aber so:
Code:

y = x(5:8)
 

[/b]
_________________

---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast-Oliver

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2008, 19:01     Titel:
  Antworten mit Zitat      
Ok, Vielen Dank Michaela für deine Antwort...
Gruss, Oliver
 
keloid
Forum-Century

Forum-Century


Beiträge: 216
Anmeldedatum: 04.10.07
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 11.01.2008, 10:24     Titel:
  Antworten mit Zitat      
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
Code:

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);
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.