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

Schleifenbedingtes Martizen füllen

 

Timme_42
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 12.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.08.2014, 07:59     Titel: Schleifenbedingtes Martizen füllen
  Antworten mit Zitat      
Hallo zusammen,

ich habe ein Problem und hoffe das Ihr mir helfen könnt.
Das Problem ist folgendes:
Ich habe einige Files (i) mit jeweils Kraft (Y-Achse, =data2) und Weg(A-Achse, data3) verläufen. Es sind also 2 spalten mit 4000 Wertepaaren.

Die (i) Files werden beim einlesen alle geplottet.
[code]
for i=1:length(filepath)

hold on;
[BX] = plot(TDM(i).data(3).values(: ),TDM(i).data(2).values(: ),'color',TDM(i).farbe);

end

Das klappt wunderbar.
Jetzt möchte ich jedes Wertepaar einzeln analysieren und dazu zwei Matrizen erzeugen.
[code]
for j=1:length(filepath) %lenght filepath = i eingelesene Files
Laenge_Vektor=length(TDM(i).data(3).values(: )); % größe der Matritze
FX=zeros(Laenge_Vektor,j); %HIER SOLLEN ALLE WEGSINGNALE REIN
FY=zeros(i,Laenge_Vektor); % HIER SOLLEN ALLES KRAFTSIGNALE REIN
FX(:,j)=TDM(i).data(3).values(: ); %Werte der eingelesen Files in einer Spalte schreiben

end

Als Ergenis bekomme ich zwar die Matritzen FX und FY erzeugt, aber lediglich die letzte Spalte/Zeile ist mit Werten gefüllt und alle vorherigen Zeilen/Spalten sind mit Null belegt. Wo ist mein Fehler?[/code]

Ein weiteres Problem ist die Varianz der Files, manches hat 3900 Wertepaare, manches 4000 etc.
wie muss FX defniert werden, dass die größte Wertepaarzahl die max. Spaltenlänge vorgibt und andere Spalten mit weniger Wertepaaren entsprechend mit Null gefüllt werden?
Private Nachricht senden Benutzer-Profile anzeigen


PinkySan
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 28.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.08.2014, 10:20     Titel:
  Antworten mit Zitat      
Moin,

in deiner Schleife überschreibst du immer wieder mit

Code:

FX=zeros(Laenge_Vektor,j); %HIER SOLLEN ALLE WEGSINGNALE REIN
FY=zeros(i,Laenge_Vektor); % HIER SOLLEN ALLES KRAFTSIGNALE REIN
 


deine Zielvariable FX. Nur beim letzten Durchlauf wird sie nicht wieder neu überschrieben und daher sind lediglich in der letzten Spalte deine Werte

Code:

% Speicherplatzallokation
Spalten=length(filepath);
Zeilen=length(TDM(i).data(3).values(: ));
FX=zeros(Zeilen, Spalten);
FY=FX;

for j=1:Spalten
% Was ist hier das "i"??
FY(:,j)=TDM(i).data(2).values(: );
FX(:,j)=TDM(i).data(3).values(: );
end

 


ich habe zwar die Daten nicht, aber so in etwa könnte es klappen.

P.S.: Achte bitte auf deine Formatierung. Es ist schwer bei dir den Code zu entdecken Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Timme_42
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 12.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.08.2014, 10:44     Titel:
  Antworten mit Zitat      
Hi,

jetzt tritt das Probelm was ich auch schon hatte.
Ich bekomme beide Spalten/Zeilen der Matritze gefüllt, aber mit den immer gleichen Werten. Also Werte aus einer DAtei (ich habe eine potentieller Gleichheit überprüft Smile ).

Dann habe ich deine Speicherallokation in die erste Schelife gepackt:
Code:
for i=1:t
%     j=i;
    hold on;
    [BX] = plot(TDM(i).data(3).values(:),TDM(i).data(2).values(:),'color',TDM(i).farbe);
    Spalten=length(filepath);
    Zeilen=length(TDM(i).data(3).values(: ));
    FX=zeros(Zeilen, Spalten);
    FY=FX;

% for j=1:t
% Was ist hier das "i"??
FY(:,j)=TDM(i).data(2).values(: );
FX(:,j)=TDM(i).data(3).values(: );
end
 


Das i steht immer für das i-te file welches eingelesen wird.
In ideser konstellation werden z.b. beim einlesen von i=3 Dateien die richtige Anzahl an Spalten und Zeilen angelegt, aber nur die mittlere mit Werten gefüllt.
Private Nachricht senden Benutzer-Profile anzeigen
 
PinkySan
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 28.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.08.2014, 12:19     Titel:
  Antworten mit Zitat      
Code:

% Speicherplatzallokation
Spalten=length(filepath);
Zeilen=length(TDM(i).data(3).values(: ));
FX=zeros(Zeilen, Spalten);
FY=FX;

for j=1:Spalten
FY(:,j)=TDM(j).data(2).values(: );
FX(:,j)=TDM(j).data(3).values(: );
end
 


Jetzt wird der Inhalt von TDM(j).data(2).values in die Spalte FY(:,j) geschrieben. Entspricht denn "filepath" der Anzahl der zu erzeugenden Spalten???
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.