|
|
Werte aus Excel Tabelle in Simulink |
|
rhoffm34 |
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 27.01.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.01.2016, 16:07
Titel: Werte aus Excel Tabelle in Simulink
|
|
Hallo Gemeinde der Matlab Freunde,
ich möchte gerne aus einer Testmatrix (Excel Tabelle) einzelne Werte oder Werte als Vektoren auslesen.
A B C D E
1 6 3 3 3 0
2 5 4 4 4 9
3 4 5 5 5 87
4 34 6 65 6 6
5 2 54 7 7 5
6 1 3 4 87 3
Also den Wert der in der Zelle B3 (also 5) steht oder den Vektor der in der Spalte A1-6 steht (also 6 5 4 34 2 1 )
Anschließend möchte ich den Wert in Simulink weiter verarbeiten.
Das Model wird anschließen auf eine MABX (Dspace 1401) compiliert.
Vielleicht eine einfache Aufgabe, aber ich schaffe es nicht...
|
|
|
|
|
ro_mat |
Forum-Century
|
|
Beiträge: 158
|
|
|
|
Anmeldedatum: 20.10.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.01.2016, 08:31
Titel:
|
|
Hallo,
entweder du liest die ganze Matrix aus Excel ein mit:
wobei 'test.xlsx' den Namen deiner Excel-Datei enthalten soll und diese Methode nur numerische Daten einlesen kann!
Oder du kannst auch, wenn du vorher den Bereich schon weißt, nur diese Werte oder Vektoren einlesen mit:
Hoffe das hilft dir - liebe Grüße!
Robert
|
|
|
rhoffm34 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 27.01.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.01.2016, 14:11
Titel:
|
|
Hallo Robert, vielen Dank für die schnelle Antwort.
So in der Art habe ich mir das auch schon gedacht. Ich hatte nur die Hoffnung das es eine bequemere Lösung gibt.
Jetzt kommt das Problem auf, das ich alle Vektoren einlesen möchte. Kann ich die Range 'A1:A6' automatisch erhöhen bis z.B. 'E1:E6' ? Vielleicht mit einer FOR Schleife?
Und.... Ich brauche den Vektor nicht im Format 15x1 double, sondern 1x15 double, also transponiert.
Sonst kann ich den Vektor in Simulink über einen Constant-Block nicht einlesen...
Liebe Grüße,
Ralf
|
|
|
ro_mat |
Forum-Century
|
|
Beiträge: 158
|
|
|
|
Anmeldedatum: 20.10.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.01.2016, 14:32
Titel:
|
|
Hallo,
wie gesagt du kannst ja alles einlesen und dann aus der Matrix extrahieren oder wenn der Bereich zeilenmäßig immer gleich lang ist auch den gewünschten Bereich! Du spezifizierst die obere linke Ecke und die untere rechte Ecke deines Bereichs:
So als Beispiel - und transponieren geht mit:
Vielleicht kannst du das Zeichen vom transponieren auch gleich beim einlesen anhängen!
Gruß Robert
|
|
|
rhoffm34 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 27.01.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.01.2016, 06:39
Titel:
|
|
Hallo Robert,
Danke für die Info.
Hast Du auch eine Idee wie ich die Range ('A1:A6') automatisch hochzählen kann?
also so...
data = xlsread('test.xlsx', ('A1:A6');
data = xlsread('test.xlsx', ('B1:B6');
data = xlsread('test.xlsx', ('C1:C6');
data = xlsread('test.xlsx', ('D1:D6');
...
eventuell mit einer FOR Schleife...? Aber wie????
Ich habe nämlich 100 Spalten(respektive 100 Vektoren).
Ich könnte xlsread zwar auch 100 mal aufrufen, finde ich aber nicht so sauber...
was denkst Du? Oder auch jemand anders...
LG Ralf
|
|
|
ro_mat |
Forum-Century
|
|
Beiträge: 158
|
|
|
|
Anmeldedatum: 20.10.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.01.2016, 08:54
Titel:
|
|
Nein, das ist bestimmt nicht sauber und braucht auch mehr Leistung! Ich würde den gesamten Bereich auf einmal einlesen und dann mit der eingelesenen Matrix weiterarbeiten!
Dazu muss ich wissen was du mit der Matrix machen willst - brauchst du alle Spalten separat in einer Variable oder kann mittels Schleife immer die Spalte erhöht werden?
|
|
|
rhoffm34 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 27.01.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.01.2016, 09:12
Titel:
|
|
Mittels Schleife immer die Spalte erhöhen wäre das Richtige...
|
|
|
ro_mat |
Forum-Century
|
|
Beiträge: 158
|
|
|
|
Anmeldedatum: 20.10.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.01.2016, 09:19
Titel:
|
|
Okay, dann würde ich es so machen:
In der Schleife erhöht er immer die Spalte, ich gehe davon aus das du die Spalten einzeln für weitere Berechnungen benötigst oder?
Gruß
|
|
|
rhoffm34 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 27.01.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.01.2016, 12:34
Titel:
|
|
aber so wird doch immer die gleiche Spalte ausgelesen....? Oder
Es soll aber die Spalten
'A1:A6'
'B1:B6'
'C1:C6'
'D1:D6'
als Vektor ausgelesen werden...
Hmmmm
|
|
|
ro_mat |
Forum-Century
|
|
Beiträge: 158
|
|
|
|
Anmeldedatum: 20.10.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.01.2016, 13:58
Titel:
|
|
Wenn du deine Daten aus Excel so einliest:
dann müsste deine Matrix data aus 6 Zeilen und 5 Spalten bestehen! Spalte 1 beinhaltet deine Daten aus A1:A6, Spalte 2 deine Daten aus B1:B6 usw.!
Mittels der for-Schleife kannst du jetzt auf deine einzelnen Vektoren zugreifen - wenn i=1 ist dann beinhaltet die Variable temp die erste Spalte aus der Matrix data! Nun kannst du den Vektor verwenden! Dies geht dann so weiter bis er alle Vektoren aus der Matrix durchhat!
Du musst mal sagen was du mit den Vektoren machen willst und warum du sie brauchst - dann kann dir leichter weitergeholfen werden
|
|
|
rhoffm34 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 27.01.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.02.2016, 07:39
Titel:
|
|
Ich möchte aus einer Testmatrix verschiedene Zustände auslesen wobei die Vektoren jeweils ein Testzustand darstellen.
Nur als Beispiel:
Vektor 1 : 4, 8, 15, 12
entspricht....:
U1 = 4V
I1 = 8mA
U2 = 15V
I2 = 12mA
Die Testmatrix ist 15x99 groß. Dementsprechend habe ich letztendlich 99 Vektoren (mit je 15 Parametern)die jeweils einen neuen Testzustand darstellt. Diese Vektoren lese ich dann in Simulink über einen Constant-Block ein und verarbeite sie dann weiter.
Die verschiedenen Testzustände will ich nach verschiedenen Kriterien durchrattern...
|
|
|
ro_mat |
Forum-Century
|
|
Beiträge: 158
|
|
|
|
Anmeldedatum: 20.10.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.02.2016, 09:31
Titel:
|
|
Hallo und guten Morgen,
meines Erachtens nach hat Simulink kein Problem mit deiner Matrix! Wenn jeder Vektor nach den gleichen Kriterien durchsucht wird, dann bau dir deine Schaltung auf und lies dabei deine Matrix mit einem Constant-Block ein - Simulink arbeitet dann alle Werte durch!
Liegt das Problem jetzt an der Matrix oder an der Verarbeitung der Matrix in Simulink?
Vielleicht hilft es weiter wenn du erklärst was du in Simulink machen willst und warum du dafür Simulink benötigst?
Gruß
|
|
|
|
|
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.
|
|