Matlab: besoin d'un regard exterieur
rom3478
-
rom3478 -
rom3478 -
Bonjour,
J'ai un soucis de prog. Je suis en train de creer une phase 2 dans un programme par une fonction. J'ai restreint mon probleme à ce qui suit:
je possède deux fichiers . mat avec mes données, du type:
month.mat
1 3 (correspondant au mois mars)
2 3
.....
i 12 (decembre)
...
n 5 (ou n est le nombre total de mes données)
year.mat
1 1988
2 1988
...
i 2003
...
n 2008 (par exemple)
Si je réduis mon problème à:
function[ ]=choiceyear() (ici, je retourne nb en sortie)
load 'year.mat'
load 'month.mat'
for h=1:12 (pour ballayer l'ens. des mois de l'année)
nb=1; (initialisation/réinitialisation à chaque boucle)
for i=1:n
if month(i)==h && year(i)==1989 (si le mois de la ligne i vaut le mois ballaye par h et si
l'annee de cette meme ligne i=1989 alors je place l'indice i
dans la matrice A et j'incremente nb)
A(nb;h)=i; (matrice qui me donne tout les i pour les conditions vrai)
nb=nb+1; (j'incrémente pour connaitre le nombre d'él.)
qui répond aux conditions ci dessus)
end
end
nb (ici, je devrais avoir pour h=1, un nb;h=2,un autre.... hors nb vaut toujours 1 ce qui n'est pas
correct suivant mes donnees)
end
end
Mon but étant de connaitre pour chaque mois d'une année, le nombre d'élément (cad le nbre de relevés collectés). Hors lorsque j'execute les memes intructions sous command wind de matlab. en enlevant "function....", je trouve un nb=1174 (ce qui est juste et quasi immédiat ). Mais lorsque j'appelle la fonction, je trouve nb=1. Et je ne comprend pas pourquoi, je n'ai aucun message d'erreur, et matlab se rend 'busy' pendant 1 min, à croire qu'il calcule ou cherche quelque chose.
Quelqu'un pourrait il m'eclairer sur mon erreur? Merci
J'ai un soucis de prog. Je suis en train de creer une phase 2 dans un programme par une fonction. J'ai restreint mon probleme à ce qui suit:
je possède deux fichiers . mat avec mes données, du type:
month.mat
1 3 (correspondant au mois mars)
2 3
.....
i 12 (decembre)
...
n 5 (ou n est le nombre total de mes données)
year.mat
1 1988
2 1988
...
i 2003
...
n 2008 (par exemple)
Si je réduis mon problème à:
function[ ]=choiceyear() (ici, je retourne nb en sortie)
load 'year.mat'
load 'month.mat'
for h=1:12 (pour ballayer l'ens. des mois de l'année)
nb=1; (initialisation/réinitialisation à chaque boucle)
for i=1:n
if month(i)==h && year(i)==1989 (si le mois de la ligne i vaut le mois ballaye par h et si
l'annee de cette meme ligne i=1989 alors je place l'indice i
dans la matrice A et j'incremente nb)
A(nb;h)=i; (matrice qui me donne tout les i pour les conditions vrai)
nb=nb+1; (j'incrémente pour connaitre le nombre d'él.)
qui répond aux conditions ci dessus)
end
end
nb (ici, je devrais avoir pour h=1, un nb;h=2,un autre.... hors nb vaut toujours 1 ce qui n'est pas
correct suivant mes donnees)
end
end
Mon but étant de connaitre pour chaque mois d'une année, le nombre d'élément (cad le nbre de relevés collectés). Hors lorsque j'execute les memes intructions sous command wind de matlab. en enlevant "function....", je trouve un nb=1174 (ce qui est juste et quasi immédiat ). Mais lorsque j'appelle la fonction, je trouve nb=1. Et je ne comprend pas pourquoi, je n'ai aucun message d'erreur, et matlab se rend 'busy' pendant 1 min, à croire qu'il calcule ou cherche quelque chose.
Quelqu'un pourrait il m'eclairer sur mon erreur? Merci
A voir également:
- Matlab: besoin d'un regard exterieur
- Gnu octave matlab - Télécharger - Édition & Programmation
- Programmer avec MATLAB ✓ - Forum Matlab
- Termes de Matlab ✓ - Forum Matlab
- Problème diffusion matlab - Forum Matlab
- Boucle for matlab - Forum Matlab
1 réponse
function [ nb ]=choiceyear() (ici, je retourne nb en sortie) load 'year.mat' load 'month.mat' for h=1:12 (pour ballayer l'ens. des mois de l'année) nb=1; (initialisation/réinitialisation à chaque boucle) for i=1:n %% que vaut n ? il n'est pas initialisé if month(i)==h && year(i)==1989 (si le mois de la ligne i vaut le mois ballaye par h et si l'annee de cette meme ligne i=1989 alors je place l'indice i dans la matrice A et j'incremente nb) A(nb,h)=i; (matrice qui me donne tout les i pour les conditions vrai) nb=nb+1; (j'incrémente pour connaitre le nombre d'él.) qui répond aux conditions ci dessus) end end nb (ici, je devrais avoir pour h=1, un nb;h=2,un autre.... hors nb vaut toujours 1 ce qui n'est pas correct suivant mes donnees) end end
Je ne comprends pas non plus. Tes fichiers ont une ou deux colonnes ?
une matrice s'appelle avec une virgule il me semble A(nb,n), non ?
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur
En général, un code qui se comporte différemment entre fonction et script, c'est qu'il utilise une variable mal initialisé. Ou comme dans ton cas, lorsque tu fait intervenir des fichiers, des problèmes de chemin. Je ne sais pas ce que deviens le répertoire courant dans une fonction.
Je te conseil de faire une fonction avec les deux vecteurs (month et year) en argument.