How can I use one matrix to assign values to a second matrix using a for loop?
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Harold Sandahl
el 29 de Nov. de 2019
Comentada: Harold Sandahl
el 29 de Nov. de 2019
I need to create a diffusion simulation for class and I am stuck on the linear algebra. The first point needs to remain constant and the second point begins to be changed. I need the next point to be calculated through the equation Ci + phi*(Ci-1 - 2*Ci + Ci+1). It appears that I am doing something wrong with the loop itself. Any help is much appreciated. Thank you.
matrix = [1 1 1 1 1 1 1 1 1 1];
vector = [0 0 0 0 0 0 0 0 0 0];
phi = 0.5;
n=1;
for n=1:1:10
if n = 1
vector(n)=matrix(1)
else
vector(n)=matrix(n) + phi*(matrix(n-1)+matrix(n+1)-2*matrix(n));
end
end
2 comentarios
KALYAN ACHARJYA
el 29 de Nov. de 2019
Editada: KALYAN ACHARJYA
el 29 de Nov. de 2019
No issue with Ci-1 (previous data), but how you get the next value of Ci+1?
Respuesta aceptada
ME
el 29 de Nov. de 2019
Based on your definition there is nothing to diffuse. If the values is the same all along your domain then there won't be any change because you will always have vector(n) = matrix(n) as the rest of your expression will cancel out.
I would also have thought you'd get an error of index exceeds the number of array elements. This would be because you are trying to take Ci+1 as the point just outside of your arrays. To fix that issue you'll have to consider and implement some kind of boundary condition on the n=10 end.
I hope that helps! If you still have problems then you may need to explain exactly what issues you are having.
Más respuestas (0)
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!