【问题标题】:Find over all combinations column in matrix for `corrcoef` computation查找矩阵中的所有组合列以进行“corrcoef”计算
【发布时间】: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


【解决方案1】:

[R,P] = corrcoef(A) 其中A 是一个 100x4 矩阵将给出一个 4x4 相关矩阵。

换句话说,列组合已经包含在 corrcoef 函数中。您可以通过常规索引访问配对比较:

R(3,4) 用于第 (3rd,4th) 列系数。

【讨论】:

    猜你喜欢
    • 2019-10-11
    • 2019-11-19
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 2016-04-23
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多