Vectorize a simple matrix update operation?
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Oleg Komarov
2012-3-3
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.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!