0

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

sub_sds = zeros(nSub,num_comparisons);

然后,我使用以下代码获得了一个 10x2 矩阵,其中包含数字 1-5 的可能组合值。

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

我想要做的是用“all_sds”中的适当值填充矩阵“sub_sds”,因此第一个主题变量1xvariable2比较值将进入“sub_sds”变量的row1 col1,第一个主题variable1xvariable3比较值将进入row1 col2等。我创建了变量“comps”,因为我认为我可以使用它的值索引到“all_sds”,但我现在意识到我不知道如何正确地做到这一点。我一直在使用嵌套循环进行值分配,这就是我所得到的。

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

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

4

1 回答 1

0

您可以使用

sub_sds = zeros(nSub,num_comparisons);
for i=1:size(all_sds,3)
    sub_sds(i,:) = nonzeros(triu(all_sds(:,:,i)',1));
end
于 2015-08-05T01:22:22.597 回答