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

multiple range bei xlsread

 

Kalllle

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.10.2010, 12:18     Titel: multiple range bei xlsread
  Antworten mit Zitat      
Hallo,

ich moechte mit xlsread innerhalb einer for-schleife eine bestimmte anzahl von zeilen mehrmals hintereinander auslesen.
Dies soll dann in etwa folgendes ergeben:

Code:

for k = 1:50
 
x{k} = xlsread(data, sheet, "k"*range);

end
 


fuer die range habe ich bspw. A1:A48, welche dann 50 mal hintereinander gelesen werden soll.
Also: A1:A48, A49:A97, A97:....

Kann mir jemand weiterhelfen???

danke im voraus!

edit by denny: Bitte Code-Umgebung verwenden. Danke


Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 15.10.2010, 15:46     Titel:
  Antworten mit Zitat      
Hallo,

was willst du hier machen:
Code:

"k"*range
 

das ist keine gueltiger Matlab Syntax (wenn dadn ' anstatt " um z.B. einen String festzulegen). Am wichtigsten ist allerdings zu wissen, was range ist (Vektor,Cell,Struct) und was dort wie drinsteht. Das koennen wir leider nicht erraten.

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Kalllle

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.10.2010, 18:09     Titel:
  Antworten mit Zitat      
Hallo,
erstmal danke für die antwort.
klar ist das kein gültiger code, ich wollte damit verdeutlichen dass diese range k mal gelesen werden soll.
es soll sich dabei um datensatz aus einer excel datei handeln.
dieser hat etwa 1000 werte in einer spalte, diese spalte soll so gelesen werden, dass ich jeweils einen satz von 48 daten habe beginnend mit A1:A48, dann A48:A96 usw.

sodass ich dann zum schluss k Vektoren habe, die ich weiter verwenden kann.

Hoffe es ist jetzt klarer!!

gruß
kalle
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 15.10.2010, 18:41     Titel:
  Antworten mit Zitat      
Hallo,

ok jetzt habe ich es begriffen Smile.

Also an deiner Stelle wuerde ich die ganze Exelspalte in einem Zug einlesen:
Code:

data = xlsread('pfad',1,'A1:A1008');
 

und dann deine gewuenschte Struktur erstellen:
Code:

x = reshape(data,48,[]);
 

Dies ist bedeutend einfacher und VIEL schneller, da du nicht etliche mal Excel oeffnen und schliessen musst (ActiveX-Verbindung). Sollte die Anzahl der Elemente in der Excel-Soalte nicht durch 48 teilbar sein, so musst du den Vektor 'data' dementsprechend erweitern und dann den reshape Befehl verwenden.

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Kalllle

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.10.2010, 09:22     Titel:
  Antworten mit Zitat      
danke fuer den hinweis, bringt mich auf jeden fall weiter.

gruss
 
Kalllle

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.10.2010, 11:03     Titel:
  Antworten mit Zitat      
nun doch noch mal eine frage:

wenn ich nun nicht einzelne vektoren braeuchte sondern jeweils eine matrize (bspw. 2 spalten von 48 zeilen), wie bekomme ich das am besten hin?

wenn ich es mit xlsread so auslese: 'A1:B1008'
und dann mit reshape bearbeite, habe ich zunaechst alle A Vektoren nebeneinander und dann alle von B.

mein ziel waere allerdings folgende Spaltenabfolge in der erstellten Matrize:
A,B,A,B....


gruss
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 18.10.2010, 12:02     Titel:
  Antworten mit Zitat      
Hallo,

es geht bestimmt noch eleganter, aber funktionieren tut es erstmal:
Code:

% Excel Daten 'test'
test(:,1) = 1:100;
test(:,2) = 5:5:500;

a = reshape(test(:,1),10,[]);
b = reshape(test(:,2),10,[]);
idx = 1:2:20;
new = zeros(10,20);

for m = 1:10
    new(:,idx(m)) = a(:,m);
    new(:,idx(m)+1) = b(:,m);
end
 


MFG

Sco
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 - 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.