Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    7

    Media mobile su array

    Salve a tutti scrivo il mio primo post sul forum perchè ho un problema e non essendo sperto di programmazione, non capisco se questo problema è dovuto alla scarsa qualità del mio codice, o a limiti hardware del mio telefono su cui sto testando l'applicazione; ma venendo al sodo vorrei che qualcuno molto gentilmente mi aiutasse a fare ciò:
    Devo creare una funzione che prenda come input dei dati che mi fornisce un sensore e li memorizzi in un array, successivamente la funzione dovrebbe calcolare la media su un numero di elementi dell' array che io posso scegliere tramite un parametro, e memorizzarli su un altro array che poi mi deve essere ritornato. spero di essermi spiegato. Io ho provato a scrivere la mia funzione che però nella mia versione, anzichè ritornare un vettore con dentro i valori medi, ritorna solamente il valore medio istante per istante.
    Ecco il mio codice:

    codice:
    private double mediaMobile(double[] sensData, int win) 
    { 
    if(ok == false & cont<win)   
    {
         window[cont]=sensData[cont]; 
         cont++;
    } 
    else if (cont == win)   
    {
         double sommatoria = 0; 
         for (int ix = 0; ix < win; ix++)   
         {
         sommatoria += window[ix]; 
         } 
         med = sommatoria/win;
         for (int k=0; k<win; k++)   
         {
         window[k] = sensData[cont-win+1+k]; 
         } 
         cont++; 
    } 
    else if (ok == true & cont > win) 
    { 
         double sommatoria = 0; 
         for (int ix = 0; ix < win; ix++)   
         {
              sommatoria += window[ix]; 
         }
         med = sommatoria/win; 
         for (int k=0; k<win; k++)  
         {
              window[k] = sensData[cont-win+1+k]; 
          }
         cont++;
    }
    else if(ok==false & cont >win)   
    {
         ok = true;
    } 
    return med; }

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    benvenuto

    Primo consiglio: prendi in mano un manuale/tutorial e dacci un giro, a cominciare dalla copertina... ci sono un po' di cosine da correggere prima che sia troppo tardi.

    Prima cosa: boolean. Li hanno inventati per qualcosa... non serve fare confronti tipo ok == true, ok == false
    codice:
    if (!ok && ...
    equivale a if (ok == false && ...)

    Seconda cosa: le graffe! E' vero che se un if o un else hanno da racchiudere una sola istruzione, le graffe si possono omettere... ma, prendila per buona abitudine, mettile sempre lo stesso. Magari tra un mese dovrai fare un po' di debug, metterai dai System.out.println qui e lì per vedere dove ti trovi a livello di codice, e senza quelle graffe che avresti dovuto mettere da principio, rincorrerai brani di codice per tutto il notepad, o qualsiasi altri sistema/ide/programma stia usando per jav-are.


    Terza cosa, la ciccia: sei tu che stai ritornando un double nella dichiarazione del metodo... se volessi ritornare un array, dovresti -a parte rivedere il codice- quanto meno dichiarare il metodo:
    codice:
    private double[] mediaMobile(...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    7
    Per prima cosa, grazie! Sono pienamente consapevole che il mio codice è una schifezza, anche perché non sono un programmatore, mi serviva solamente ottenere una funzione che svolgesse quel lavoro, per quello che non mi sono curato dell'ottimizzazione del codice (come per i boolean e le graffe, chiedo scusa per questo!), poi per l'ultima parte forse mi sono spiegato male, in quanto ero consapevole del tipo ritornato. Comunque, nel frattempo sono riuscito a risolvere, o almeno credo, il mio problema Grazie lo stesso!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.