Skip to content
Extraits de code Groupes Projets
Valider 3ce7a859 rédigé par Michel Crucifix's avatar Michel Crucifix
Parcourir les fichiers

fiddle with develop

parent 966c2da5
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -32,15 +32,21 @@ cis <- function(x) exp(1i*x)
#' reconstructed time series otherwise
#' @method develop discreteSpectrum
#' @export
develop.discreteSpectrum <- function(M, start=NULL, end=NULL, deltat=NULL, times, dfunction = cos, sum=TRUE){
develop.discreteSpectrum <- function(M, start = NULL, end = NULL, deltat = NULL, times = NULL, dfunction = cos, maxfreq = NULL, sum=TRUE){
if (!("discreteSpectrum" %in% class(M))) stop ("object is not a discreteSpectrum decomposition")
timesIsATseries = FALSE
if (is.ts(times)){
start = start(times)
deltat= deltat(times)
end = start + length(times)*deltat
timesIsATseries <- TRUE
}
if (!is.null(start)){
if (is.null(deltat) || is.null(end)) stop ("if you supply start, you must also supply deltat and end");
n <- (end-start) %*% deltat
times <- start + seq(0, n) * deltat
timesIsATseries = TRUE
n <- (end-start) %/% deltat
times <- ts(start + seq(0, n) * deltat, start=start, deltat=deltat)
timesIsATseries <- TRUE
}
if (is.null(times)){
......@@ -49,19 +55,29 @@ develop.discreteSpectrum <- function(M, start=NULL, end=NULL, deltat=NULL, time
start <- stats::start(xdata)[1]
deltat <- stats::deltat(xdata)
times <- (seq(length(xdata))-1) * deltat + start
timesIsATseries = TRUE
timesIsATseries <- TRUE
}
nfreq <- attr(M,"nfreq")
if (is.null(nfreq)) nfreq <- length(M$Amp)
if (!is.null(maxfreq)) nfreq <- min(nfreq, maxfreq)
if (timesIsATseries){
reconstructed <- lapply(seq(nfreq), function(i) ts( M$Amp[i] * dfunction(M$Freq[i] * times + M$Phase[i]), start=start, deltat=deltat) )}
else {
reconstructed <- lapply(seq(nfreq), function(i) M$Amp[i] * dfunction(M$Freq[i] * times + M$Phase[i]))
reconstructed <- sapply(seq(nfreq), function(i) M$Amp[i] * dfunction(M$Freq[i] * times + M$Phase[i]) )
}
if ( sum ) reconstructed <- apply(simplify2array(reconstructed), 1 , sum)
if (timesIsATseries) reconstructed <- ts(reconstructed, start=start, deltat=deltat)
if ( sum ) {
shift <- attr(M, "shift"); if (is.null (shift)) shift = 0
trend <- attr(M, "trend"); if (is.null (trend)) trend = 0
if (timesIsATseries)
reconstructed <- Reduce('+', reconstructed) + trend * times + shift
else
reconstructed <- apply(reconstructed, 1 , sum) + trend * times + shift
} else if (timesIsATseries) {
reconstructed <- apply(reconstructed, 2, function(x) ts(x,start=start, deltat=deltat))
}
return(reconstructed)
}
......
......@@ -72,8 +72,13 @@ mfft_complex <- function(xdata, nfreq=30, minfreq=NULL, maxfreq=NULL, correctio
xdata <- Re(xdata)
ndata <- length(xdata);
flag <- c(1,'NA',2,3)[correction+1]
if (is.na(flag)) stop('this correction scheme is not implemented for complex time series')
flag <- c(1,0, 2,3)[correction+1]
print ('flag')
print (flag)
if (flag==0) {
message ('this correction scheme is not implemented for complex time series \\ will use synthetic data correction instead')
flag = 2
}
if (is.null(minfreq)){
my_minfreq <- -pi
......
......@@ -272,7 +272,7 @@ mfft_analyse <- function(xdata, nfreq, fast = TRUE, nu = NULL, minfreq=NULL, max
# print (coeftests)
# donc: j'ai demontre que les deux xtests sont les memes
# coefreals est la bonne solution
# et je sais ussi que B = sum A_mj f_j
# donc je devroais simplement avour les Sj A_mj
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter