所以我有一个名为" 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
显然我不知道如何使用另一个矩阵索引到一个矩阵......加上它在一个循环中,所以我倍加困惑。任何人都可以指出我如何做到这一点的正确方向?非常感谢。
答案 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