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é:
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.
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)
lorsque j'utilise une matrice de plus de 5000 lignes voici le message d'erreur que j'obtiens:
Je pense qu'il doit y avoir un dépassement quelque part, mais je n'arrive pas à comprendre où ni pourquoi...??? Index exceeds matrix dimensions. Error in ==> Imperfections at 30 if zeromat(nodeselect,3) == 0
Est ce que quelqu'un aurait déjà été confronté à ce genre de problème ?
Merci d'avance
Partager