如何在没有for循环的情况下在matlab中将矩阵提升为幂向量?

时间:2016-02-29 09:48:33

标签: matlab matrix vector

我有一个2x2矩阵,我想在每次乘法后存储结果时自己乘以10次。这可以通过for循环轻松完成,但我想将其向量化,以消除for循环。我的方法是使用我的2x2矩阵a并将其提升为带有元素b的向量1:10。答案应该是2x2x10矩阵,可以复制输入

a^b(1)
a^b(2)
.
.
.
a^b(10)

为了澄清我没有明智地做这个元素,我需要实际的矩阵乘法,而不想使用for循环。感谢你给与我的帮助。

1 个答案:

答案 0 :(得分:2)

这是给你的代码。我使用cellfun来执行此操作,并且在代码的每一行之后都有注释。它可以从任意矩阵m的自乘的fisrt - n阶计算和存储。如果您有任何疑问,请随时提出。

function m_powerCell = power_store(m, n) %m is your input matrix, n is the highest power you want to reach

  n_mat = [1:n]; %set a vector for indexing each power result in cell

  n_cell = mat2cell(n_mat,1,ones(1,n)); %set a cell for each of the power

  m_powerCell = cellfun(@(x)power(m, x), n_cell, 'uni', 0);  %compute the power of the matrix

end

%this code will return a cell to you, each element is a matrix, you can
%read each of the matrix by m_powerCell{x}, x represents the xth order