2015-01-16 1 views

ответ

1

Команда clear используется для удаления целых переменных см documentation. Если бы вы могли clear на 3,3 поля было бы привести к искаженной матрице:

1.  4.  5. 
9.  13. 11. 
46. 29.  

Я не знаю способ это возможно.

Что вам нужно? Вы хотите, чтобы определенные поля игнорировались. Вы можете просто установить его значение NaN (не число) и проверить, если он нан в коде с isnan:

A = rand(3,3) 

A(3,3)= %nan 

disp(A) 
non_nans_indices = find(~isnan(A)) 

disp(A(non_nans_indices)) 
0

В обычной матрице вы не можете удалить только один элемент, как указано в ответе выше : вам нужно удалить полную строку или полный столбец. Однако в разреженной матрице вы можете. Редкая матрица хранит только ненулевые элементы матрицы. Так что, если ваши данные не содержат допустимые элементы с 0 значением, вы можете «удалить» любой элемент, установив его на 0, а затем преобразовать матрицу в разреженном виде с sparse команды:

A=rand(3,3); 
disp(A,"original matrix:"); 
A(3,3)=0; 
disp(A,"element is nulled out:"); 
A=sparse(A); 
disp(A,"sparse matrix:"); 

Таким образом, вы Безразлично 't сохранить 0 значений матрицы, которые могут сэкономить память или место для хранения. Если вы хотите, чтобы преобразовать обратно, вы можете использовать команду full: элементы «недостающие» являются representeted нулями снова:

B=full(A); 
disp(B,"full form:"); 

Но я думаю, что для отсутствующих или недопустимых значений, лучше использовать %nan в соответствии с рекомендациями выше тоже: с этим легче справляться, более согласованно, и вы можете иметь нули в матрице в качестве достоверных данных.

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

  • Нет связанных вопросов^_^