|
|
Problem mit Array-Erstellung |
|
Stephi |

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 06.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.05.2013, 11:37
Titel: Problem mit Array-Erstellung
|
 |
Hallo,
ich möchte ein Array mit bestimmten Werten (die aus einer Datei ausgelesen werden müssen) definieren.
Mein Codeabschnitt sieht bis jetzt so aus:
Dabei ist tab die aus der Exceldatei eingelesenen Blätter ( tab=[1,2,3....]), Zeitpunkte ist eine Matrix, in der die Zeilenelemente die Grenzen einer Periode (hier Umdrehungen) angeben und die Spalten stellen den Bezug zu den jeweiligen Excelblättern her. Das ist wichtig, weil die Grenzen der Periode für jedes Blatt unterschiedlich sind.
Das funktioniert soweit, aber als Ergebnis erhalte ich für M eine Matrix anstatt ein Array und zwar gibt er mir nur die Werte für j=3. Ich benötige aber die Werte für alle j, sprich für jeden einzelnen tab mit der Referenz des dazugehörigen Spaltenvektors aus "zeitpunkte".
Ich probiere schon seit Tagen diese Zuweisung zu optimieren, aber es gelingt mir leider nicht. Habt ihr vielleicht eine Idee?
Viele Grüße
Stephi
|
|
|
|
|
Mmmartina |

Forum-Meister
|
 |
Beiträge: 745
|
 |
|
 |
Anmeldedatum: 30.10.12
|
 |
|
 |
Wohnort: hier
|
 |
|
 |
Version: R2020a
|
 |
|
|
 |
|
Verfasst am: 23.05.2013, 12:12
Titel:
|
 |
Du überschreibst M mit jedem Schleifendurchlauf. Lösung ist also, dass du mit jedem Schleifendurchlauf eine neue Zeile an die Matrix M anhängst (evt. muss M vor der Schleife einmalig initialisiert werden).
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
|
|
|
Stephi |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 06.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.05.2013, 12:31
Titel:
|
 |
Hallo Martina,
das mit dem Initialisieren von M habe ich bereits versucht. Leider bekomme ich immer (auch bei deinem Lösungsvorschlag) ein Problem mit der Dimension.
Die Fehlermeldung lautet: Subscripted assignment dimension mismatch.
Ich finde leider nicht raus wo das Problem liegt. Ich arbeite noch nicht lange mit matlab.
Viele Grüße
Stephi
|
|
|
Mmmartina |

Forum-Meister
|
 |
Beiträge: 745
|
 |
|
 |
Anmeldedatum: 30.10.12
|
 |
|
 |
Wohnort: hier
|
 |
|
 |
Version: R2020a
|
 |
|
|
 |
|
Verfasst am: 23.05.2013, 12:44
Titel:
|
 |
Hast du meine Anmerkung zum Zeilen- bzw. Spaltenvektor gelesen? Da ich nicht weiß, ob dein Ergebnis eine Zeile, oder eine Spalte darstellt, wird mit ziemlicher Sicherheit die Speicherung in M nicht richtig verlaufen.
Gib doch bitte mal den Befehl
im Matlab Commandwindow ein.
Dann läßt du deinen Code laufen.
Er wird beim Fehler hängen bleiben.
Sollte ja dann die Zeile mit
sein.
Dann schaust du dir mal an, was da in M gespeichert ist, bzw. welches ergebniss das ausführen von
ergibt und paßt dann den Matrixzugriff entsprechend an.
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
|
|
|
Stephi |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 06.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.05.2013, 13:13
Titel:
|
 |
Hallo Martina,
genau das ist ja mein Problem. Ja, der Fehler liegt in der Zeile mit M.
Ich erhalte eine Matrix und möchte aber etwas dreidimensionales, sprich eine Matrix für jeden tab. In der Matrix, die ich erhalte, stimmen die Werte, aber das wäre jetzt nur für den 3.tab (hier also der letzte). Gibt es eine Möglichkeit das für alle tabs anzugeben und nicht zu überspeichern? Ich habe bereits versucht M in der Form M(x,y,z) zu initialisieren, aber auch hier bekomme ich das Problem mit der Dimension.
Danke für deine Hilfe!
Viele Grüße
Stephi
|
|
|
Mmmartina |

Forum-Meister
|
 |
Beiträge: 745
|
 |
|
 |
Anmeldedatum: 30.10.12
|
 |
|
 |
Wohnort: hier
|
 |
|
 |
Version: R2020a
|
 |
|
|
 |
|
Verfasst am: 23.05.2013, 13:40
Titel:
|
 |
Das heißt, M ist schon eine Matrix? Das laß sich oben anders, nämlich dass du einen Vektot bekommst und diese dann über die Schleifendruchläuft zu einer Matrix zusammenfassen willst.
Aber MAtritzen zu einem Array zusammenzufassen läuft analog dazu:
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
|
|
|
Stephi |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 06.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.05.2013, 13:52
Titel:
|
 |
Entschuldigung, dann habe ich es wohl ein bißchen ungenau beschrieben.
Genau das funktioniert leider nicht. Da bekomme ich die Fehlermeldung wie vorhin.
Wenn ich in der Schleife einen Array in der Form
mit Nullen initialisiere funktioniert das. Hier wären die Dimensionen gleich dem, was ich bei M haben möchte. Versuche ich das auf M zu übertragen, funktioniert es wieder nicht und ich bekomme wieder die Fehlermeldung mit der Dimension.
Ich kann mir nicht erklären warum es mit Nullen funktioniert und beim Einlesen nicht. (Wenn es an der Dimension liegen soll)
Viele Grüße
Stephi
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 23.05.2013, 13:56
Titel:
|
 |
Hallo Stephi,
Diese Zeile sollte einen Fehler erzeugen, weil "21:22:23:..." keine valide Matlab-Syntax ist. Meinst du:
?
Gruß, Jan
|
|
|
Stephi |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 06.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.05.2013, 14:17
Titel:
|
 |
Hallo Jan,
ja das meine ich. Es funktioniert mit beiden Schreibweisen. Das Problem liegt -glaube ich- bei dem dritten Eintrag. Leider weiß ich dennoch keine Lösung für das Problem.
Gebe ich anstatt c(j,1) nur j ein bekomme ich die richtige Matrix für das letzte j, aber ich möchte ein Array für alle j. Also eine j Anzahl von Matrizen. Ich weiß nicht wie ich es vermeiden kann, dass die ersten j überschrieben werden.
Hast du vielleicht eine Idee?
Viele Grüße
Stephi
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 23.05.2013, 14:54
Titel:
|
 |
Hallo Stephi,
Ich verstehe das Problem immer noch nicht.
Zunächst komme ich nicht darüber hinweg, dass "21:22:23:24:25:26" funktionieren soll. Der Colon-Operator erlaubt "a:b" und "a:step:b". Aber was könnte dieser Haufen von Colons bewirken? Ist das wieder eine neue Methode in einer Matlab-Version, die moderner ist als die von mit genutzten Methoden?
Vielleicht hilft dieser Tipp:
Alternative:
Gruß, Jan
|
|
|
Stephi |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 06.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.05.2013, 15:10
Titel:
|
 |
Hallo Jan,
"21:22:23:24:25:26" liest die 21.,22.,23.,...26. Spalte meiner Exceldatei ein und mit "21:26" erhalte ich genau das gleiche. Ich arbeite mit MATLAb R2011b.
Der Tipp mit dem cell array könnte auch gut funktionieren, aber das muss ich mir jetzt erstmal genauer angucken, da ich damit noch nie gearbeitet habe. Danke schon mal.
Viele Grüße
Stephi
|
|
|
Andy386 |

Forum-Guru
|
 |
Beiträge: 485
|
 |
|
 |
Anmeldedatum: 24.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.1/8
|
 |
|
|
 |
|
Verfasst am: 27.05.2013, 23:52
Titel:
|
 |
äh, aber die Daten auf die du zugreifen willst sind schon da, oder?
klingt mir eher nach einem Problem da.
data(:,:,3) und data(:,:,2) sehen nicht gleich aus, oder?
Oder hilft dir
Merg = data(zeitpunkte(a,j):zeitpunkte(b,j),21:22:23:24:25:26,c(j,1));
M(:,:,j)=Merg
(also bspw. bei 2dim. Ms)?
_________________
Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
|
|
|
Stephi |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 06.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.05.2013, 12:40
Titel:
|
 |
Hallo Jan,
danke nochmal für den Hinweis mit dem Problem bei "21:22:23:24:25:26". Das war auch eins der Probleme bei der Zuweisung von oben. Das mit den Cells hat mir bei einem weiteren Problem sehr geholfen und die Zuweisung von M habe ich über die richtige Dimensionierung jetzt auch hinbekommen.
Vielen Dank.
Hallo Andy,
nein der Vorschlag von dir funktionierte nicht. Das Problem lag an der Zuweisung der Spalten. Diese war nicht richtig definiert.
Danke trotzdem ;-)
Liebe Grüße
Stephi
|
|
|
|
|
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.
|
|