我想用Matlab编写这个矩阵,
s=[0 ..... 0
B 0 .... 0
AB B .... 0
. . .
. . .
. . . 0 ....
A^(n-1)*B ... AB B ]
我已经尝试了下面的代码,但给出了错误,
N = 50;
A=[2 3;4 1];
B=[3 ;2];
[nx,ny] = size(A);
s(nx,ny,N) = 0;
for n=1:1:N
s(:,:,n)=A.^n;
end
s_x=cat(3, eye(size(A)) ,s);
for ii=1:1:N-1
su(:,:,ii)=(A.^ii).*B ;
end
z= zeros(1,60,1);
su1 = [z;su] ;
s_u=repmat(su1,N);
似乎矩阵的串联未完成。我是初学者,所以遇到严重的麻烦,请帮忙。
A = [2 3; 4 1];
B = [3 ;2 ];
N = 60;
[cs{1:(N+1),1:N}] = deal( zeros(size(B)) ); %// allocate space, setting top triangle to zero
%// work on diagonals
x = B;
for ii=2:(N+1)
[cs{ii:(N+2):((N+1)*(N+2-ii))}] = deal(x); %//deal to diagonal
x = A*x;
end
s = cell2mat(cs); %// convert cells to a single matrix
在您的问题(以及上一个问题)中,您混淆了矩阵幂:A^2
和按元素运算A.^2
:
A^2 = [16 9;12 13]
是A*A
A.^2
将每个元素分开并计算其平方:A.^2 = [4 9; 16 1]
在您询问有关矩阵乘积的问题时A*b
,您编写的代码是A.*b
逐个元素的乘积。由于的大小A
和的大小不同,因此b
会出现错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句