我想用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);
似乎没有完成矩阵的连接。 我是初学者,所以遇到了严重的麻烦,请帮忙。
最佳答案
使用元胞数组和 answer to your previous question
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
关于矩阵运算和逐元素运算之间区别的重要说明
在您的问题(以及您的 previous one )中,您混淆了矩阵幂: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
的大小不一样。
关于matlab - 如何在matlab中写这个矩阵,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30187106/