To the purpose of fitting a 2nd order polynomial (a + b*x + c*x^2) to the chunk
of signal falling in a 17 consecutive samples window
I wrote the following very crude script. Since I have no previous experience of
using Least Square Fit with R I would appreciate
your supervision and suggestion.
I guess the returned coefficients of the oolynomial are:
a = -1.3191398
b = 0.1233055
c = 0.9297401
Thank you very much in advance,
Maura
######################################################
## Main
tms <- t(read.table("signal877cycle1.txt"))
J <- ilogb(length(tms), base=2) + 1
y <- c(tms,rep(0,2^J - length(tms)))
y.win <- tms.ext[1:17]
ls.mat <- matrix(nrow=length(y.win),ncol=3,byrow=TRUE)
dt <- 0.033
ls.mat[,1] <- 1
ls.mat[,2] <- seq(0,dt*(length(y.win)-1),dt)
ls.mat[,3] <- ls.mat[,2]^2
#############################################################
> tms <- t(read.table("signal877cycle1.txt"))
> J <- ilogb(length(tms), base=2) + 1
> y <- c(tms,rep(0,2^J - length(tms)))
> y.win <- tms.ext[1:17]
> ls.mat <- matrix(nrow=length(y.win),ncol=3,byrow=TRUE)
> dt <- 0.033
> ls.mat[,1] <- 1
> ls.mat[,2] <- seq(0,dt*(length(y.win)-1),dt)
> ls.mat[,3] <- ls.mat[,2]^2
> y
[1] -1.29882462 -1.29816465 -1.29175902 -1.33508315 -1.31905086 -1.30246447
-1.25496640 -1.25858566 -1.19862868
[10] -1.16985809 -1.15755035 -1.15627040 -1.10929231 -1.09324296 -1.07202676
-1.03543530 -1.00609649 -0.96931799
[19] -0.96014189 -0.93879923 -0.89472101 -0.86568807 -0.86394226 -0.83804684
-0.79226517 -0.74804696 -0.69506558
[28] -0.63984135 -0.57677266 -0.52376371 -0.48793752 -0.44261935 -0.37505621
-0.30538492 -0.19309771 -0.07859412
[37] -0.01879655 0.04247391 0.09565881 0.17329566 0.29132263 0.38380712
0.45016443 0.50107765 0.57413940
[46] 0.68835476 0.78369090 0.83756871 0.87753415 0.92834503 0.99560230
1.08055356 1.17121517 1.22967280
[55] 1.25791166 1.28749046 1.31672692 1.33188866 1.35420775 1.37356226
1.38792638 1.40398573 1.41558702
[64] 1.39204622 1.39848595 1.39902593 1.40604565 1.42092504 1.41436531
1.38666643 1.36012986 1.32950875
[73] 1.26507137 1.25315597 1.18249472 1.08857029 0.98782261 0.90470599
0.83081192 0.77709116 0.65228917
[82] 0.51844166 0.44530462 0.39562664 0.30153281 0.17979539 0.09895985
0.04306094 -0.03937571 -0.14150334
[91] -0.25936679 -0.31480454 -0.38806157 -0.47389691 -0.50785671 -0.58179371
-0.67538285 -0.74246719 -0.78380551
[100] -0.83894328 -0.86450224 -0.90614055 -0.93751928 -0.99679687 -1.03205956
-1.06616465 -1.06651404 -1.14997066
[109] -1.18338930 -1.21335809 -1.20208854 -1.22370767 -1.23488486 -1.25112655
-1.26942581 -1.26792234 -1.28838504
[118] -1.28799329 -1.27326566 -1.28502518 0.00000000 0.00000000 0.00000000
0.00000000 0.00000000 0.00000000
[127] 0.00000000 0.00000000> y.win
[1] -1.298825 -1.298165 -1.291759 -1.335083 -1.319051 -1.302464 -1.254966
-1.258586 -1.198629 -1.169858 -1.157550
[12] -1.156270 -1.109292 -1.093243 -1.072027 -1.035435
-1.006096> ls.mat
[,1] [,2] [,3]
[1,] 1 0.000 0.000000
[2,] 1 0.033 0.001089
[3,] 1 0.066 0.004356
[4,] 1 0.099 0.009801
[5,] 1 0.132 0.017424
[6,] 1 0.165 0.027225
[7,] 1 0.198 0.039204
[8,] 1 0.231 0.053361
[9,] 1 0.264 0.069696
[10,] 1 0.297 0.088209
[11,] 1 0.330 0.108900
[12,] 1 0.363 0.131769
[13,] 1 0.396 0.156816
[14,] 1 0.429 0.184041
[15,] 1 0.462 0.213444
[16,] 1 0.495 0.245025
[17,] 1 0.528 0.278784> lsfit(x, y, wt = NULL, intercept = TRUE, tolerance = 1e-07,
+ yname = NULL> > lsfit(ls.mat, y.win,wt = NULL, intercept = TRUE, tolerance = 1e-07,yname =
NULL)
$coefficients
Intercept X1 X2 X3
-1.3191398 0.1233055 0.9297401 0.0000000
$residuals
[1] 0.020315146 0.015893550 0.015192628 -0.037263015 -0.032387216
-0.028982296 0.003309337 -0.017541342
[9] 0.023159250 0.030648485 0.019649885 -0.004401476 0.015220334
0.001888425 -0.008301609 -0.005141358
[17] -0.011258729
$intercept
[1] TRUE
$qr
$qt
[1] 4.937370523 0.409411205 -0.089144866 -0.041892736 -0.035696706
-0.031176843 0.002024443 -0.018121872
[9] 0.023077794 0.030860815 0.019950712 -0.004217443 0.015082286
0.001223006 -0.009699688 -0.007477386
[17] -0.014737995
$qr
Intercept X2 X3 X1
[1,] -4.1231056 -1.08849989 -0.39512546 -4.123106e+00
[2,] 0.2425356 0.66656733 0.35194755 1.558035e-17
[3,] 0.2425356 0.21973588 -0.09588149 1.787189e-17
[4,] 0.2425356 0.17022850 -0.10350966 -2.990539e-17
[5,] 0.2425356 0.12072112 -0.19811319 2.906411e-01
[6,] 0.2425356 0.07121375 -0.27000118 2.654896e-01
[7,] 0.2425356 0.02170637 -0.31917362 2.457966e-01
[8,] 0.2425356 -0.02780101 -0.34563052 2.315620e-01
[9,] 0.2425356 -0.07730838 -0.34937188 2.227859e-01
[10,] 0.2425356 -0.12681576 -0.33039769 2.194681e-01
[11,] 0.2425356 -0.17632314 -0.28870796 2.216089e-01
[12,] 0.2425356 -0.22583052 -0.22430269 2.292080e-01
[13,] 0.2425356 -0.27533789 -0.13718188 2.422656e-01
[14,] 0.2425356 -0.32484527 -0.02734553 2.607816e-01
[15,] 0.2425356 -0.37435265 0.10520637 2.847560e-01
[16,] 0.2425356 -0.42386002 0.26047381 3.141889e-01
[17,] 0.2425356 -0.47336740 0.43845680 3.490802e-01
$qraux
[1] 1.242536 1.269243 1.013809 1.321251
$rank
[1] 3
$pivot
[1] 1 3 4 2
$tol
[1] 1e-07
attr(,"class")
[1] "qr"
Warning message:
In lsfit(ls.mat, y.win, wt = NULL, intercept = TRUE, tolerance = 1e-07, :
'X' matrix was collinear
tutti i telefonini TIM!
[[alternative HTML version deleted]]