Gre*_*reg 4 matlab loops matrix matrix-indexing
我目前有一个阵列A,其尺寸为N xtx t.我想创建一个形式的2D矩阵N xt:
B = [ A[:,1,1] A[:,2,2],...,A[:,t,t]]
Run Code Online (Sandbox Code Playgroud)
显然,我能做到的两种方法是完全写出来(因为t很大而不切实际)和循环(可能很慢).有没有办法没有循环这样做.我认为如果我这样做会有效:
B = A[:,[1:end],[1:end]]
Run Code Online (Sandbox Code Playgroud)
但那只是让我回到原来的矩阵.
基本上,您需要开始考虑如何重新组织矩阵.
从
A = randn([5 3 3]);
Run Code Online (Sandbox Code Playgroud)
我们来看看吧
A(:,:)
Run Code Online (Sandbox Code Playgroud)
基本上你想要第1,5,9列.想一想,知道t = 3,从目前的列你想要增加t + 1.公式基本上是:
((1:3)-1)*(3+1)+1 %(or (0:2)*(3+1) + 1)
Run Code Online (Sandbox Code Playgroud)
插入A的产生了您的解决方案
A(:,((1:3)-1)*(3+1)+1)
Run Code Online (Sandbox Code Playgroud)
在一般格式中,您可以:
A(:,((1:t)-1)*(t+1)+1)
Run Code Online (Sandbox Code Playgroud)
编辑:
Amro基本上只是让我感到羞耻.这个想法仍然是一样的,它只是变得更具可读性end
因此使用:
A(:,1:t+1:end)
Run Code Online (Sandbox Code Playgroud)