Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

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

 

Pied de page des forums

Powered by FluxBB