matlab - 如何在matlab中写这个矩阵,

标签 matlab matrix

我想用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    

有关更多信息,您可以阅读 dealcell2mat .


关于矩阵运算和逐元素运算之间区别的重要说明

在您的问题(以及您的 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/

相关文章:

matlab - matlab中两个矩阵之间的相关性

math - 如何从相机校准数据绘制相机和图像位置?

matlab - 矩阵各行的排列

python - 从列表中查找矩阵中的字符串元素

mysql - Excel 未保存为数字格式(MySQL 到 Excel)

matlab - 在 MATLAB 中调整玫瑰图的显示部分

matlab - 在 Matlab 中将 3D 矩阵维度作为向量获取

C# 多变量数组

matlab - 对单位使用 sqrt 函数时出错

c++读取csv文件并操作数据然后打印错误