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

How to delete a particular element from a matrix in SciLab

显示(A)

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

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

我要删除 11

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))

在常规矩阵中,您不能只删除一个元素,如上述答案中所述:您必须删除整行或整列。但是在稀疏矩阵中你可以。稀疏矩阵仅存储矩阵的非零元素。因此,如果您的数据不包含值为 0 的有效元素,您可以 "delete" 任何元素,方法是将其设置为 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:");

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

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

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