0

我想让输出只删除一行并使用 matlab 返回其余行。例如:考虑一个矩阵

A = [1  1  1; 2  2  2; 3  3  3; 4  4  4]

对于 case1,我需要一个单独的矩阵,其中第一个矩阵显示所需的行,其他矩阵显示其余行。

就像B=1然后输出将是两个矩阵,其中第一个矩阵将是

C = [1  1  1]

另一个矩阵将是

D = [2  2  2; 3  3  3; 4  4  4]

同样在下一个案例中B=2

然后

C = [2  2  2]
D = [1  1  1; 3  3  3; 4  4  4]

如何为这种情况编写 matlab 程序?

4

3 回答 3

3

试试这个,给定你的定义AB

C = A(B,:)
D = A(setdiff(1:size(A,1),B),:)

我希望您可以轻松地将它们包装成一个函数。

于 2013-02-20T10:37:03.727 回答
2

我想你正在寻找这样的东西

 A =

 1     1     1
 2     2     2
 3     3     3
 4     4     4

row=2;
A(row,:)=[]

A =

 1     1     1
 3     3     3
 4     4     4

为了保留原始矩阵并保存行,我将使用以下函数:

function [ A,out_row ] = removerow( A,row )
%row is the number of the row you want to remove, and 
%A is the matrix you want it removed from.
out_row=A(row,:);
A(row,:)=[];
end
于 2013-02-20T10:43:07.490 回答
0

您可以通过这种方式提取一行:

C = A(1,:)
C =

   1   1   1

您可以以这种方式提取多行 2:4 扩展为 [ 2 3 4 ]

D = A(2:4,: )
D =

   2   2   2
   3   3   3
   4   4   4

'A(1, :) 中的第二个冒号扩展到所有可用列。

希望这可以帮助

于 2013-02-20T10:39:14.237 回答