首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >矩阵内矩阵matlab

矩阵内矩阵matlab
EN

Stack Overflow用户
提问于 2013-11-26 01:22:03
回答 2查看 272关注 0票数 1

我尝试在矩阵中输入矩阵

代码语言:javascript
复制
A=[1 2;2 1];
C=[0 1];

然后将矩阵输入到新的矩阵中

代码语言:javascript
复制
D =[CA;CA^2;CA^3;........;CA^n]

我试着用

代码语言:javascript
复制
n=40;

a(1,1)=1;
a(1,2)=1;
a(2,1)=1;
a(2,2)=1;
C=[0,1];



for k=1:n
   for i=1:2
      for j=1:2
          d(i,j)=c*a(i,j)*^n
      end
   end
end

当n是整数但我不能

如何解决?

非常感谢您的关注

EN

回答 2

Stack Overflow用户

发布于 2013-11-26 01:46:04

首先,不需要单独声明A的元素。正如您在第一个代码中所展示的,代码片段就可以了。

因此,您总是在计算d(i,j)=c*a(i,j)*^40,而应该以n的速度使用k

a(i,j)*^k的语法也不正确,因为*^既不乘法,也不求幂。因此,MATLAB将返回一个错误。

此外,你会得到Subscripted assignment dimension mismatch.错误,因为C是1x2矩阵,而A(i,j)只是一个元素。

我说它不会模仿D =[CA;CA^2;CA^3;........;CA^n]过程的原因是因为你只对C和A做元素明智的操作,然后把它们放到D中,我相当确定这不是你运行的磨坊矩阵乘法-即使你正确地分解了它-但这是低效的,因为MATLAB会为你做这件事。

代码语言:javascript
复制
clear D
n=10;

A=[1 2;2 1];
C=[0,1];

for k=1:n
    D(k,:) = C*A^k;
end


D =

       2           1
       4           5
      14          13
      40          41
     122         121
     364         365
    1094        1093
    3280        3281
    9842        9841
   29524       29525
票数 2
EN

Stack Overflow用户

发布于 2013-11-26 02:10:18

Falimond给出了很好的答案。

然而,这里可以节省大量的矩阵乘法:

我们只需要将上一次迭代的结果乘以A,而不是对每个k使用k的强大功能:D(k,:) = C*A^k = D(k-1,:)*A

代码语言:javascript
复制
n = 10;
A = [1 2;2 1];
C = [0 1];
D = zeros(n, size(C,2) ); % pre-allocate always a good practice
D(1,:) = C*A; % init recursive process
for k=2:n
    D(k,:) = D(k-1,:)*A;
end 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20199262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档