1

我有

x1 = [0, 12, 0, 3, -1, 7] 
x2 = [1, -2, 1, 3, 12, 4]

任何人都知道简单的方法如何执行“选择 x1 其中 x1>2 和 x2<4 按 x1 排序”之类的操作?所以,我需要:

x1 = [3, 12] 
x2 = [3, -2]

感谢帮助

4

2 回答 2

2

您首先需要找到满足您的约束的索引

ii = x1 > 2 & x2 < 4;

然后你想获取这些索引的值

y1 = x1(ii);
y2 = x2(ii);

现在您需要对 y1 的值进行降序排序,并将排序顺序保存到对 y2 进行排序。这需要使用sort函数的第二个输出参数

[z1, jj] = sort(y1, 'descend');
z2 = y2(jj);

这给了我一个不同的答案,但我认为这[3, 12]是按升序排列的。

于 2013-09-19T16:23:34.577 回答
1

值得指出的是,sortrows因为它用于对二维数组进行排序,正如您的问题中特别要求的那样。以下是有选择地执行此操作的方法:

x1 = [0, 12, 0, 3, -1, 7];
x2 = [1, -2, 1, 3, 12, 4];
x = [x1' x2']
mask = x(:,1)>2 & x(:,2)<4;
sortrows(x(mask,:),1)'

in sort rows 表示使用,1第一列,即x1对矩阵进行排序。注意在形成x和输出时的转置操作sortrows

于 2013-09-19T20:17:37.017 回答