Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Finanzmathematik mit MATLAB

Studierende:
weitere Angebote

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Lineare Trendsuche bei Zeitreihenanalyse

 

InesE
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 02.05.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.05.2022, 12:08     Titel: Lineare Trendsuche bei Zeitreihenanalyse
  Antworten mit Zitat      
Hallo Zusammen,

ich benötige dringend Eure Hilfe.

Ich habe von verschiedenen Probanden Zeitreihen für diverse Parameter. Ich möchte die verschiedenen Parameter auf lineare (später auch quadratische) Trends zu untersuchen und die Effektstärken(Choens-d) der Trends vergleichen.

Damit ihr seht, was ich bisher habe, folgt mein Code:

Code:


for iG= 1:length(einlesen.flistG)
        einlesen.loadnameG = fullfile(einlesen.flistG(iG).folder, einlesen.flistG(iG).name);
        g= readmatrix(einlesen.loadnameG);
        einlesen.loadnamef = fullfile(einlesen.flistFrames_G(iG).folder, einlesen.flistFrames_G(iG).name);
        fG= readmatrix(einlesen.loadnamef);
        %%  Berechnung der einzelnen Parameter
        for iparam=3:length(g(1,:))
            Gait = rmmissing(g(:,[1,2,iparam]));
            %Standardabweichung & Mittelwert berechnen von orginal Daten (Gait)
            Gehen.Std_G(iG,iparam)= std(Gait(:,3));
            Gehen.Mean_G(iG,iparam)= mean(Gait(:,3));
            %Detrenden und Std. berechnen
            Gehen.detrendG=Frames(fG,Gait,lambda);
            Gehen.detrendG_std(iG,iparam)=std(Gehen.detrendG);
            %SD des Trends berechen
            Gehen.detrendG_diff(iG,iparam)=std(Gait(1:50,3)-Gehen.detrendG(1:50));
            %Rmssd berechnen normal und von Detrending-Datein
            Gehen.Rmssd(iG,iparam)=Rm(Gait(1:50,:));
            Gehen.RmssdDe(iG,iparam)=Rm([Gait(1:50,1:2) Gehen.detrendG(1:50)]);
            %LinearerTrend berechnen
            Gehen.LinTrend(iG,iparam)=getTrend(Gait(:,3));
         
        end
       
    end

 


Folgende Fehlermeldung wird mir angezeigt:
- Check for missing argument or incorrect argument data type in call to function 'getTrend'.

Habt Ihr eine Idee, was ich verändern muss?
Oder eine andere bessere Code-Idee um den linearen/quadratischen Trend zu berechnen?

Vielen Dank im Voraus und viele Grüße,
Ines
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.170
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.05.2022, 19:07     Titel:
  Antworten mit Zitat      
Hallo,

die Funktion getTrend benötigt laut Doku ein iddata - Objekt.

Ich würde eher fitlm verwenden und mir den p-Wert des linearen bzw. quadratischen Terms ansehen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
InesE
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 02.05.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2022, 11:26     Titel:
  Antworten mit Zitat      
Hallo,

ich habe mich jetzt nochmal für eine andere Methode entschieden.
Da mein Datensatz etwas komplex ist, und zwar:
Ich habe Gangdaten, welche kontinuierlich aufgezeichnet werden. Die Probanden gehen eine Strecke dauernd hin und zurück für eine bestimmte Zeit. Ich will diese Truns nicht in meiner Auswertung haben, deshalb muss ich die beiden Datein (Gangaten und Frames) abgleichen.

Deshalb habe ich Funktionen geschrieben:


function trendlin=Frames2(f,g)

for iframes=1:length(f(:,1))
    ind=[];
    for istrides=1:length(g(:,1))
        if  g(istrides,1)>= f(iframes,1) && g(istrides,2)<= f(iframes,2)
            ind=[ind,istrides];
        end
    end
    %Parameter übergeben
    gneu2=g(ind,:);
    %hier linear pro Frame detrenden
    if length(ind)>3
        if length(ind)==2
            trendlin(ind,:)=nan;
        else
            trendlin(ind,:)=DetrendLin(gneu2);
           
        end
    end
end

 



und




function [trendlin,trend]  = DetrendLin(M)
       
        trend=M(:,3);
        trendlin=detrend(trend);
end

 



Welche ich im Hauptprogramm aufrufe:
Code:

%LinearerTrend berechnen
            Gehen.detrendG_lin=Frames2(fG,Gait);
 



Das Programm läuft durch, aber ich habe ein "Hinweis" welchen ich nicht einordnen kann:

Zitat:

qOutput argument "trendlin" (and maybe others) not assigned during call to "Frames2".



wisst Ihr was das bedeutet und woran es liegen könnte?

Vielen Dank für Eure Hilfe im voraus und beste Grüße,
Ines
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.170
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.05.2022, 15:18     Titel:
  Antworten mit Zitat      
Hallo,

MATLAB kann nicht nachvollziehen, ob der Variable trendlin je ein Wert zugewiesen wird.

Falls möglich, kannst du die Variable vorbelegen, z.B. mit zeros . Ansonsten z.B. am Anfang des Codes auf [] setzen.

Die if-Abfrage kannst du weglassen, da der Code aufgrund der vorherigen Abfrage nur bei length(ind)>3 erreicht wird:
Code:
      if length(ind)==2
            trendlin(ind,:)=nan;
        else


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
InesE
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 02.05.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2022, 07:53     Titel:
  Antworten mit Zitat      
Hallo,

nach einem Neustart von Matlab, war der Hinweis nicht mehr da. Smile
Die if-Abfrage habe ich rausgenommen.

Vielen Dank für die Hilfe und viele Grüße,
Ines
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2022 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.