-
Notifications
You must be signed in to change notification settings - Fork 0
/
consisteespec.py
127 lines (89 loc) · 2.93 KB
/
consisteespec.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# -*- coding: utf-8 -*-
#
#consistencia dos espectros dos dados brutos de boias meteo-oceanograficas
#
# Autores:
# Henrique P. P. Pereira
# Izabel C. M. Nogueira
# Ricardo M. Campos
# Carlos E. Parente
# Fabio Nascimento
#
# Data da ultima modificacao: 05/02/2014
#
# Testes:
# 1 - Validade da mensagem recebida (nome do arquivo)
# 2 - Comprimento da serie
# 3 - Gap
# 4 - Spike
# 5 - Flat
# 6 - Consecutivos nulos
# 7 - Consecutivos iguais
# 8 - Range grosseiro
# 9 - Range regional
#
# ================================================================================== #
#importa bibliotecas
import numpy as np
import pylab as pl
import copy as cp
# ================================================================================== #
def freq_range(fp,iminf,imaxf,lminf,lmaxf,flag):
'''
FAIXA DE FREQUENCIA OPERACIONAL
* Verifica se a frequencia de pico esta nos limites aceitaveis
Dados de entrada: fp - frequencia de pico
iminf - freq. minima do instrumento
imaxf - freq. maxima do instrumento
lminf - freq. minima local
lmaxf - freq. maxima local
Dados de saida: flag = vetor de flag preenchido
Aprovado : flag = '1'
Suspeito : flag = '3'
Reprovado : flag = '4'
'''
if fp > imaxf or fp < iminf:
flag = flag + '4'
elif fp > lmaxf or fp < lminf:
flag = flag + '3'
else:
flag = flag + '1'
return flag
# ================================================================================== #
def checkratio(h,k,sn,snx,sny,flag):
'''
CHECKRATIO
* Compara numero de onda medido e teorico
Dados de entrada: h - profundidade
k - numero de onda da teoria linear
snx - auto-espec de dspx
sny - auto-espec de dspy
* ver descricao das matrizes em 'espec.py'
Dados de saida: flag = vetor de flag preenchido
kf = numero de onda medido
rf = vetor de checkratio
rf_med = valor medio do ckeckratio
Aprovado : flag = '1'
Reprovado : flag = '3'
'''
f = sn[:,0] #vetor de frequencia
c11 = sn[:,2] #auto-espec de heave
c22 = snx[:,2] #auto-espec de dspx
c33 = sny[:,2] #auto-espec de dspy
#numero de onda do instrumento (medido)
kf = np.real(np.sqrt(c11 / (c22+c33)))
#check-ratio
rf = (1 / (np.tanh(k) * h) ) * kf
#valor medio de check-ratio na frequencia de energia
rf_med = np.mean([rf[1:12]])
if rf_med < 0.9 or rf_med > 1.1:
flag[0] = flag[0] + '3'
flag[1] = flag[1] + '3'
flag[2] = flag[2] + '3'
else:
flag[0] = flag[0] + '1'
flag[1] = flag[1] + '1'
flag[2] = flag[2] + '1'
return flag, kf, rf, rf_med
# ================================================================================== #
#espectro de fase