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

vektoren mit unterschiedlichen längen

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.09.2012, 11:56     Titel: vektoren mit unterschiedlichen längen
  Antworten mit Zitat      
hallo matlab-profis!

bin noch ziemlich neu im Umgang mit Matlab und habe wahrscheinlich ein simples Problem.
Ich möchte mehrere txt-Files einlesen, das hat auch funktioniert, danach habe ich mir den Inhalt der Files rausgelesen:

Code:

c = textscan(file,'%f32 %f32','Headerlines',1);
fclose(file);
a = c{1,1};
b = c{1,2};
 


Und das jetzt für 10 Files (habe also die Vektoren b bis b9). Die Werte aus den b-Vektoren möchte ich jetzt elementeweise zusammenzählen und da komm ich jetzt zu den Problem. Leider sind diese Vektoren nicht immer gleich lang zB. ist b = 1x170, b2 = 1x135, b7 = 1x171 ...
Ich weiss, dass es die Möglichkeit gibt die Vektoren auf gleiche Länge zu bekommen, mit den NaN, aber leider weiss ich nicht, wie ich das angehen soll.

Hoff ihr könnt mir dabei helfen.

LG


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.09.2012, 13:38     Titel: Re: vektoren mit unterschiedlichen längen
  Antworten mit Zitat      
Hallo,

Zunächst würde ich die Daten auf keinen in die Variablen "b" bis "b9" schreiben, sondern unbedingt "b{1}" bis "b{9}" verwenden. Das ist deutlich einfacher und eine Erweiterung auf eine höhere Anzahl von Files ist trivial.

Das addieren zweier Vektoren unterschiedlicher Länge geht in Matlab so:
Code:
a = rand(1, 5);
b = rand(1, 10);
na = length(a);
nb = length(b);
if na >= nb
  r = a;
  r(1:nb) = r(1:nb) + b;
else
  r = b;
  r(1:na) = r(1:na) + a;
end

Es gibt viele weitere einfache Methoden, z.B. das Aufüllen des kürzeren mit Nullen.
Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.09.2012, 15:48     Titel:
  Antworten mit Zitat      
Danke, hat auf jeden Fall schon mal funktioniert!
Wie könnte ich z.B. die Vektor mit Null auffüllen?

LG
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.09.2012, 16:47     Titel: Re: vektoren mit unterschiedlichen längen
  Antworten mit Zitat      
Hallo,

Versuche es einfach mal. Das Grundprinzip ist:
Code:
x = rand(1, 5)
x(10) = 0;  % Füllt 6:10 automatisch mit Nullen

Hilfreich ist dabei auch die MAX() Funktion.

Gruß, Jan
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.