亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
求教各位大大們,這個(gè)問(wèn)題用perl怎么處理
[打印本頁(yè)]
作者:
mingoing
時(shí)間:
2014-02-27 09:37
標(biāo)題:
求教各位大大們,這個(gè)問(wèn)題用perl怎么處理
本帖最后由 mingoing 于 2014-02-27 11:31 編輯
33333.jpg
(36.05 KB, 下載次數(shù): 55)
下載附件
3
2014-02-27 09:23 上傳
7400000 8200000 -747.871582
8200000 8500000 -311.464386
8500000 9100000 -552.063538
9100000 9800000 -691.326904
9800000 10700000 -860.887024
10700000 11500000 -775.908630
11500000 12300000 -748.672424
12300000 13200000 -868.078918
13200000 14100000 -844.211609
14100000 14600000 -531.665039
14600000 15500000 -934.396790
15500000 16300000 -808.178162
16300000 17500000 -1163.265747
17500000 17900000 -425.282043
17900000 18900000 -937.942383
18900000 19600000 -743.132019
19600000 20800000 -1200.120850
20800000 21100000 -285.289520
先上圖,圖中每一行前兩個(gè)數(shù)字相當(dāng)于左端點(diǎn)右端點(diǎn),拿第一行來(lái)說(shuō),相當(dāng)于在[7400000, 8200000]范圍內(nèi)取值-747.871582。我想得到[8650000,9750000] ,[13250000,13950000],[17650000,18850000]這幾個(gè)范圍內(nèi)的值。PS:跨范圍的取加權(quán)平均。{:2_172:}
作者:
q1208c
時(shí)間:
2014-02-27 09:39
表示沒(méi)看懂.
在兩個(gè)整數(shù)區(qū)間里, 你想取個(gè) 負(fù)數(shù) ... ...
作者:
mingoing
時(shí)間:
2014-02-27 09:42
相當(dāng)于分段函數(shù)吧,前兩個(gè)數(shù)是分段函數(shù)的小段定義域
回復(fù)
2#
q1208c
作者:
xiumu2280
時(shí)間:
2014-02-27 10:16
本帖最后由 xiumu2280 于 2014-02-27 10:16 編輯
樓主的意思是不是 每一行取個(gè)平均值。
然后按照這個(gè)平均值,來(lái)算[8650000,9750000] ,[13250000,13950000],[17650000,18850000]這幾個(gè)區(qū)域分別的和?
還有不要用圖片給原始數(shù)據(jù)···怎么測(cè)試···
作者:
mingoing
時(shí)間:
2014-02-27 10:21
本帖最后由 mingoing 于 2014-02-27 10:22 編輯
這種理解也對(duì){:3_189:} ,數(shù)據(jù):
7400000 8200000 -747.871582
8200000 8500000 -311.464386
8500000 9100000 -552.063538
9100000 9800000 -691.326904
9800000 10700000 -860.887024
10700000 11500000 -775.908630
11500000 12300000 -748.672424
12300000 13200000 -868.078918
13200000 14100000 -844.211609
14100000 14600000 -531.665039
14600000 15500000 -934.396790
15500000 16300000 -808.178162
16300000 17500000 -1163.265747
17500000 17900000 -425.282043
17900000 18900000 -937.942383
18900000 19600000 -743.132019
19600000 20800000 -1200.120850
20800000 21100000 -285.289520
回復(fù)
4#
xiumu2280
作者:
mingoing
時(shí)間:
2014-02-27 10:32
比如計(jì)算[17650000,18850000]范圍內(nèi)的值:
(17900000-17650000)/(18850000-17650000)*(-425.282043)+(18850000-1790000)/(18850000-17650000)*(-937.942383)
作者:
mingoing
時(shí)間:
2014-02-27 10:32
本帖最后由 mingoing 于 2014-02-27 10:46 編輯
比如計(jì)算[17650000,18850000]范圍內(nèi)的值:設(shè)L=(18850000-17650000),L1=(17900000-17650000),L2=(18850000-1790000),那么最終得到:L1/L*(-425.282043)+L2/L*(-937.942383)
作者:
mingoing
時(shí)間:
2014-02-27 17:11
我把程序搞成這樣了
open A,"mono_align1\.mlf";
open L,"recout_mon16_phone1\.mlf";
open OUT,">","out.txt";
while (<A>){
chomp;
next if /MLF|lab/;
my ($data1,$data2,$phone1,$score1)=split/\s+/,$_;
print OUT "$_ ";
while (<L>){
chomp;
next if /MLF|rec/;
my ($data3,$data4,$phone2,$score2)=split/\s+/,$_;
if ($data1>$data3&$data2<$data4){
print OUT "$score2\n";
last;
}
if ($data1>$data3&$data2>$data4){
my $nnn=($data4-$data1)/($data2-$data1)*$score2;
print OUT "\"$_\"\n";
&handle($nnn, $data2, $_);
# my ($data4,$data5,$phone3,$score3)=split/\s+/,$_;
# if ($data2<$data5){
# $nnn=$nnn+($data2-$data4)/($data2-$data1)*$score3;
# print OUT "$nnn\n";
last;
# }
}
print OUT "\n";
}
}
sub handle
{
my $nnn = shift;
my $data2 = shift;
my $yyy = shift;
open OOO, ">","22.txt";
my $line = <L>;
chomp($line);
print OOO "$line";
my ($data4,$data5,$phone3,$score3)=split/\s+/,$yyy;
if ($data2<$data5){
$nnn=$nnn+($data2-$data4)/($data2-$data1)*$score3;
return;
}
return;
}
復(fù)制代碼
作者:
xiumu2280
時(shí)間:
2014-02-27 19:52
本帖最后由 xiumu2280 于 2014-02-27 20:05 編輯
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use File::Basename;
my %hash;
while (<DATA>) {
chomp;
my @data = split;
my $aver = $data[2]/($data[1]-$data[0]);
my @da = $data[0]..$data[1];
@hash{@da}= ($aver) x scalar (@da);
}
my @data = ([8650000,9750000],[13250000,13950000],[17650000,18850000]);
foreach my $uniq (@data) {
my $n = 0;
foreach my $cell ($uniq->[0]..$uniq->[1]) {
$n += $hash{$cell};
}
print "$n\n";
}
__DATA__
7400000 8200000 -747.871582
8200000 8500000 -311.464386
8500000 9100000 -552.063538
9100000 9800000 -691.326904
9800000 10700000 -860.887024
10700000 11500000 -775.908630
11500000 12300000 -748.672424
12300000 13200000 -868.078918
13200000 14100000 -844.211609
14100000 14600000 -531.665039
14600000 15500000 -934.396790
15500000 16300000 -808.178162
16300000 17500000 -1163.265747
17500000 17900000 -425.282043
17900000 18900000 -937.942383
18900000 19600000 -743.132019
19600000 20800000 -1200.120850
20800000 21100000 -285.289520
復(fù)制代碼
這個(gè)非常耗內(nèi)存。運(yùn)行這點(diǎn)要2G內(nèi)存··· 如果你都是后面5個(gè)0沒(méi)用的話可以舍去··· 會(huì)節(jié)省很多內(nèi)存
-1055.99505195218
-656.60996723752
-1156.84747864572
復(fù)制代碼
作者:
pitonas
時(shí)間:
2014-02-27 20:57
{:2_172:}是不是
[8650000, 9750000] = -634.355527
[13250000, 13950000] = -911.185874
[17650000, 18850000] = -831.1381455
復(fù)制代碼
#!/usr/bin/perl
my @range = (
[ 8650000, 9750000 ],
[ 13250000, 13950000 ],
[ 17650000, 18850000 ],
);
@range = sort { $a->[0] <=> $b->[0] } @range;
my $index = 0;
my @data = map { [split] } <DATA>;
loop: for my $R (@range) {
my $L = $R->[1] - $R->[0];
my $ave;
for my $i ( $index .. $#data ) {
next if $R->[0] > $data[$i][1];
$index = $i;
my ( $r1, $r2, $v ) = @{ $data[$i] };
$ave += ( $r2 - $R->[0] ) / $L * $v;
for my $j ( $index + 1 .. $#data ) {
my ( $r1, $r2, $v ) = @{ $data[$j] };
$ave += ( $r2 - $r1 ) / $L * $v and next if $R->[1] > $r2;
$ave += ( $R->[1] - $r1 ) / $L * $v;
print "[$R->[0], $R->[1]]\t= $ave\n";
next loop;
}
}
}
__DATA__
7400000 8200000 -747.871582
8200000 8500000 -311.464386
8500000 9100000 -552.063538
9100000 9800000 -691.326904
9800000 10700000 -860.887024
10700000 11500000 -775.908630
11500000 12300000 -748.672424
12300000 13200000 -868.078918
13200000 14100000 -844.211609
14100000 14600000 -531.665039
14600000 15500000 -934.396790
15500000 16300000 -808.178162
16300000 17500000 -1163.265747
17500000 17900000 -425.282043
17900000 18900000 -937.942383
18900000 19600000 -743.132019
19600000 20800000 -1200.120850
20800000 21100000 -285.289520
復(fù)制代碼
作者:
mingoing
時(shí)間:
2014-02-28 09:11
快了,貌似[13250000, 13950000] = -911.185874還有點(diǎn)問(wèn)題,因?yàn)閇13250000, 13950000] 是在區(qū)間[13200000 14100000]內(nèi)的,所以直接可以確定為-844.211609。{:2_172:}
回復(fù)
10#
pitonas
作者:
mingoing
時(shí)間:
2014-02-28 09:16
我研究一下
回復(fù)
9#
xiumu2280
作者:
pitonas
時(shí)間:
2014-02-28 10:05
{:2_172:} 多謝提醒
[8650000, 9750000] = -634.355527
[13250000, 13950000] = -844.211609
[17650000, 18850000] = -831.1381455
復(fù)制代碼
#!/usr/bin/perl
my @range = (
[ 8650000, 9750000 ],
[ 13250000, 13950000 ],
[ 17650000, 18850000 ],
);
@range = sort { $a->[0] <=> $b->[0] } @range;
my $index = 0;
my @data = map { [split] } <DATA>;
range: for my $R (@range) {
my $L = $R->[1] - $R->[0];
my $ave;
for my $i ( $index .. $#data ) {
next if $R->[0] > $data[$i][1];
$index = $i;
my ( $r1, $r2, $v ) = @{ $data[$i] };
if ( $R->[1] <= $r2 ) {
print "[$R->[0], $R->[1]]\t= $v\n";
next range;
}
$ave += ( $r2 - $R->[0] ) / $L * $v;
for my $j ( $index + 1 .. $#data ) {
my ( $r1, $r2, $v ) = @{ $data[$j] };
$ave += ( $r2 - $r1 ) / $L * $v and next if $R->[1] > $r2;
$ave += ( $R->[1] - $r1 ) / $L * $v;
print "[$R->[0], $R->[1]]\t= $ave\n";
next range;
}
}
}
__DATA__
7400000 8200000 -747.871582
8200000 8500000 -311.464386
8500000 9100000 -552.063538
9100000 9800000 -691.326904
9800000 10700000 -860.887024
10700000 11500000 -775.908630
11500000 12300000 -748.672424
12300000 13200000 -868.078918
13200000 14100000 -844.211609
14100000 14600000 -531.665039
14600000 15500000 -934.396790
15500000 16300000 -808.178162
16300000 17500000 -1163.265747
17500000 17900000 -425.282043
17900000 18900000 -937.942383
18900000 19600000 -743.132019
19600000 20800000 -1200.120850
20800000 21100000 -285.289520
復(fù)制代碼
回復(fù)
11#
mingoing
作者:
mingoing
時(shí)間:
2014-02-28 11:05
哥們太贊了,學(xué)習(xí)了{(lán):2_172:}
回復(fù)
13#
pitonas
作者:
kernel69
時(shí)間:
2014-02-28 20:29
來(lái)個(gè)想要求出結(jié)果的栗子
回復(fù)
1#
mingoing
歡迎光臨 Chinaunix (http://72891.cn/)
Powered by Discuz! X3.2