adminv15
Ominide
4 min. di lettura
Vota

Concetti Chiave

  • Il programma filtra dati misurati eliminando errori di misura superiori al 5% e sostituendoli con valori interpolati.
  • Il primo valore nel file di dati è sempre considerato corretto e serve come riferimento per le interpolazioni successive.
  • Se tutti i valori successivi a un certo punto sono scorretti, vengono sostituiti con l'ultimo valore corretto registrato.
  • L'interpolazione lineare viene calcolata tra il valore corretto precedente e quello successivo a una sequenza di valori non attendibili.
  • Il programma genera un nuovo file con estensione .WOK e visualizza a video il numero di valori interpolati.

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 funzione principale del programma descritto nel testo?
  2. Il programma ha lo scopo di filtrare i dati misurati da uno strumento, eliminando gli errori di misura e sostituendoli con valori interpolati linearmente.

  3. Come viene determinata la correttezza di un valore misurato?
  4. Un valore è considerato corretto se la variazione rispetto al valore precedente non supera il 5% in valore assoluto.

  5. Cosa succede se si incontrano valori non attendibili consecutivi nel file?
  6. I valori non attendibili vengono sostituiti con valori interpolati linearmente tra l'ultimo valore corretto e il primo valore corretto successivo.

  7. Come viene calcolato un valore interpolato?
  8. Il valore interpolato è calcolato usando la formula: \(d_{interp} = d_{ultimo} + \left(\frac{index \cdot (d_{primo} - d_{ultimo})}{seq\_non\_att + 1}\right)\), dove index è la posizione del valore non attendibile nella sequenza.

  9. Cosa accade se tutti i valori successivi a un certo punto sono non attendibili?
  10. Se tutti i valori successivi sono non attendibili, essi vengono sostituiti con l'ultimo valore corretto trovato.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community