J'ai ma fonction ci-dessous, l'idée étant que X est un extrait 3x3 de T à utiliser dans la boucle, il extrait correctement les 3 lignes mais produit pour beaucoup de colonnes, voir l'exemple ci-dessous.matrice dimensions matlab
function T = tempsim(rows, cols, topNsideTemp, bottomTemp, tol)
T = zeros(rows,cols);
T(1,:) = topNsideTemp;
T(:,1) = topNsideTemp;
T(:,rows) = topNsideTemp;
T(rows,:) = bottomTemp;
S = [0 1 0; 1 1 1; 0 1 0];
X = zeros(3,3);
A = zeros(3,3);
for ii = 2:(cols-1);
jj = 2:(rows-1);
X = T([(ii-1) ii (ii+1)], [(jj-1) jj (jj+1)])
A = X.*S;
T = (sum(sum(A)))/5
end
échantillon test
EDU>> T = tempsim(5,4,100,50,0)
X =
100 100 100 100 100 100 100 100 100
100 0 0 0 0 0 0 0 100
100 0 0 0 0 0 0 0 100
ans =
100 100 100 100 100 100 100 100 100
100 0 0 0 0 0 0 0 100
100 0 0 0 0 0 0 0 100
??? Error using ==> times
Matrix dimensions must agree.
Error in ==> tempsim at 14
A = X.*S;
des idées sur la façon de résoudre ce problème?
ça marche, bravo, vous avez raison Je voudrais que le T ne change pas pendant que je travaille dessus et à la fin produise le produit fini. – Jordan
Ensuite, ajoutez 'T2 = T;' avant les boucles for et lisez 'X' de' T2' au lieu de 'T'. Ou vérifiez 'conv2' ... –