我想让输出只删除一行并使用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程序?
答案 0 :(得分:3)
根据您对A
和B
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,:)中的第二个冒号扩展到所有可用列。
希望这会有所帮助