问题描述
我有1到180天之间的天数,从$ epoch ='2020-05-11'开始减少和增加日期。整个周期= 365.25天,最后将在后期添加振幅,频率和相位以创建正弦波。这不是完整的代码,但是我需要每天将其转换为弧度或关联度吗?如何解决这个问题,我已经通过互联网搜索了从度到弧度的转换。
数据输入来自bat文件,更进一步可以轻松进行更改:
C:\StrawBerry\perl\bin\perl.exe D:\perl\ex4444.pl Peri_GPS ZAT1_GPS 2020-05-11 180
pause
和代码本身:
#!/usr/bin/perl
use Math::Random::OO::normal;
use Time::Local;
use Time::Localtime;
use POSIX qw(strftime);
my $filename = 'D:\perl\program.txt';
open (FH,'>',$filename)
or die $!;
my ($station1,$station2,$epoch,$count_day) = @ARGV;
$day_a2 = -1;
$day_a1 = $day_a2 - $count_day;
$day_a3 = 1;
$day_a4 = $day_a3 + $count_day;
my ($year,$month,$day) = split('-',$epoch);
$epoch = timelocal(0,$day,$month-1,$year-1900);
$day_sec = 60*60*24;
$interval=$count_day*$day_sec;
$epoch1=$epoch-86400;
$epoch2=$epoch1-$interval;
$epoch3=$epoch+86400;
$epoch4=$epoch3+$interval;
@x1=(); @x2=();
for ($d = $day_a1; $d <= $day_a2; $d++){
$epoch2 += $day_sec;
push (@x1,$d);
printf FH scalar(strftime " %Y %m %d %H %M",localtime($epoch2));
printf FH " %14.4f \n";
close $FH;
}
for ($d = $day_a3; $d <= $day_a4; $d++){
$epoch3 += $day_sec;
push (@x2,$d);
print FH scalar(strftime " %Y %m %d %H %M",localtime($epoch3));
printf FH " %14.4f \n";
close $FH;
}
解决方法
您有一个范围,并且想要找到该范围的一部分。这是简单的乘法。
Y ≈ A X^2 + B X + C => 10^18 y ≈ A 10^-18 x^2 + B 10^-9 x + C
=> y ≈ A 10^-36 x^2 + B 10^-27 x + C 10^-18
to be compared to y ≈ a x^2 + b x + c
在我的时区,输出
a = A * 10^-36
b = B * 10^-27
c = C * 10^-18
请注意use POSIX qw( strftime );
use Time::Local qw( timelocal );
my $date = '2020-05-11';
my $num_steps = 11;
my ($y,$m,$d) = split(/-/,$date);
my $epoch = timelocal(0,$d,$m-1,$y-1900);
my $range = 365.25 * 24 * 60 * 60 / 2;
for my $step (-$num_steps..$num_steps) {
my $fraction = $step / $num_steps;
my $new_epoch = $epoch + $range * $fraction;
say strftime("%F %T",localtime($new_epoch));
}
从-1到+1的变化如何?好吧,sin(x)也是如此!
假设我们在程序中添加以下内容:
2019-11-10 08:00:00
2019-11-28 14:18:00
2019-12-16 20:36:00
2020-01-04 02:54:00
2020-01-22 09:12:00
2020-02-09 15:30:00
2020-02-27 21:48:00
2020-03-17 05:06:00
2020-04-04 11:24:00
2020-04-22 17:42:00
2020-05-11 00:00:00
2020-05-29 06:18:00
2020-06-16 12:36:00
2020-07-04 18:54:00
2020-07-23 01:12:00
2020-08-10 07:30:00
2020-08-28 13:48:00
2020-09-15 20:06:00
2020-10-04 02:24:00
2020-10-22 08:42:00
2020-11-09 14:00:00
内置sin
以弧度作为输入,因此人们希望日期遵循以下分布:
程序现在输出以下内容:
$fraction