Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 矩阵的幂_Matlab_Matrix_Multiplication_Bsxfun - Fatal编程技术网

Matlab 矩阵的幂

Matlab 矩阵的幂,matlab,matrix,multiplication,bsxfun,Matlab,Matrix,Multiplication,Bsxfun,我有一个方阵a(nxn)。我想将这个矩阵的一系列k次幂创建成一个nxk多维矩阵(不是元素而是矩阵的实际幂),即获取[a^0 a^1 a^2..a^k]。这是一种不同的范德蒙矩阵情形 我可以做它与循环,但它是恼人的和缓慢的。我尝试使用bsxfun,但没有成功,因为我可能在这里遗漏了一些东西 下面是我做的一个简单循环: for j=1:1:100 final(:,:,j)=A^(j-1); end 您正在尝试使用k值的向量执行的累积版本 可悲的是,他还没有进化到处理这样的案件。因此,在

我有一个方阵a(nxn)。我想将这个矩阵的一系列k次幂创建成一个nxk多维矩阵(不是元素而是矩阵的实际幂),即获取
[a^0 a^1 a^2..a^k]
。这是一种不同的范德蒙矩阵情形

我可以做它与循环,但它是恼人的和缓慢的。我尝试使用bsxfun,但没有成功,因为我可能在这里遗漏了一些东西

下面是我做的一个简单循环:

for j=1:1:100 
    final(:,:,j)=A^(j-1); 
end
您正在尝试使用
k
值的向量执行的累积版本

可悲的是,他还没有进化到处理这样的案件。因此,在这一点上,我所能建议的最好方法是拥有一个正在运行的存储,它在每次迭代中累积矩阵积,以便在下一次迭代中使用

您的原始循环代码如下所示-

final = zeros([size(A),100]);
for j=1:1:100 
    final(:,:,j)=A^(j-1); 
end
因此,根据建议,修改后的循环代码将是-

final = zeros([size(A),100]);
matprod = A^0;
final(:,:,1) = matprod;
for j=2:1:100 
    matprod = A*matprod;
    final(:,:,j)= matprod;
end
基准测试-

%// Input
A = randi(9,200,200);

disp('---------- Original loop code -----------------')
tic
final = zeros([size(A),100]);
for j=1:1:100 
    final(:,:,j)=A^(j-1); 
end
toc

disp('---------- Modified loop code -----------------')
tic
final2 = zeros([size(A),100]);
matprod = A^0;
final2(:,:,1) = matprod;
for j=2:1:100 
    matprod = A*matprod;
    final2(:,:,j)= matprod;
end
toc
运行时-

---------- Original loop code -----------------
Elapsed time is 1.255266 seconds.
---------- Modified loop code -----------------
Elapsed time is 0.205227 seconds.

非常感谢您的快速回复。这给出了矩阵的元素级幂。我正在寻找矩阵的mpower。这是一个^k,而不是一个^k。我希望我的问题清楚。再次感谢!好啊我会再解释清楚的。k是0:1:m的向量(例如m=100)。我想得到矩阵a(nxn)的m次幂。这是一个[a^0 a^1 a^2…a^m]的多数组。在所有m矩阵中。或者是NXM阵列。我希望我现在更清楚了。抱歉搞混了。@imtl是的,我想现在清楚了,谢谢。另外,您是否可以添加一些您可能尝试过的for循环代码来解决问题?我已经将循环添加到发布的问题中。很抱歉,我是这个网站的新手,对格式不熟悉。谢谢大家的帮助。我很感激。