Bonjour, je suis étudiante et je travaille depuis récemment sur MatLab/octave

J'aimerais vous demander un coup de main sur un programme octave que je n'arrive pas à effectuer, pourtant le but est simple.
Nous avons à la base un fichier texte qui ressemble à ça :

Machine fichier.pgm 1 1 4 4 30 44 0.064 emplacement_fichier.lut 4 4
Machine fichier.pgm 1 1 4 4 30 44 0.065 emplacement_fichier.lut 4 4
Machine fichier.pgm 1 1 4 4 30 44 0.066 emplacement_fichier.lut 4 4
Machine fichier.pgm 1 1 4 4 30 44 0.067 emplacement_fichier.lut 4 4
Machine fichier.pgm 1 1 4 4 30 44 0.068 emplacement_fichier.lut 4 4
Machine fichier.pgm 1 1 4 4 30 44 0.069 emplacement_fichier.lut 4 4
(avec encore d'autres lignes)

Le but est de pouvoir remplacer la valeur en gras, par une valeur d'un autre ordre de grandeur mais qui incrémenterait ligne par ligne, et de ré-obtenir un fichier texte à la fin.

Par ex:

Machine fichier1.pgm 1 1 4 4 30 44 1 emplacement_fichier.lut 4 4
Machine fichier1.pgm 1 1 4 4 30 44 2 emplacement_fichier.lut 4 4
Machine fichier1.pgm 1 1 4 4 30 44 3 emplacement_fichier.lut 4 4
Machine fichier1.pgm 1 1 4 4 30 44 4 emplacement_fichier.lut 4 4
Machine fichier1.pgm 1 1 4 4 30 44 5 emplacement_fichier.lut 4 4
Machine fichier1.pgm 1 1 4 4 30 44 6 emplacement_fichier.lut 4 4

Pour cela voici le programme que j'ai commencé à rédiger:


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
clear all
close all
clc
 
A=fileread('fichier.txt');                    %Lit le fichier dans lequel se trouve notre texte à modifier
##On retrouve la valeur de A en pièce jointe
 
B=(strsplit(A));                                 %Découpe les chaînes de caractères séparés par des espaces, dans des cases de tableau
                                                          %Sauf que cela crée un tableau d'une ligne avec beaucoup de colonnes
##On retrouve la valeur de B en pièce jointe
 
size=length(B)/12;                            %définir largeur tableau (qui est la taille d'une "phrase":12 colonnes)
 
C=reshape(B,12,size);                       %On remodèle le tableau avec size lignes
C=C' ;                                                %On fait la transposé pour avoir quelque choses dans le bon sens
Et ça fonctionne! Les différentes chaînes de caractères sont bien séparés par lignes et par colonnes,
On peut donc modifier la colonne qui nous intéresse à savoir la 9, en lui incrémentant les valeurs par lignes:
 
for i=1:length(C);
a=num2str(i);
C(i,9)=a;
end
##On retrouve la valeur de C en pièce jointe


Super, on a réussi à modifier le texte, maintenant c'est à ce niveau que j'ai un problème.
Je souhaiterai donc revenir à l'état de départ comme A, c'est à dire faire au moins une unique colonne par ligne de texte.
J'ai essayé de tout mettre en une case avec la fonction suivante:

Code :Sélectionner tout -Visualiser dans une fenêtre à part
D=strjoin(C');

Mais toutes les lignes se retrouvent à la suite (Voir D1), et si l'on ajoute un délimiteur type:
Code :Sélectionner tout -Visualiser dans une fenêtre à part
D=strjoin(C','\n');

Cela crée un retour à la ligne à chaque chaine de caractères (Voir D2)...
J'ai aussi essayé les fonctions ostrsplit, qui donne un résultat assez similaire que strjoin, ainsi que les fonctions de concaténations vertcat, horzcat, cat pour avoir qu'une seule colonne mais cela n'a rien fait...

Pour l'enregistrement du résultat en fichier texte il suffit juste de rédiger:
Code :Sélectionner tout -Visualiser dans une fenêtre à part
save('C:\Users\**\Downloads\Nouveau_script.txt','D') ;


Auriez vous une idée de solution? On m'a dit que le problème venait peut être des types de mes résultats, notamment lors du strsplit, que cela donne un format cell alors qu'il faudrait un format char, donc changer le type de toutes les cases de cell en char avec un for...