Concetti Chiave

  • Il programma filtra i dati di misurazione eliminando errori e sostituendoli con valori interpolati linearmente.
  • La variazione accettabile per considerare un valore corretto è del più o meno 5% rispetto al valore precedente.
  • Se si trovano valori non attendibili consecutivi, vengono sostituiti con valori calcolati tra l'ultimo e il primo valore corretto successivo.
  • Il programma genera un file di output con lo stesso nome del file di input, ma con estensione .WOK.
  • Alla fine dell'esecuzione, viene mostrato il numero totale di valori interpolati a video.

Il è controllato tramite uno strumento solitamente molto preciso; tuttavia a causa delle condizioni atmosferiche il valore misurato ogni tanto è inattendibile.

Considerando che il livello dellacqua nel bacino non può subire variazioni improvvise, si definisce accettabile una variazione dell'acqua,tra due misurazioni successive prese a intervallo temporale costante,del più o meno 5 per cento, mentre si devono scartare come errori di misura tutte quelle superiori al 5 per cento in valore assoluto.

Lo strumento memorizza su un file, sotto forma di numeri reali con 3 cifre decimali, un dato per ciascuna riga. Il file ha estensione .WD

Si vuole realizzare un programma per filtrare i dati misurati dallo strumento, eliminando gli errori di misura e sostituendoli con valori interpolati linearmente secondo le regole di seguito descritte:

  • Il primo valore riportato nel file si assume sempre corretto.
  • Se dopo un valore corretto appare un valore scorretto, cioè con variazione maggiore in valore assoluto del 5 per cento, allore bisogna considerare i valori successivi fino a trovare un valore corretto.
  • Una volta trovato il valore corretto successivo,i valori scorretti vanno quindi sostituiti da valori interpolati linearmente tra i due valori corretti agli estremi dellintervallo.
  • Se a partire da un certo momento tutti i valori fossero scorretti fino alla fine del file allora tali valori saranno sostituiti con l'ultimo valore corretto.

Il programma riceve come primo argomento della linea di comando il nome del file contente le misure (senza estensione .WD ) e deve generare un file con lo stesso nome e formato ed estensione .WOK. Inoltre al termine dell'esecuzione, il programma deve visualizzare a video il numero dei valori interpolati.

Ad esempio, se il file PROVA.WD contiene:

 1332.230 1331.900 1331.870 1331.652 1783.265 *** 1331.500 1331.470 12.230 *** -236.340 *** 1331.230 

Lanciando il programma con: PROG.EXE PROVA, verrà  generato il file PROVA.WOK contenente:

 1332.230 1331.900 1331.870 1331.652 1331.576 *** 1331.500 1331.470 1331.390 *** 1331.310 *** 1331.230 

e il messaggio a video: Interpolate 3 misure non attendibili

NOTA:

Nell'esempio i valori con *** corrispondono alle misure non attendibili nel file PROVA.WD e ai valori interpolati nel file PROVA.WOK

Se chiamiamo
[math]d_{ultimo}[/math]
l'ultimo valore corretto prima di un valore non attendibile,
[math]seq\_non\_att[/math]
il numero di valori non attendibili consecutivi e
[math]d_{primo}[/math]
il primo valore corretto dopo la sequenza di valori non attendibili, il valore interpolato sarà  pari a:
[math]d_{interp} = d_{ultimo} + (((index \cdot (d_{primo} - d_{ultimo}))/(seq\_non\_att + 1)))[/math]

Dove

[math]in dex[/math]
è la posizione,a partire da 1, del valore non attendibile all'interno della sequenza composta da seq_non_att valori non attendibili.

Riguardo alla correttezza o meno dei dati successivi ad un primo dato scorretto, si deve osservare che il margine di errore con cui si devono fare i confronti per stabilire la correttezza o meno del dato corrente con l'ultimo valore corretto cresce del 5 per cento per il primo dato al 10 per cento per il secondo, al 15 per cento per il terzo, e così via.

Nel nostro esempio, si nota come ci siano due casi in cui si hanno sequenza di valori non attendibili. Nel primo caso d_ultimo è pari a 1331.652, d_primo è 1331.500, seq_non_att è pari a 1 e quindi index potrà  valere soltanto 1. Il valore d_interp sarà  quindi pari a 1331.576

Soluzione: download sorgente

 

Domande da interrogazione

  1. Qual è la tolleranza accettabile per le variazioni del livello dell'acqua tra due misurazioni?
  2. La tolleranza accettabile per le variazioni del livello dell'acqua è del più o meno 5 per cento tra due misurazioni successive, mentre le variazioni superiori al 5 per cento in valore assoluto devono essere scartate come errori di misura.

  3. Come viene gestito un valore non attendibile nel file di misurazioni?
  4. Un valore non attendibile viene sostituito con valori interpolati linearmente tra il valore corretto precedente e il valore corretto successivo, se presente. Se tutti i valori successivi sono scorretti, vengono sostituiti con l'ultimo valore corretto.

  5. Qual è il formato del file contenente le misurazioni e quello generato dal programma?
  6. Il file contenente le misurazioni ha estensione .WD, mentre il file generato dal programma avrà lo stesso nome e formato, ma con estensione .WOK.

  7. Come viene calcolato il valore interpolato per i dati non attendibili?
  8. Il valore interpolato è calcolato utilizzando la formula: \(d_{interp} = d_{ultimo} + \left(\frac{index \cdot (d_{primo} - d_{ultimo})}{(seq\_non\_att + 1)}\right)\), dove \(d_{ultimo}\) è l'ultimo valore corretto, \(d_{primo}\) è il primo valore corretto dopo la sequenza di valori non attendibili, e \(index\) è la posizione del valore non attendibile.

  9. Cosa deve fare il programma al termine della sua esecuzione?
  10. Al termine dell'esecuzione, il programma deve visualizzare a video il numero dei valori interpolati e generare un file con le misurazioni corrette e interpolate.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community