#1 Tue 17 June 2014 21:26
- ArimaGam
- Juste Inscrit !
- Date d'inscription: 17 Jun 2014
- Messages: 3
Logiciel R
Bonjour svp j'aurai besoin d'aide en urgence sur le logiciel R:
J'ai deux grandes matrices U et V chacune avec des valeurs. pour chaque valeur du 1er tableau et 2nd tableau voir si celles-ci sont psotivess ou négatives et en fonction des cas :
si U est+ et V est - donc alpha= tang(V/U)
si U est - et V est + donc alpha= pi+atan(V/U).
voici mon script mais ça ne marche pas et c'est vraiment urgent svp:
setwd(paste("C:/AAA PENECLIM SATELLITE/guyanes/CLS/",sep=""));
matriceU<-read.csv2(paste("U_moyMonth_Poly_Courant",".csv",sep=""),row.names=1,header=T);
matriceV<- read.csv2(paste("V_moyMonth_Poly_Courant",".csv",sep=""),row.names=1,header=T);
## Initialisation de la table finale alpha
nomscols<-c("CalcoeneN","CalcoeneS"," MaracaN","MaracaS","OiapoqueN","OiapoqueS","coteamazoneN","coteamazoneS")
nomlignes<- rownames(matriceU)
alpha<- matrix(data=NA,ncol=length(nomscols),nrow=nrow(matriceU),dimnames=list(nomlignes,nomscols))
# Boucle sur les colonnes pour voir le signe de mes valeurs
for(i in colnames(matriceU)) { # ou:for(i in 1:ncol(matrice))
for (y in colnames(matriceV){
if (i>0 & y>0)
ALPHA==atan(y/i)
else if (i<0 & y>0)
AlPHA==pi+atan(y/i)
else if (i<0 & y<0)
ALPHA==pi+atan(y/i)
else if (i>0&y<0)
ALPHA== 3pi-(atan(y/i))
}
}
Hors ligne
#2 Wed 18 June 2014 15:58
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
Re: Logiciel R
Bonjour
Le fait que ce soit urgent ou pas, ne m'incite pas davantage à vous répondre vite !!!! Sauf si vous m'envoyez un petit chèque!
Aussi, nous auriez pu nous faire profiter de vos recherches en nous expliquant l'objectif de ce code en télédétection (puisque vous êtes sur le forum Télédétection).
Néanmoins, vous obtiendrez davantage d'aide sur ce forum :
http://forums.cirad.fr/logiciel-R/index.php
De plus, sans tenter de comprendre votre calcul, je proposerai quelque chose du genre :
Code:
setwd(paste("C:/AAA PENECLIM SATELLITE/guyanes/CLS/",sep="")); matriceU<-read.csv2(paste("U_moyMonth_Poly_Courant",".csv",sep=""),row.names=1,header=T); matriceV<- read.csv2(paste("V_moyMonth_Poly_Courant",".csv",sep=""),row.names=1,header=T); nomscols<-c("CalcoeneN","CalcoeneS"," MaracaN","MaracaS","OiapoqueN","OiapoqueS","coteamazoneN","coteamazoneS") nomlignes<- rownames(matriceU) alpha<- matrix(data=NA,ncol=length(nomscols),nrow=nrow(matriceU),dimnames=list(nomlignes,nomscols)) # Boucle sur les colonnes pour voir le signe de mes valeurs for(i in 1:ncol(matriceU)) { alpha[ matriceU[,i] > 0 & matriceV[,i] > 0 ,i] <- atan(matriceV[,i] / matriceU[,i] ) ... }
Dernière modification par ppluvinet (Wed 18 June 2014 16:02)
Pascal PLUVINET
Hors ligne
#3 Wed 18 June 2014 18:09
- ArimaGam
- Juste Inscrit !
- Date d'inscription: 17 Jun 2014
- Messages: 3
Re: Logiciel R
Bonjour Monsieur,
Hier j'étais un peu pressée en écrivant mon message:
Je travaille sur un projet de recherche portant sur la crevette de la Guyane française, où le stock connait un effondrement depuis fin 99.
Mon but est devoir l'influence des variables environnementales (sst,chl, turbidité,mes et courant) sur le recrutement de la crevette. (Si ça corrèle ou pas). Car y a un an on a conclu ce n'était pas l'impact de la pêche.
Sur ce script même, je traite les données de courant (des vecteurs courant): Les données de ces vecteurs sont représentés sous forme de 2 matrices U et V: la 1ère matrice U représente les valeurs moyennes mensuelles de chaque U par zone et la seconde matrice V représente valeurs moyennes mensuelles par zone aussi.
Donc en fonction de ces vecteurs u et v (positifs ou négatifs) je calcule l'angle alpha: comme par exemple si u est positif et v est positif donc l'angle alpha= a tangente(V/U).
Par la suite, Après avoir obtenu l'angle alpha de chaque vecteur courant, je fais une projection des vecteurs courants sur un vecteur qui va de la zone de ponte des crevettes au brésil à la zone de nourricerie en Guyane. Ainsi avec la projection j'ai la direction et l'intensité.
Je ne sais pas si j'ai bien expliqué.
Merci d'avance pour votre aide.
Amira
Hors ligne
#4 Fri 20 June 2014 10:47
- Yves BRESCHARD
- Invité
Re: Logiciel R
Faut pas s'embêter avec les variables environnementales, c'est Forrest Gump qui a péché toutes les crevettes.
#5 Fri 20 June 2014 14:41
- ArimaGam
- Juste Inscrit !
- Date d'inscription: 17 Jun 2014
- Messages: 3
Re: Logiciel R
J'ai fini par trouver la solution pour mon script sur la partie des boucles:
setwd(paste("C:/AAA PENECLIM SATELLITE/guyanes/CLS/",sep=""));
matriceU<-read.csv2(paste("U_moyMonth_Poly_Courant",".csv",sep=""),row.names=1,header=T);
matriceU<-matriceU[,-which(colnames(matriceU)=="coteamazoneN")]###suppresion colonne coteamazoneN
matriceV<- read.csv2(paste("V_moyMonth_Poly_Courant",".csv",sep=""),row.names=1,header=T);
matriceV<-matriceV[,-which(colnames(matriceV)=="coteamazoneN")]###suppression de la colonne amazoneN pour qu'elle ne gene pas la boucle après car c'est des NA
## Initialisation de la table finale alpha
nomscols<-c("CalcoeneN","CalcoeneS"," MaracaN","MaracaS","OiapoqueN","OiapoqueS","coteamazoneS")
nomlignes<- rownames(matriceU)
alpha<- matrix(data=NA,ncol=length(nomscols),nrow=nrow(matriceU),dimnames=list(nomlignes,nomscols))
# Boucle sur les colonnes et les lignes aussi pour voir le signe de mes valeurs
for(i in 1:ncol(matriceU)) {
for (y in 1:nrow(matriceU)){
if ( matriceU[y,i] > 0 & matriceV[y,i] > 0) {
alpha[y,i]<-atan(matriceV[y,i] / matriceU[y,i]) }
if ((matriceU[y,i] < 0 & matriceV[y,i] > 0 )|( matriceU[y,i] < 0 & matriceV[y,i] < 0 )) {
alpha[y,i]<-pi+atan(matriceV[y,i] / matriceU[y,i])}
if (matriceU[y,i] > 0 & matriceV[y,i]<0){
alpha[y,i]<-(3*pi/2)-(atan(matriceV[y,i] / matriceU[y,i])) }
}
}
#Pour sauvegarder la matrice dans un fichier
write.csv2(alpha,file="../Anglealpha.csv");
Hors ligne