作者sanzosaskura (巫师c的小弟)
看板MATLAB
标题Re: [讨论] 请教一段程式写法
时间Thu Jul 5 17:33:03 2012
※ 引述《jeffppp (烦..)》之铭言:
: a1=[1 2 3 4 . . .];
: a2=[5 2 5 1 . . .];
: a3=[4 5 2 1 . . .];
: .
: .
: a9=[1 4 5 8 . . .];
: a = [a1;a2 ... ; a9];
: B = zeros(size(a1));
: for i=1:n
: B(i)=det(reshape(a(:,i),3,3));
: end
: (如果你连这个for 都不想要,那可能还要再另请高人 XD)
: ※ 引述《math99 (新世界)》之铭言:
: : 假设我有 9 个 n by 1 行向量 和 1 个存值的 n by 1 行向量
: : 然後我想要做的是,把这 9 个 行向量的 i 个元素
: : 抓出来,组合 成 3 by 3 矩阵(有固定顺序),然後算 行列式
: : 算出来的值再放入存值的行向量第 i 个元素里面
: : ----
: : 请问高手,这样有向量式的写法吗?
: : 用回圈跑实在太久了
: : 谢谢
如果完全不想用回圈的话可以从3*3的矩阵det公式下手
ex: B(i)=det([a1 a2 a3;
a4 a5 a6;
a7 a8 a9])
=> B(i) = a1*a5*a9 + a2*a6+a7 + a3*a4*a8
-a3*a5*a7 - a6*a8*a1 - a9*a2*a4
这样就可以透过向量运算直接算出来
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.27.148
1F:推 jeffppp:对齁 记得加 . 07/05 17:40
2F:推 doom8199:再快一点的话可以共用乘法器, 例如 a1*a5*a9 - a6*a8*a1 07/05 19:22
3F:→ doom8199:= a1*(a5*a9 - a6*a8) 07/05 19:22
4F:→ math99:谢谢 我试试看 07/05 21:06