Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
 
 
主题工具 显示模式
旧 2009-08-18, 03:13   #1
豆包0723
初级会员
 
注册日期: 2009-08-18
年龄: 45
帖子: 1
声望力: 0
豆包0723 正向着好的方向发展
问题 新人请教问题,帮我看看对不对,多谢

有两个问题想请教一下,别嫌太简单,我是新人,先多谢了!
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 编辑。 原因: 附加
豆包0723 当前离线   回复时引用此帖
 

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 13:20


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.