Comment cree un programe matlab
Résolu
d32bougie
-
Fee Fay Messages postés 646 Date d'inscription Statut Membre -
Fee Fay Messages postés 646 Date d'inscription Statut Membre -
Bonjour,
voila jai essye de faire un programe tu lui donne un temps en seconde il le t'affiche en jour ,en h , minute et second
svp aidez moi
voila jai essye de faire un programe tu lui donne un temps en seconde il le t'affiche en jour ,en h , minute et second
svp aidez moi
Configuration: Windows XP Internet Explorer 7.0
10 réponses
-
Tu devrais un peu chercher s'il s'agit d'exercices...
Il y a rien à faire en Matlab pour afficher les entiers de 1 à n.
Définir le vecteur v des entiers de 1 à n sous Matlab, c'est v=(1:n);
Cela doit être écrit dans ton cours.
Sinon pour ton programme précédent tu pouvais aussi faire comme ça :t=input('Donner un temps t en secondes : '); ns = rem(t,60); nm = rem((t-ns)/60,60); nh = rem(((t-ns)/60-nm)/60,24); nj = (((t-ns)/60-nm)/60-nh)/24; isplay(['Le temps ' num2str(t) 's donne ' num2str(nj) 'j ' num2str(nh) 'h ' num2str(nm) 'min ' num2str(ns) 's']);D'ailleurs, je voulais écrire Donner un temps et non Donner un nombre temps dans le programme précédent. -
-
merci pour votre reponse mais j'arive pas a le faire
c vous pouvez me dire plus sur sa svp -
Bonsoir
Dans la mesure où le message était difficilement lisible, je n'ai pas compris tout à fait la demande.
Donc tu ne veux pas afficher le temps d'aujourd'hui en années-mois-jours-heures-minutes-secondes en utilisant clock au lieu de time qui te donne la date courante en secondes.
Tu souhaites donc donner un temps en secondes et avoir une conversion en jours-heures-minutes-secondes.
j = 24h
h = 60 min
min = 60s
*Tu prends donc ton temps t en secondes, tu fais la division euclidienne (quotient nmin et reste s) de ce temps par 60, le reste s te donne le nombre de secondes dans ta date en jours-minutes-secondes.
*Tu fais la division euclidienne (quotient nh et reste min) du quotient nmin précédent par 60. Le reste min te donne le nombre de minutes dans ta date en jours-minutes-secondes.
*Tu fais la division euclidienne (quotient j et reste h) du quotient nh précédent par 24. Le reste h te donne le nombre d'heures dans ta date en jours-minutes-secondes et le quotient j te donne le nombre de jours.
Bonne nuit -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonsoir
Pas de souci ;-)
Tu me diras si tu y es arrivé. Nous pourrons regarder ce que tu as fait.
Ciao ! -
Ça a l'air de marcher ;-)
Si tu veux une sortie écran plus propre, tu peux rajouter des ; et une ligne. Comme ceci :t=input('Donner un nombre temps t en secondes : '); nj=(t-rem(t,86400))/(86400); nh=(rem(t,86400)-rem(rem(t,86400),3600))/(3600); nm=(rem(rem(t,86400),3600)-rem(rem(rem(t,86400),3600),60))/(60); ns=rem(rem(rem(t,86400),3600),60); display(['Le temps ' num2str(t) 's donne ' num2str(nj) 'j ' num2str(nh) 'h ' num2str(nm) 'min ' num2str(ns) 's']);Bonne soirée -
Ah d'accord...
La fonction primes de Matlab fait cela.
v=primes(n); te définit le vecteur des nombres premiers de 1 à n. -
Tout d'abord, vérifie que a n'a pas été défini quelque part avec une taille plus grande que celle que tu utilises dans ton programme.
Si tu fais par exemple :a=zeros(10); n=input('Enter la taille de la matrice : ') k=1; for i=1:n for j=1:n a(i,j)=[n^k]; k=k+1; end endEt que tu lances ton programme pour n=5 par exemple, tu obtiendra des zéros pour i>6 ou j>6.
Donc soit tu fais un clear a; avant de lancer ton programme à chaque fois, soit tu définis la taille de a dans le programme (c'est mieux).n=input('Enter la taille de la matrice : ') a=zeros(n); k=1; for i=1:n for j=1:n a(i,j)=[n^k]; k=k+1; end endEnsuite, même si tu fais cela, l'affichage t'indiquera quand même des zéros quand n sera assez grand, mais il s'agit seulement de l'affichage.
Si tu lances ton programme pour n=4 par exemple, tu obtiens ceci :> a a = 1.0e+09 * 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.0003 0.0010 0.0042 0.0168 0.0671 0.2684 1.0737 4.2950En revanche, si tu demandes l'affichage de a(1,1) seul :>> a(1,1) ans = 4Si tu veux changer cet affichage, utilise format. Ici, si tu veux afficher a correctement, l'affichage le plus adapté est long g je pense ; le format long ne conviendra pas si tu augmentes encore la taille de n.>> format long g >> a a = 4 16 64 256 1024 4096 16384 65536 262144 1048576 4194304 16777216 67108864 268435456 1073741824 4294967296Bonne nuit -
Tu es le bienvenu ;-)
Cela dit, tu ne m'as pas laisser le temps de modifier mon message. :-(
J'allais ajouter qu'il fallait éviter d'utiliser i et j sous Matlab parce qu'ils sont prédéfinis (nombres complexes). Remplace les respectivement par ii et jj par exemple, même si ton programme marche très bien.
Sinon, c'est quelque chose qui peut être source d'erreurs si un jour tu as à utiliser le nombre complexe i dans une boucle en i. -
Il n'y a pas de quoi !
Et ton prof ne t'a pas dit d'utiliser le fait que tu peux travailler vectoriellement avec Matlab ? :-D
Ton programme se simplifie ;-)
D'ailleurs je viens de me rendre compte que j'avais écrit Enter au lieu d'Entrer:n=input('Entrer la taille de la matrice : '); a=zeros(n); k=(1:n^2); a(k)=n.^k; a=a.';Bonne nuit