我有
x1 = [0, 12, 0, 3, -1, 7]
x2 = [1, -2, 1, 3, 12, 4]
任何人都知道如何做一些简单的方法,例如“选择x1,其中x1> 2和x2< 4 order by x1”? 所以,我需要:
x1 = [3, 12]
x2 = [3, -2]
感谢您的帮助
答案 0 :(得分: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]
是按升序排列的。
答案 1 :(得分:1)
值得指出sortrows
的使用,因为它用于对2D数组进行排序,正如您的问题中特别要求的那样。以下是如何有选择地做到这一点:
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)'
排序行中的,1
表示要使用第一列x1
来对矩阵进行排序。请注意在x
和sortrows
的输出上形成转置操作。