What's the fastest way to program a matrix recursion in matlab?
显示 更早的评论
The matrix-recursion of the n by n matrices Y_t looks like this:
<<chart-googleapis-com-chart-cht-tx-chl-Y_-t--A-20-2B-20--sum_-i-1---p--20B_-i-Y_-t-i.>>
A and B are given.
This is my attempt, but it runs slowly:
Y = zeros(n,n,T); %Going to fill the 3rd dimension for Y_t, t=1:T
Y(:,:,1:p) = initializingY
for t=(p+1):T
Y(:,:,t) = A;
for i=1:p
Y(:,:,t) = Y(:,:,t) + B(:,:,i)*Y(:,:,t-i);
end
end
Can you think of a more efficient way to do this?
回答(1 个)
Mathias
2015-11-12
Use matrix product!
This code is about 10 times faster on my computer
for t=(p+1):T
Y(:,:,t) = A + sum(Y(:,:,(t-p+1):t).*B, 3);
end
Regards
2 个评论
Rosi Marungu
2015-11-12
Walter Roberson
2015-11-13
pagefun() can be used to do matrix multiplication along the third dimension
类别
在 帮助中心 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!