如何从SciLab中的矩阵中删除特定元素

时间:2015-01-16 03:59:44

标签: scilab

DISP(A)

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

- >清除A(3,3)               ! - 错误276 缺少运算符,逗号或分号。

我想删除11

2 个答案:

答案 0 :(得分:1)

clear命令用于删除整个变量,请参阅documentation。如果你可以clear 3,3字段,那将导致格式错误的矩阵:

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

我不知道这是可能的。

你想要的是什么?是否要将某些字段设置为忽略。您可以将其设置为NaN(非数字),然后使用isnan检查代码中是否为nan:

A = rand(3,3)

A(3,3)= %nan

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

disp(A(non_nans_indices))

答案 1 :(得分: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:");

这样您就不会存储tha矩阵的0值,这可能会节省内存或存储空间。如果要转换回来,可以使用full命令:“missing”元素再次用零表示:

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

但我认为,对于缺失值或无效值,最好使用上面建议的%nan:它更容易处理,更一致,并且您可以在矩阵中将零作为有效数据。