使用循环中的另一个矩阵索引到矩阵

时间:2015-08-05 00:02:08

标签: matlab loops matrix indexing neuroscience

所以我有一个名为" all_sds"的矩阵大小为5x5x54,其中5x5矩阵在对角线周围对称,54代表主体数量。 数字5表示变量,因此5x5部分基本上是与另一个相关的每个变量的对称矩阵;共有10个比较。我使用以下代码制作了一个54x10矩阵来为每个参与者存储这10个比较值,其中nSub = 54,num_comparisons = 10,nROI = 5:

sub_sds = zeros(nSub,num_comparisons);

然后,我使用以下代码获取数字1-5的可能组合值的10x2矩阵。

comps = flipud(combnk(1:nROI,2));

我想要做的是填充矩阵" sub_sds"使用" all_sds"中的适当值所以第一个主题变量1x变量2比较值将进入" sub_sds"的第1行col1。变量和第一个主题variable1xvariable3比较值将进入row1 col2等。我做了变量" comps"因为我以为我可以索引到#34; all_sds"使用它的价值但我现在意识到我不知道如何恰当地做到这一点。我一直在使用嵌套循环进行值赋值,这是我得到的。

for qq = 1:nSub
    for ww = 1:num_comparisons
        sub_sds(qq,ww) = all_sds(**something with variable comps**,qq); 
    end
end

显然我不知道如何使用另一个矩阵索引到一个矩阵......加上它在一个循环中,所以我倍加困惑。任何人都可以指出我如何做到这一点的正确方向?非常感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用

sub_sds = zeros(nSub,num_comparisons);
for i=1:size(all_sds,3)
    sub_sds(i,:) = nonzeros(triu(all_sds(:,:,i)',1));
end