aide en Matlab

aide en Matlab - Divers - Programmation

Marsh Posté le 27-04-2006 à 14:40:02    

Bonjour tout le monde
J’aurai besoin un aide en MATLAB si c'est possible. Alors je vous explique ce que j'aurai besoin à faire.
Je travail sur l’IRM et j'ai récupére des images du fichier .raw et avec les images je récupère un fichier (Application MFC WORDPAD). donc j'aurai besoin une boucle pour lequel je puisse lire tous les images de cet manière: dyn0001_sl001_M
dyn0002_sl001_M
dyn0003_sl001_M..... Jusqu’à 50 par exemple. Ce sont les noms des images qui se trouvent dans un fichier.
La 2éme boucle c'est qu'il y a des informations concernant ces images qui se trouvent dans le fichier wordpad et j'aurai besoin de lire seulement la 2éme ligne et la 7 éme caractère.
c'est vraiment urgent pour mon stage et je vous remercie en avance pour votre aide..

Reply

Marsh Posté le 27-04-2006 à 14:40:02   

Reply

Marsh Posté le 27-04-2006 à 17:08:54    

aidez moi c'est vraiment urgent

Reply

Marsh Posté le 28-04-2006 à 10:43:33    

on fait pour ceux qui non pas bien compris l'idée je vous explique plus dans ce message et je vous prie de m'aider:[:alina95]
le probléme c'est que j'arrive à lire l'image en utilisant:  
fid=fopen(nom de fichier 'une image .raw', 'r')
[im2 count] =(fid, [128,128] la dimension de l'image , 'int16' precision)  
imagesc(im2)
voilà, mais mon probléme c'est d'avoir une boucle qui pourrat me lire les 50 images par contre le nom de l'image et comme ça 'dyn0002_sl001_T.raw' donc je trouve une difficulté de mettre une boucle par exemple:
k=1:50;
fid=fopen('dyn000K_sl001_T.raw ','r')
comme ça ne marche jamais. puisque je ne peux pas changer le nom de l'image puisque elles me viennent de l'IRM comme ça et pareil pour le fishier texte, parce qu'il vient avec les images et à l'intérieur il y a des informations concernant ces images.
et le probléme là qu'il ya des caractères mots dans la première ligne et chiffres dans la deuxième ligne et ce que je besoin de lire c'est juste la 7 éme caractère.
désoler pour ce long message et j'espére que cous avez compris le probléme et l'idée en generale.

Reply

Marsh Posté le 28-04-2006 à 16:27:35    

pour la lectture des image, tu as une fonction de concaténation...
je n'ai pas d'exemple ici, mais va faire un tout dans l'aide de matlab.
 
"cat", ou qqch du genre...
elle te premet,n comme en C de grouper plusieur strings.
crée un stirng "dyn000", et un string "_sl001_M"
concatène le premier avec le nombre de ton identation de boucle (désolé pour la tournure, je suis crevé...); càd le "k" de ton exemple.
ensuite, concatène le résultat avec le deuxième string.
 
là, tu as déjà ton nom de fichier ^_^
 
pour lire le 7ème caractère de la deuxième ligne (je suppose que c'est ce que tu veux faire), je n'ai pas d'idée toute faite...
 
Je te conseille de faire un tour dans l'aide de matlab, rubrique "lecture de fichiers, et de voir les exmples...

Reply

Marsh Posté le 28-04-2006 à 17:08:24    

je te remercie beaucoup en fait j'ai essayé déjà comme tu m'as dis de faire 2 strings mais ça n'a pas marché  :fou: je te mais le programme j'espére que tu trouvera la solution mais franchement je deviens fou et j'ai besoin de l'aide puisque c'est mon stage qui joue et j'ai un prof boufon désoler pour ce suntex  
clear all
close all
a='dyn00';
for i=1:50;
    if i<10  
        a=str2num(a)+0+i;
    else
        a=str2num(a)+i;
        a=str2num(a)+'_sl001_M.raw'
fid = fopen('b','r');
[a count]= fread(fid, [128,128], 'int16');
end
end
imagesc(a)
colormap(gray)
 
et pour la boucle qui me faire lire la 2éme ligne j'ai essayé àa mias aussi pareil  
clear all
close all
fid = fopen('dyn0017_sl001_T.raw','r');
%count = fprintf(fid,'%+5.2d %6.2f %c \n',c)
c = fscanf(fid,'%c \n',[1 inf])
 
mes infos en Matlab ne sont pas assez fort donc si quelqu'un puisse m'aider  :??:

Reply

Marsh Posté le 28-04-2006 à 22:37:35    

si je comprend bien (!!faut que tu fasses un effort sur tes posts...)
tu veux :
for i=1:50  
  nom_fichier = sprintf( 'dyn00%2d_sl001_T.raw', i);
  fid=fopen([ nom_fichier,'r')  
 
  ....
end
 
pour lire la deuxieme ligne caractere 7 :
eh bien il faut lire la premiere ligne cest a dire jusqu'au '\n' (saut de ligne) puis lire jusqu'au 7eme caractere  
line = fgets(fid);
if (line ~= -1), line = fgets(fid); end  
info = line[7];

Reply

Marsh Posté le 02-05-2006 à 10:37:04    

je te remercie  :love:  
je travail là dessus et j'espére que ca va marcher

Reply

Marsh Posté le 02-05-2006 à 11:33:58    

salut
alors j'ai fais un truc comme ça  
 
for k=10:50;    
  o=num2str(k)
    nom_fichier = sprintf( 'dyn00%1s_sl001_M.raw', o);  
  fid=fopen(nom_fichier,'r')  
[a count]= fread(fid, [128,128], 'int16');
figure, imagesc(a)
colormap(gray)
end
 
alors là j'arrive à lire de 10 jusqu'à 50 images et quand je mais %2d au lieu de %2s je pourrai lire seulement 3 images de 1-->3 ça me parrai bizard
 
et pour lire un fishier text mais '.raw' pour avoir la 2éme ligne 7 éme caractère ça me parrai difficile pour moi mais si j'essaie le C par example:
fscanf(fid, '%s %s \n %d%d%d%d%d%d%d) c'est pour qu'i lis les 2 lignes sautter au deuxième et pour qu'il lire la 7éme caractère est ce que ça va marcher comme ca.  
merci en avance, et pour vos aides  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed