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

标签 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] 

实际上,这是一个简单的示例,根据规范创建新矩阵很容易,但在我的值中,我有数千个数字,这使得这样做非常困难。

最佳答案

这是一个快速的解决方案

[~,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

关于MATLAB:根据规范从现有矩阵创建新矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3114302/

相关文章:

matlab - matlab中嵌套函数错误

matlab - 如何在 MATLAB 中显示错误消息?

matlab - 如何让 freeBoundary 尊重初始三角剖分顶点顺序。 (2017a+)

algorithm - 将 3D 矩阵中的数据与另一个矩阵聚类

r - 如何将 R 数据转换为 matlab 矩阵

matrix - 沿一个坐标轴的3D偏斜变换矩阵

matlab - mldivide 是否总是与 MATLAB 中的 OLS 相同?

matlab - 在不同窗口中同时显示不断更新的绘图

python - 矩阵翻转水平或垂直

c - 具有双指针数组的函数 - 在矩阵中找到最大值