Bonjour,

je vous explique le topo vite fait, j'ai une série d'images satellite, prisent à des moments différents mais qui ont toutes les mêmes caractéristiques (même nombre de lignes, de colonnes, même position géographique...). Pour pouvoir les lire plus facilement sous un programme de traitement, je veux pour chaque image lui créer un header (.hdr) qui lui soit associée.

voici le code que j'ai écrit pour le moment:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
close all
clear all
clc
 
%dans un premier temps on choisi le répertoire où sont rangées les images
rep = 'F:\temp';
ext = '*.rst';
 
%on fait une liste des fichiers que contient ce répertoire
chemin = fullfile(rep,ext);
list = dir(chemin);
 
%on fait un tableau qui a le nom de tous les fichiers du répertoire
for n = 1:numel(list)
    nom{n} = list(n).name;
    nom{n}=strcat(nom{n}(1:end-4),'.hdr');
end
 
%on ouvre un boite de dialogue qui permet de rentrer les paramètres de
%l'image
prompt={'nombre de colonnes ?','nombre de lignes ?','nombre de bandes ?','nombre d offset ?'};
dlg_title='paramètres de l image'; 
num_lines=1;
def={'1000','500','1','0'}; 
answer1=inputdlg(prompt,dlg_title,num_lines,def);
 
%on demande si il y'a des infos supplémentaires
button=questdlg('avez vous des informations sur la localisation des images ?','infos supplémentaires','oui','non','default');
 
if button=='non'
   for n=1:numel(list) 
    fid=fopen(fullfile(rep,nom{n}),'w+');
    fprintf(fid,'ENVI\ndescription = {\n \bFile Imported into ENVI.}\nsamples = %s\nlines \b\b= %s\nbands \b\b= %s\nheader offset = %s\nfile type = ENVI Standard\ndata type = 2\ninterleave = bsq\nsensor type = Unknown\nbyte order = 0\nwavelength units = Unknown',answer1{1},answer1{2},answer1{3},answer1{4})
    fclose(fid);
   end
else 
    %alors poser les question sur latt,long,pas... et les implementer dans
    %les .hdr
end
et mon problème se situe au niveau de la fonction fprintf où \b qui devrait servir à faire un espace et \n qui devrait servir à revenir à la ligne ne fonctionnent pas.

et quand je l'édit avec bloc note, j'obtiens ça :


au lieu de ça:



ma version de matlab :
MATLAB 7.0.0.19920 (R14)