我有一个列向量:
A = [1; 2; 3; 4; 4; 5; 5; 7];
Run Code Online (Sandbox Code Playgroud)
我希望排除A第二个矩阵中的元素B:
B = [4; 5]
Run Code Online (Sandbox Code Playgroud)
最终结果应该是:
A = [1; 2; 3; 7]
Run Code Online (Sandbox Code Playgroud)
我很确定使用MATLAB优雅的语法,这可以在不编写for循环的情况下完成,但不确定如何?
我想从矩阵中删除几个特定值(如果存在).极有可能在矩阵中存在多个值的副本.
例如,考虑N乘2矩阵intersections.如果值对[a b]并[c d]在该矩阵中作为行存在,我想删除它们.
比方说,我想删除像行[-2.0 0.5]和[7 7]下面的矩阵:
intersections =
-4.0000 0.5000
-2.0000 0.5000
2.0000 3.0000
4.0000 0.5000
-2.0000 0.5000
Run Code Online (Sandbox Code Playgroud)
所以删除后我得到:
intersections =
-4.0000 0.5000
2.0000 3.0000
4.0000 0.5000
Run Code Online (Sandbox Code Playgroud)
这样做最有效/优雅的方法是什么?
以下示例出现在MATLAB教程中:
X = [16 2 13;
5 11 8;
9 7 12;
4 14 1]
Run Code Online (Sandbox Code Playgroud)
使用单个下标删除单个元素或元素序列,并将剩余元素重新整形为行向量.所以:
X(2:2:10) = []
Run Code Online (Sandbox Code Playgroud)
结果是:
X = [16 9 2 7 13 12 1]
Run Code Online (Sandbox Code Playgroud)
神秘的是,第4行的整个第2行和前两个元素已被删除,但我看不到删除元素的位置与索引向量之间的对应关系2:2:10.有人可以解释一下吗?