Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2009-08-18
年龄: 45
帖子: 1
声望力: 0 ![]() |
![]()
有两个问题想请教一下,别嫌太简单,我是新人,先多谢了!
1.有v = [1,2, ...,50],A = magic(50) , 用v’*(v*A) 和 (v’*v)*A 得出的答案相同,哪个运行更快?为什么? 另外有道题,帮我看看对不对,谢谢! 2. A和B是两个n*n的矩阵,让写一个function T = blocktridiag(A,B) ,这是由A和B 构成的BLOCK对角线矩阵,(维n平方*n平方),A是主对角线,B是辅对角线,也就是说当n=3时,矩阵应该是 T= [ A B 0 B A B 0 B A ] 这其中0是n*n的零矩阵,这里可以使用 kron 和 diag. 我做的答案如下: function T=blocktridiag(A,B) [M_a,N_a]=size(A); [M_b,N_b]=size(B); if (M_a==N_a) && (M_b==N_b) && (M_a==M_b) n=M_a; K=ones(n); G=zeros(n^2); if n>=1 && n<=2 for i=0: (n-1) C=diag(diag(K,i),i); if i==0 G=G+kron(C,A); else F=kron(C,B); G=G+F+F'; end end else for i=0: (n-2) C=diag(diag(K,i),i); if i==0 G=G+kron(C,A); else F=kron(C,B); G=G+F+F'; end end end G else end end 此帖于 2009-08-18 03:58 被 豆包0723 编辑。 原因: 附加 |
![]() |
![]() |