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

mittelwert teilergebnisse bilden

 

he27633

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2023, 12:53     Titel: mittelwert teilergebnisse bilden
  Antworten mit Zitat      
hallo zusammen,

ich habe ein Problem mit Matlab und ich brauche eure Hilfe.

ich will den mittelwert aus den Werten bilden, die zwischen die NaN sind. also in diesem fall soll ich 4 mittelwerte bekommen
ich habe es so versucht aber hat leider nicht geklappt.

es wäre sehr nett, falls jemand mir helfen kann.

liebe Grüße
Hedro

Code:


data = [3.75 3.75 3.75 3.75 3.25 NaN 3.75 5.5 65.5 5.5 NaN 66.25 6.25 65.5 5.25 55 55.2  5.25 NaN 5 56  56  96 ];

nan_indices = isnan(data); % findet die Indizes der "NaN"
start_indices = find(diff([0 nan_indices 0]) == 1); % findet die Startindizes der Abschnitte ohne "NaN"
end_indices = find(diff([0 nan_indices 0]) == -1)-1; % findet die Endindizes der Abschnitte ohne "NaN"

num_data_sections = length(start_indices); % Anzahl der Datenabschnitte
means = zeros(1,num_data_sections); % initialisiere einen Vektor für die Mittelwerte

for i = 1:num_data_sections
    section = data(start_indices(i):end_indices(i));
    means(i) = mean(section);
end



 


Harald
Forum-Meister

Forum-Meister


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

bitte immer dazu schreiben, was nicht geklappt hat.
Wenn du dir die Variablen start_indices und end_indices ansiehst, stimmt da ja ein bisschen was nicht.
* start_indices und end_indices sind gleich.
* start_indices beginnt nicht mit 1.
* end_indices endet nicht mit 23.

Vielleicht kann man das etwas einfacher angehen:
Code:
start_indices = find(isnan(data(1:end-1)) & ~isnan(data(2:end))) + 1;
if ~isnan(data(1))
    start_indices = [1, start_indices];
end

So stimmen schon mal die start_indices. end_indices kann man entsprechend erstellen.

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
 
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.