Bonjour étant débutant en programmation MATLAB , je souhaite créer un programme qui permet de venir lire une matrice Excel puis d'en modifier une partie ou la totalité d'une colonne et enfin de réécrire cette nouvelle matrice dans un nouveau fichier Excel.

voici le code que j'ai tapé:

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
40
41
42
43
44
45
46
47
48
 
% Load the file initial.txt
nodes = xlsread('PerfectpanelStart.xlsx');
 
 
% Initialisation
dimension = size(nodes,1);
dimensionY = size(nodes,2);
counter = 0;
zeromat = zeros(dimension,dimensionY);
pointer = 0;
 
% Create the thickness of the panel
thickness = input ('thickness of the panel: ')
dt = thickness * 0.1;
 
% Select number nodes to be displaced
proportion = input('% of node needed to be displaced: ')
count = (proportion/100) * dimension;
round (count);
 
% Creation of the nodes displacement
while counter < count 
   nodeselect = floor ((rand(1)+(rand(1)/1000)) * dimension);
 
   if nodeselect >= 1
   	if zeromat(nodeselect,3) == 0
			value = nodes(nodeselect,3);
			randomnum = rand(1);
			% dist = rand(1) * dt;
 
			if randomnum >= 0.5
				nodes(nodeselect,3) = value + dt;
			else 
				nodes(nodeselect,3) = value - dt;
			end
 
			zeromat(nodeselect,3) = 1;
   		counter = counter + 1;
 
		elseif zeromat(nodeselect,3) == 1
		end
	end
end   
 
% Write output file : results.txt
 
xlswrite('PerfectpanelResults.xlsx',nodes)
Ce code fonctionne parfaitement pour des matrices inférieurs à 5000 lignes. ou pour des matrices supérieurs à 5000 lignes à conditions de modifier qu'un faible pourcentage de ces lignes.

lorsque j'utilise une matrice de plus de 5000 lignes voici le message d'erreur que j'obtiens:

??? Index exceeds matrix dimensions.

Error in ==> Imperfections at 30
   	if zeromat(nodeselect,3) == 0
Je pense qu'il doit y avoir un dépassement quelque part, mais je n'arrive pas à comprendre où ni pourquoi...

Est ce que quelqu'un aurait déjà été confronté à ce genre de problème ?

Merci d'avance