我有一个像这样的矩阵:
a=[ 20 30 45 55;
25 25 50 60;
100 29 36 52;
28 33 48 62];
我想要另一个矩阵,使得这个新矩阵的行在a
矩阵的第一行的±10范围内。
例如,在这种情况下,我们有矩阵b
:
b=[20 30 45 55;
25 25 50 60;
28 33 48 62]
答案 0 :(得分:3)
使用bsxfun
(或implicit expansion如果您有MATLAB 2016b或更高版本)从第一行中减去所有行,并取abs
olute值。然后使用any
与~
一起查找(define (mintwo lst)
(cond ((null? (cdr lst)) (car lst))
((< (car lst) (mintwo (cdr lst))) (car lst))
(else (mintwo (cdr lst)))) )
(define (maxtwo lst)
(cond ((null? (cdr lst)) (car lst))
((> (car lst) (maxtwo (cdr lst))) (cdr lst))
(else (maxtwo (cdr lst)))) )
的行,这些行不包含第一行±10范围之外的任何值。然后最后使用logical indexing来选择那些行。
<强>代码:强>
a
给定b = abs(bsxfun(@minus, a,a(1,:)));
b = a(~any(b>10,2),:);
的输出:
a