MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   MATLAB:根据规范从现有矩阵创建新矩阵 (https://www.labfans.com/bbs/showthread.php?t=23585)

poster 2019-12-10 20:42

MATLAB:根据规范从现有矩阵创建新矩阵
 
假设我们有以下数据:

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个间隔:
[LIST][*]矩阵1:第一个间隔包含20到40之间的H值[*]矩阵2:第二个间隔包含40到60之间的H值[*]矩阵3:第三个间隔包含60到80之间的H值[/LIST]重要的是,相应的T和P也将包含在它们的新矩阵中,这意味着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] 实际上,这是一个简单的示例,通过根据规格创建新矩阵很容易,但是在我的值中,我有成千上万个数字,因此很难做到这一点。



[B]回答:[/B]

这是一个快速的解决方案

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

[url=https://stackoverflow.com/questions/3114302]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 03:01

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.