Vectorize a simple matrix update operation?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
I know this is basic stuff, but I'm still pretty clumsy with Matlab so your patience and advice would be much appreciated.
I'm modelling a simple heat transfer problem and have a symmetry condition around a vertical boundary. I wish to duplicate values from one side of this boundary onto the other, by copying values from one set of matrix columns to another set.
I first did this one column pair at a time:
T2(2:49,1)=T2(2:49,8);
T2(2:49,2)=T2(2:49,7);
T2(2:49,3)=T2(2:49,6);
T2(2:49,4)=T2(2:49,5);
Trying to vectorize this I've moved to:
symmetry_vector=[1 2 3 4 8 7 6 5];
T2(2:49,symmetry_vector(1:4))=T2(2:49,symmetry_vector(5:8));
My results from these two methods are identical, so it seems to work fine, but is there a better way to do this?
Thanks if you can help,
G
3 comentarios
Respuesta aceptada
Oleg Komarov
el 3 de Mzo. de 2012
Symmetry: sorry I misread your symmetry vector! It was fine.
The compact version:
T2(2:49,4:-1:1) = T2(2:49,5:8);
My question about how you got T2 and what are you gonna do with a symmetric T2 is motivated by two reasons:
- If we see how you got there, maybe we can find a more programmatical way than hardcoding 4:-1:1 and 5:8.
- Why would you need to replicate some data that you already have? For plotting reasons it makes sense but otherwise using indexing you can always retrieve it in the order you wish.
Also, by how you got there and what you're gonna do is a question about the coding. Word phrased problems have the advantage of giving you the whole picture, however it is not always portable across disciplines. In my case I may understand financial stuff but not so well heat equations.
Más respuestas (0)
Ver también
Categorías
Más información sobre Logical 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!