如何从 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
:它更容易处理,更一致,并且矩阵中的零可以作为有效数据。
显示(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:
检查它是否为 nanA = 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
:它更容易处理,更一致,并且矩阵中的零可以作为有效数据。