我有
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]
感谢帮助
我有
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]
感谢帮助
您首先需要找到满足您的约束的索引
ii = x1 > 2 & x2 < 4;
然后你想获取这些索引的值
y1 = x1(ii);
y2 = x2(ii);
现在您需要对 y1 的值进行降序排序,并将排序顺序保存到对 y2 进行排序。这需要使用sort
函数的第二个输出参数
[z1, jj] = sort(y1, 'descend');
z2 = y2(jj);
这给了我一个不同的答案,但我认为这[3, 12]
是按升序排列的。
值得指出的是,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
。