2013-02-20 113 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