我有一个名为 data 的 matlab 数组
34.6237 78.0247 0
30.2867 43.8950 0
35.8474 72.9022 0
60.1826 86.3086 1.0000
79.0327 75.3444 1.0000
45.0833 56.3164 0
61.1067 96.5114 1.0000
75.0247 46.5540 1.0000
76.0988 87.4206 1.0000
84.4328 43.5334 1.0000
这是三个字段。现在我想将值放入两个变量中,例如 A 和 B,但 A 应该包含第三列具有条目 1 的值,B 应该包含第三列具有条目 0 的值
因此本例的示例输出为
A =
60.1826 86.3086
79.0327 75.3444
61.1067 96.5114
75.0247 46.5540
76.0988 87.4206
84.4328 43.5334
类似地,其余条目将用于 B
B =
34.6237 78.0247
30.2867 43.8950
35.8474 72.9022
45.0833 56.3164
我不想通过编写循环并提取它们来做到这一点。
我试过
tempVariable = 数据(y > 0)
其中变量y = data(:, 3)
有人可以推荐一个单线来完成这项工作吗?
最佳答案
试试这个:
maskA = data(:,3) == 1;
A = data( maskA, [1 2]);
B = data(~maskA, [1 2]);
我们在这里做的是:
- 创建一个 N×1 逻辑向量,该向量对于所有
A
行都为true
。 - 将
A
定义为所有maskA
行和列 [1 2] - 将
B
定义为所有 NOTmaskA
行和列 [1 2]
关于python - matlab数组索引问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28778650/