EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
看Matlab的help文档讲得不是清楚。
9 ?+ ?. I! E+ y: U先给上一段代码:
! a4 k- }% R2 q% C; m# {>> a=[1 2 3;4 5 6;7 8 9;10 11 12];( E+ }5 i# o9 b- a/ Q) F
>> b=reshape(a,2,6);
( M9 n4 Q! P! D2 L! r) J I# H# M4 p n7 R. s/ p
这段代码的结果是这样的:
# u# m$ h1 E. [>> a. e9 S# ?; \1 n: I/ { s0 v
1 2 3
: k1 [ c }9 A) g. L3 p 4 5 6
) |- R9 y( v) o f# _1 f 7 8 95 \8 i( U- @: t3 a& I2 [" l0 R
10 11 12
3 f z, T# x( }8 k7 Q% J7 L7 W1 {
- q8 s, q1 ^; I! v6 S>> b9 c, N* f) K0 P
1 7 2 8 3 9
" H4 E- h7 i' O( c& N1 h 4 10 5 11 6 12" K$ U5 v0 G* d3 R+ [ n K! T
" j& i# F% F7 e$ }对于 b=reshape(a,m,n);' C- K& K) Y& f" c: O# ?4 q
其中的规律是这样的,先把矩阵a按列拆分,然后拼接成一个大小为m*n的向量。然后对这个向量每隔m间隔取一个元素组成一个向量b_i,之后的向量b_i+1也是这样生成,只不过第一个元素往下移一位。这样做完之后得到m个大小为n的行向量,将这些行向量拼接即可得到矩阵b。& l# s1 T3 W7 U3 I0 D0 z8 }* i1 _
' {8 ?6 m: }; ?# G
4 z, H. `7 n+ i7 A- P后记:毕业设计中用到一个向量变换,一开始比较纠结,用循环实现的。迭代1000多次要用到2秒。后来用reshape函数,总共才用了0.03秒,对于我这个深度强迫症患者来说,这两秒时间我还是看得比较宝贵的,哈哈。 以后写matlab要引以为鉴,尽量少用for循环,多用矩阵或者向量的方式来处理。
+ V9 ^7 h* Q2 Y0 X6 j& }
, K' |' h% g. x7 _2 D |