【发布时间】:2016-01-11 08:30:02
【问题描述】:
我是 MATLAB 的新手。我对比较矩阵中所有可能的组合列感到困惑。假设我有一个输入数据作为矩阵 100x4。我想用 corrcoef 函数(内置于 matlab)比较所有列并保存结果。因此,总组合为 N*(N-1)/2。
clc
clear all
close all
load input;
% data will be a matrix with 100x4
[N,nu] = size(input);
R1_2 = corrcoef(input(:,1),input(:,2));
R1_3 = corrcoef(input(:,1),input(:,3));
R1_4 = corrcoef(input(:,1),input(:,4));
R2_3 = corrcoef(input(:,2),input(:,3));
R2_4 = corrcoef(input(:,2),input(:,4));
R3_4 = corrcoef(input(:,3),input(:,4));
我认为可以通过'for循环'来解决。任何人都可以帮助如何解决这个问题? 谢谢
【问题讨论】:
-
用或不用循环解决它?
-
矩阵总是有 4 列吗?如果是这样,对它进行硬编码是完全可以接受的,因为它只需要 6 行。否则你可能想看看
nchoosek -
使用重复的帖子生成对索引的所有唯一组合,然后遍历每一对,索引到矩阵中以提取这两列并应用
corrcoef。你可能会做这个矢量化,但从简单开始,先做这个让它工作。 -
@rayryeng 问题过早结束。在这种情况下,正确答案是
[R,P] = corrcoef(A)其中 A 是100x4矩阵将给出4x4相关矩阵。也就是说,列组合已经包含在corrcoef函数中了。 -
@marsei 让我重新打开,这样你就可以写一个答案了。
标签: matlab loops for-loop matrix