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

if-Schleife:Tabelle teilen und Teile in cell-array speichern

 

Tüden
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 03.04.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.04.2019, 15:29     Titel: if-Schleife:Tabelle teilen und Teile in cell-array speichern
  Antworten mit Zitat      
Hallo liebes Forum!

Eine Matlab-Anfängerin hier.
Ich habe folgendes Problem:

Ich habe Daten in Form einer zweispaltigen Tabelle (A) mit 142 Zeilen. Bei den Werten in der linken Spalte handelt es sich um Lastwerte, bei denen in der rechten um Zeitwerte.

Mit meinem Skript möchte ich nun erreichen, dass die Tabelle nach jeder t-ten Zeiteinheit geteilt wird. Die resultierenden Teilen sollen in den Zellen eines Cell-arrays (B) gespeichert werden.

Dieses Problem habe ich mit einer einfachen for Schleife gelöst.
Nun kommt aber noch ein Zusatz: Die Teilung soll nur dann stattfinden, wenn die letzten beiden Werte der linken Spalte vor der Teilung identisch sind, ist dies nicht der Fall, soll ein Wert weitergangen gegangen werden und dort geteilt werden.

Mein Ansatz ist eine if else if Schleife:

Code:
%%Daten erstellen
v=0.1+(50-0.1)*rand(142,1);
v=sort(v);
u=1+(100-1)*rand(71,1);
u=reshape(repmat(u(:)',2,[]),[],1);
A=[u,v];

numIters=13; %% Anzahl der Teilungen
t=A(end,2)/numIters; %% Variable t ergibt sich aus der Anzahl der Teilungen und der Endzeit
k=1; %%Laufvariable
B = cell(numIters,1); %%  B wird definiert

for i=1:length(A)
    if (A(i,2) >= t*k && A(i,1) == A(i+1,1))
       B {k,1} =A(1:i+1,:);
       A=A(i+2:end,:);
          k=k+1;
    elseif (A(i,2) >= t*k)
        B {k,1} =A(1:i+2,:);
        A=A(i+3:end,:);
           k=k+1;
    else  
        continue
       k=k+1;
    end



Der Ansatz funktioniert nicht, da A bei jedem Durchlauf kleiner wird und es dann mit dem i nicht mehr passt.

Hat jemand eine Idee für einen anderen Ansatz?
Ich hoffe das Problem ist verständlich dargestellt.

Liebe Grüße und vielen Dank!

Tüden
Private Nachricht senden Benutzer-Profile anzeigen


Tüden
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 03.04.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.04.2019, 10:12     Titel:
  Antworten mit Zitat      
FYI: Habe die Lösung durch ein anderes Forum erhalten:
https://www.mathworks.com/matlabcen.....ray?s_tid=prof_contriblnk
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 - 2024 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.