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 aus Excel auslesen->aufteilen

 

sbmiles21
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 16.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2012, 19:50     Titel: Daten aus Excel auslesen->aufteilen
  Antworten mit Zitat      
Hallo zusammen,

bin noch ein kleiner Anfänger und habe folgendes Problem:
Ziel: Möchte die Spalte 1 und 2 aus einer Matrix auslesen und in C speichern.
Dabei sollen nur die Zeilen in C kopiert werden, die in Spalte 4, eine 1 haben.

Mein Code:
Code:

clc
clear all


% Werte aus Excel holen
A=xlsread('test.xls')
% Anzahl der Anzulegenden Matrizen ermitteln=Anzahl Cycles
B=max(A(:,4));

%Anzahl der Zeilen in Excel
zeile=length(A(:,1));

%zeile:spalte

y=0;
i=1;




    while y<2
   
    i=i+1;
    y=A(i,4);
   
   
    C(i,1)=A(i,1);
    C(i,2)=A(i,2);
    end
 


PROBLEM IST:
Er nimmt den Wert aus der 6 Spalte, zugehörig zu2, auch noch mit Sad
Kennt jemand eine Lösung?

Hier meine Matrizen noch:
Code:

Excel:
 Spalte:    1 |   2 |   3 |  4 |
---------------------------
     0     0     8     1
     1    10     8     1
     2    20     8     1
     3    30     8     1
     4    40     8     1
     2    80     8     2
     3    90     8     2
     4   100     8     2
     5   120     8     2
     6   140     8     2
     1   160     8     3
     2   180     8     3
     3   200     8     3
     4   220     8     3
     1   240     8     4
     2   260     8     4
     3   280     8     4
     4   300     8     4

Meine Ausgabe für Matrix C:
 0     0
     1    10
     2    20
     3    30
     4    40
     2    80 <- Dieses Wertepaar ist zu viel

 


Für Hilfe wär ich dankbar.

Gruss
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 17.02.2012, 08:20     Titel:
  Antworten mit Zitat      
hmm versteh garnicht warum 0 0 bei dir auftaucht. das sollte eigentlich nicht so sein. den letzten wert nimmst du mit rein da ja y<2 in dem schrit am anfang noch erfüllt ist. i=i+1 und die zuweisung zu y sollten unter der zuweisung von c stehen.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 17.02.2012, 10:26     Titel:
  Antworten mit Zitat      
Hallo

so geht es ohne Schleife

Code:

C = A(A(:,4)==1,1:2)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
sbmiles21
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 16.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.06.2012, 13:03     Titel:
  Antworten mit Zitat      
Hallo
Danke für die Antworten. Hab in der Zwischenzeit selber etwas herumprobiert. Hab es nun geschafft bzw. 2 while schleifen, welche die Datei lesen und die Daten erstmal in die Matrix B kopieren.

Mein Prob nun , ich möchte aus der Excel Datei nicht alle Daten einfach in Matrix B schreiben, sondern je nach Segment(Zahl in Spalte F) in die Matrix Bi schreiben.

z.B.:
Lese Zeile 1-3 --> Ist Segment1 --> Schreibe Zeilen in Matrix B1
Lese Zeile 4-6--> Ist Segment4 --> Schreibe Zeilen in Matrix B4
Lese Zeile 7-9--> Ist Segment5 --> Schreibe Zeilen in Matrix B5
.....
.....

Code:


A                        B                  C           D                  E            F
20,15893   0,43549353   14,893186   0,007016076   125,81594   1
20,16082   0,43894103   14,869062   0,007058728   125,78445   1
20,162708   0,43549353   14,860447   0,007105258   125,81594   1
20,358877   -0,17126888   -15,453137   -0,007048814   126,88654   4
20,360765   -0,17471638   -15,427291   -0,007077895   126,91802   4
20,362925   -0,16782136   -15,406614   -0,007111499   126,88654   4
44,417969   -0,21608655   -20,834217   -0,007748697   408,45206   5
44,419857   -0,20919153   -20,568867   -0,007720263   408,45206   5
44,422016   -0,20574401   -20,286287   -0,007680842   408,48355   5
47,395302   0,62855422   22,29023   0,00790014   433,86285   6
47,39719   0,63544929   22,228199   0,007907249   433,83136   6
47,399349   0,62855422   22,147217   0,007904665   433,86285   6

 


Hier ist mein neuer Code, hab es schonmal mi eval probiert, aber nicht geschafft ;( bzw. oft gelesen das es bei grossen Datenmengen ineffizient ist?
Für Hilfe wär ich dankbar

Code:

% Werte aus Excel holen
A=xlsread('Beispiel_Block_Datei_sortiert');


a=1; % startsegment
b=10; % endsegment

i=1; %start Read variable
y=1; %start Wert nur, wird in while2 gefüllt

while a<b


while  y==a
   

   
 
   
   
    %Zeile i, spalte 1-6, kopieren
    B(i,1)=A(i,1);
    B(i,2)=A(i,2);
    B(i,3)=A(i,3);
    B(i,4)=A(i,4);
    B(i,5)=A(i,5);
    B(i,6)=A(i,6);
   
    i=i+1;
    y=A(i,6); % Schauen bei welchem Segment
   
   
end

   

 a=a+1 ;
end
 B
 



Eine 2te Frage.
Kann ich dann später mit den einzelnen Matrizen Bi gut arbeiten? Hintergrund: Matrizen Bi si nd Funktionswerte, welche ich später analysieren muss, sprich integral u.s.w.
Bzw. Werte aus einzelnen Matrizen Bi berechnen und in eine neue Matrize schreiben um u.s.w.


Danke und schönes WE noch
Private Nachricht senden Benutzer-Profile anzeigen
 
sbmiles21
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 16.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.06.2012, 13:23     Titel:
  Antworten mit Zitat      
mhh oder ist es praktischer ein struct array zu erstellen?

Wie geschrieben, jedes "Segment" also jede Bi Matrix stellt eine Funktion da, die ich auswerten muss .

Integral und später zu jedem Segment diverse Werte, welche ich in Diagrammen darstellen muss ( am besten in excel exportieren, damit man ein Diagramm erstellen kann).


Eine Ergebnis Matrix wäre z.B.:

Code:

Excel Datei:

Segment   Max. Weg
1                   200
2                    300
3                      100
4                    700
...                      .....

 
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.