MATLAB:根据规范从现有矩阵创建新矩阵

时间:2010-06-24 22:15:34

标签: matlab matrix

假设我们有以下数据:

H_T = [36 66 21 65 52 67 73; 31 23 19 33 36 39 42]
P   = [40 38 39 40 35 32 37]

使用MATLAB 7.0,我想创建三个具有以下属性的新矩阵:

矩阵H(矩阵H_T中的第一部分)将被划分为3个区间:

  • 矩阵1:第一个间隔包含20到40之间的H
  • 矩阵2:第二个间隔包含40到60之间的H
  • 矩阵3:第3个间隔包含60到80之间的H

重要的是,相应的TP也会包含在新的矩阵中,这意味着H将根据上面定义的规范控制新的矩阵。

因此,结果矩阵将是:

H_T_1 = [36 21; 31 19]
P_1   = [40 39]

H_T_2 = [52; 36]
P_2   = [35]

H_T_3 = [66 65 67 73; 23 33 39 42]
P_3   = [38 40 32 37] 

实际上,这是一个简单的例子,通过根据规范创建新矩阵很容易,但在我的值中我有数千个数字,这使得它很难做到。

1 个答案:

答案 0 :(得分:2)

这是一个快速解决方案

[~,bins] = histc(H_T(1,:), [20 40 60 80]);

outHT = cell(3,1);
outP = cell(3,1);

for i=1:3
    idx = (bins == i);
    outHT{i} = H_T(:,idx);
    outP{i} = P(idx);
end

然后您访问矩阵:

>> outHT{3}
ans =
    66    65    67    73
    23    33    39    42
>> outP{3}
ans =
    38    40    32    37