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

Werte aus Excel Tabelle in Simulink

 

rhoffm34
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 27.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.01.2016, 16:07     Titel: Werte aus Excel Tabelle in Simulink
  Antworten mit Zitat      
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...
Private Nachricht senden Benutzer-Profile anzeigen


ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2016, 08:31     Titel:
  Antworten mit Zitat      
Hallo,

entweder du liest die ganze Matrix aus Excel ein mit:

Code:

data = xlsread('test.xlsx');
 


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:

Code:

data = xlsread('test.xlsx','B3'); % Wert aus der Zelle B3
data = xlsread('test.xlsx','A1:A6'); % Werte aus Zellen A1:A6
 


Hoffe das hilft dir - liebe Grüße!

Robert
Private Nachricht senden Benutzer-Profile anzeigen
 
rhoffm34
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 27.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2016, 14:11     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2016, 14:32     Titel:
  Antworten mit Zitat      
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:

Code:

data = xlsread('test.xlsx','A1:E6');
 


So als Beispiel - und transponieren geht mit:

Code:

data = data';
 



Vielleicht kannst du das Zeichen vom transponieren auch gleich beim einlesen anhängen!

Gruß Robert
Private Nachricht senden Benutzer-Profile anzeigen
 
rhoffm34
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 27.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2016, 06:39     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2016, 08:54     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
rhoffm34
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 27.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2016, 09:12     Titel:
  Antworten mit Zitat      
Mittels Schleife immer die Spalte erhöhen wäre das Richtige...
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2016, 09:19     Titel:
  Antworten mit Zitat      
Okay, dann würde ich es so machen:

Code:


data = xlsread('test.xlsx','A1:E6');

for i = 1:length(data)

 temp = data(:,i); % Liest pro Schleifendurchgang immer die i-te Spalte aus

 ...
 ...
 ... % Einfügen was du mit deiner Spalte machen willst

end

 


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ß
Private Nachricht senden Benutzer-Profile anzeigen
 
rhoffm34
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 27.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2016, 12:34     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2016, 13:58     Titel:
  Antworten mit Zitat      
Wenn du deine Daten aus Excel so einliest:

Code:

data = xlsread('test.xlsx,'A1:E6');
 


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 Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
rhoffm34
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 27.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.02.2016, 07:39     Titel:
  Antworten mit Zitat      
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...
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.02.2016, 09:31     Titel:
  Antworten mit Zitat      
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ß
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.