Tengo que estimar un índice de ignición (adjunto la tabla con los valores predeterminados, ignicion.jpg), que depende de la temperatura y de una humedad, donde este último va de 2 a 17, y debe calcularse a diario (también les adjunto los archivo de temperatura y humedad).
Hice un código, pero solo para el primer rango de temperatura que es de 30 a 39 °F y sólo para el primer valor de cada matriz.
En esto quiero pedirles su ayuda y orientación, para que sea óptimo el cálculo para cada rango de temperaturas y su humedad, y por supuesto la matriz resultante (9x19) guardarla en un archivo.
Muchas gracias.
Using perl Syntax Highlighting
- #!/usr/bin/perl
- use strict;
- use warnings;
- my (@tmp, @hcfm, $pi, @PI);
- for my $files (glob("*_TMP.txt *_CFM.txt")) {
- my $name=substr($files,0,-8);
- my $f1 = $name . '_TMP.txt';
- my $f2 = $name . '_CFM.txt';
- my $f3 = $name . '_PI.txt';
- open( PI, '>', $f3);
- open( TMP, '<', $f1);
- while( <TMP> ) {
- chomp;
- my @rowtmp = split;
- push (@tmp, \@rowtmp);
- }
- close (TMP);
- open( HCFM, '<', $f2);
- while( <HCFM> ) {
- chomp;
- my @rowhcfm = split ;
- push (@hcfm, \@rowhcfm);
- }
- close (HCFM);
- # foreach my $fila ( 0 .. 8 ){
- # foreach my $columna ( 0 .. 18) {
- if (($tmp[0][0] >= 30) && ($tmp[0][0] <= 39) && ($hcfm[0][0] <= 2)) {$PI[0][0] = 80}
- if (($tmp[0][0] >= 30) && ($tmp[0][0] <= 39) && ($hcfm[0][0] == 3)) {$PI[0][0] = 70}
- if (($tmp[0][0] >= 30) && ($tmp[0][0] <= 39) && ($hcfm[0][0] == 4)) {$PI[0][0] = 60}
- if (($tmp[0][0] >= 30) && ($tmp[0][0] <= 39) && ($hcfm[0][0] == 5)) {$PI[0][0] = 50}
- if (($tmp[0][0] >= 30) && ($tmp[0][0] <= 39) && ($hcfm[0][0] == 6)) {$PI[0][0] = 50}
- if (($tmp[0][0] >= 30) && ($tmp[0][0] <= 39) && ($hcfm[0][0] == 7)) {$PI[0][0] = 40}
- if (($tmp[0][0] >= 30) && ($tmp[0][0] <= 39) && ($hcfm[0][0] == '8')) {$PI[0][0] = 30}
- if (($tmp[0][0] >= 30) && ($tmp[0][0] <= 39) && ($hcfm[0][0] == 9)) {$PI[0][0] = 30}
- if (($tmp[0][0] >= 30) && ($tmp[0][0] <= 39) && ($hcfm[0][0] == 10 or $hcfm[0][0] == 11 or $hcfm[0][0] == 12)) {$PI[0][0] = 20}
- if (($tmp[0][0] >= 30) && ($tmp[0][0] <= 39) && ($hcfm[0][0] == 13 or $hcfm[0][0] == 14 or $hcfm[0][0] == 15)) {$PI[0][0] = 10}
- # print PI @PI;
- print PI (join("\t", @$_), "\n") for @PI;
- close PI;
- # }}
- }
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4