2014-06-20 5 views
2

Если у меня есть матрица X с одним столбцом, и в некоторых строках она имеет некоторые отрицательные значения. Как удалить только отрицательные значения?удалите строки матрицы в matlab

Пример:

X=[-1; 2; 3; -4; 5] 

должно стать:

X=[2; 3; 5] 

Кроме того, как можно удалить значения из

y=[1; 2; 3; 4; 5] 

основан на том, где отрицательные значения в X найдены? y должен быть [2; 3; 5] после этого операции.

+1

Вы можете просто использовать логическую индексацию: 'Xnew = X (X> 0);' –

+0

Спасибо очень много. –

+0

Если у меня есть x и y матрицы. когда я удаляю любую отрицательную строку в x-матрице, я хочу также удалить ту же строку в матрице y. Как мне это сделать? –

ответ

4

Удаление отрицательных значений из X:

Вы можете переназначить X к вектору, который содержит только значения X, которые не являются отрицательными:

>> X = X(X>=0) 
X = 
    2 
    3 
    5 

или удалить отрицательные значения из X:

>> X(X<0) = [] 
X = 
    2 
    3 
    5 

Извлечение значений из y на основе индексов отрицательных значений в X аналогичен. Либо переназначить:

>> y = y(X>=0) 
y = 
    2 
    3 
    5 

Или удалить:

>> y(X<0) = []  
y = 
    2 
    3 
    5 

Если вы хотите изменить оба вектора на основе отрицательных значений в X помните, чтобы сделать операцию y первого или хранить логический вектор для позиций где X<0. Например:

>> ind = X < 0; 
>> X(ind) = [] 
X = 
    2 
    3 
    5 
>> y(ind) = [] 
y = 
    2 
    3 
    5 
+0

Большое спасибо. Цените свои красивые помогает –

+0

@HishamAlghamdi приветствую вас – timgeb

Смежные вопросы