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

aus importierten Daten einen neuen Vektor erzeugen

 

Calgar

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2010, 23:24     Titel: aus importierten Daten einen neuen Vektor erzeugen
  Antworten mit Zitat      
Hallo zusammen,
Ich bin (wie so oft vermutlich) ein Matlab-Neuling und sitze an einem Projekt. Bisher konnte ich mich ganz gut durch Simulink und Matlab beißen, jetzt aber muss ich euch fragen. Wink

mittels uiimport, importiere ich Daten aus einem Excelfile. Das File hat 4 Spalten und 3458 Zeilen. In der ersten Spalte steht die Zeit die in Excel über die Formel (A3-1120369)/1000 in Sekunden umgerechnet wird. Dabei ist A3 eben in jeder Zeile +1, A4, A5, A6 - Aende der Exceltabelle.

Nun soll diese Umrechnung nicht in Excel sondern in Matlab oder Simulink (was eben einfacher ist) gemacht werden.

Mein Ansatz war bisher:

w = input('Geben Sie die Anzahl der Datensätze ein: ');
for i=3:w;
t=(data(i,1)-data(2,1))/1000;
i=i+1;
end

W=Anzahl der Zeilen, muss in diesem Fall der User wissen...
Da die Werte in der Exceltabelle erst in Zeile 3 beginnen läuft i von 3 - w. Die Variable t soll dann eigentlich der Vektor werden der für alle Zeilen der Exceltabelle die neu berechnete Zeit enthält. Jedoch ist t nur eine Variable mit einem Wert. Wie bringe ich Matlab bei das t ein Vektor sein soll (Länge i - w) der mit den neuen Werten gefüllt wird?

Ist es möglich die Länge der Exceltabelle automatisch bestimmen zu lassen, ohne die vorherige Abfrage und Eingabe von w? Das funktioniert zwar auch, aber ist eigentlich getrickst und eher unschön...

Ich hoffe Ihr könnt mir helfen und mein "Problem" ist klar geworden.

Vielen Dank Smile


InspectorGadget
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 52
Anmeldedatum: 16.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2010, 00:13     Titel:
  Antworten mit Zitat      
Hi!!
Ist data die Variable, in der die importierten Daten stehen? Dann geht das nämlich auch schöner:
Zuerst verschieben wir die Infos in data um 3 nach links, so dass der erste Eintrag auch dem ersten "echten" Eintrag aus Excel entspricht.
Code:
data=data(3:end);

Dann gibt es eine Funktion, die genau das macht, was Du mit der Schleife gelöst hast:
Code:
t=diff(data)/1000;

Damit erhältst Du das gewünschte t.

Noch ein paar Tipps:
In Matlab sehen for-Schleifen nicht so aus, wie bei Dir. Richtig wäre:
Code:

Der for Befehl braucht keinen ";" . Die Iterationsweite wird mit dem mittleren Argument bestimmt. for a=x:y:z bedeutet von x bis z mit dem Zählschritt y. Wenn y=1 kann man das weglassen, das macht Matlab automatisch.

Viel Spass und Erfolg weiterhin!!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
InspectorGadget
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 52
Anmeldedatum: 16.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2010, 00:18     Titel:
  Antworten mit Zitat      
Ach so, falls Du wieder mal einen Vektor etc. in einer Schleife erstellen willst:
Code:
t= zeros(1,6);
for a=1:6
t(1,a)=.......;
end

Matlab ist schneller, wenn Variablen, die in Schleifen wachsen, schon vorher mit ihrer finalen Grösse bekannt sind. Darauf macht es Dich aber beim schriebn aufmerksam. Deswegen den Vektor t zuerst anlegen, und dann mit Daten füllen.
Noch eine Kleinigkeit am Rande: i und j sind in Matlab imaginäre Zahlen. Also besser nicht als Zählvariable benutzen Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Calgar

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2010, 09:44     Titel:
  Antworten mit Zitat      
Hi,

Das funktioniert ja prima. Vielen Dank!

Gibts noch die Möglichkeit das Matlab die Anzahl der Zeilen automatisch erkennt? Aktuell frage ich ja die Anzahl ab und speicher sie als Variable. Schöner wärs wenn Matlab automatisch die Anzahl Zeilen erkennt und ich damit dann die for-schleife laufen lassen kann.
 
Jan*
Forum-Century

Forum-Century


Beiträge: 178
Anmeldedatum: 06.11.09
Wohnort: ---
Version: R2007b
     Beitrag Verfasst am: 09.03.2010, 09:52     Titel:
  Antworten mit Zitat      
Hi,

wenn es um die Größenbestimmung von Arrays geht sind length, size und numel die Befehle deines Vertrauens:

Code:


Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Calgar

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2010, 17:43     Titel:
  Antworten mit Zitat      
super, eure Antworten sind echt hilfreich Smile
Danke!
 
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.