如何从矩阵中仅删除所需的行,并使用matlab返回矩阵的其余行

时间:2013-02-20 10:26:42

标签: matlab

我想让输出只删除一行并使用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程序?

3 个答案:

答案 0 :(得分:3)

根据您对AB

的定义,试试这个
C = A(B,:)
D = A(setdiff(1:size(A,1),B),:)

我希望你能轻松将它们包装成一个函数。

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

答案 2 :(得分: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,:)中的第二个冒号扩展到所有可用列。

希望这会有所帮助