2013-02-20 114 views
0

我想要得到的输出只删除一行并使用matlab返回剩余行。 对于例如:考虑一个矩阵如何从矩阵中只去除所需的行并使用matlab返回矩阵的其余行使用matlab

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

对于情形1,我需要有其中第一矩阵显示所需的行和其它矩阵显示器的其余行的单独的基质。

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

试试这个,鉴于A你的定义和B

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

我希望你可以很容易地把它们包装成一个功能。

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,:)扩展为所有可用的列。

希望这有助于

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 
+0

但是如何让循环选择一行一行并显示其余矩阵。 – Ash 2013-02-20 10:47:38

+1

请注意,这是一个破坏性的操作,在执行完'A(row,:) = []后''A'变为3行数组。这似乎不符合最初的要求。 – 2013-02-20 10:51:54

+0

@HighPerformanceMark - 好点,我只是觉得他会用它来做类似于我刚刚编辑的功能。 – johnish 2013-02-20 11:10:10