Vectorize a simple matrix update operation?
显示 更早的评论
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
I think it depends on the general context. How do you create T2 in the first place and what do you do with it afetr the "smmetry". I'am using quotes since yours is not a true symmetry but your repeat a block.
Otherwise it would have been:
T2(2:49,4:-1:1)=T2(2:49,5:8);
Jan
2012-3-3
I'd vote for Oleg's: "T2(2:49,4:-1:1)=T2(2:49,5:8);".
Grufff
2012-3-3
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Introduction to Installation and Licensing 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!