如何在matlab中使用for循环删除相似第二列元素的行
我有一个矩阵:如何在matlab中使用for循环删除相似第二列元素的行,matlab,for-loop,matrix,Matlab,For Loop,Matrix,我有一个矩阵: A=[2,2,4;1,2,3;4,5,6;4,5,6;4,5,6;7,8,9] 如何使用for循环删除第二列元素与matlab中前一行第二列元素相同的行?目标是达到: A=[2,2,4;4,5,6;7,8,9] 我认为此示例代码可以完成以下任务: A=[2,2,4;1,2,3;4,5,6;4,5,6;4,5,6;7,8,9] % First row will always be the same of the A matrix res_mat(1,:) = A(1,:);
A=[2,2,4;1,2,3;4,5,6;4,5,6;4,5,6;7,8,9]
如何使用for循环删除第二列元素与matlab中前一行第二列元素相同的行?目标是达到:
A=[2,2,4;4,5,6;7,8,9]
我认为此示例代码可以完成以下任务:
A=[2,2,4;1,2,3;4,5,6;4,5,6;4,5,6;7,8,9]
% First row will always be the same of the A matrix
res_mat(1,:) = A(1,:);
row = 2;
for i = 2 : size(A,1)
if A(i,2) ~= A(i-1,2)
res_mat(row,:) = A(i,:);
row = row + 1;
end
end
res_mat
HTH;) 我认为这个示例代码可以完成以下任务:
A=[2,2,4;1,2,3;4,5,6;4,5,6;4,5,6;7,8,9]
% First row will always be the same of the A matrix
res_mat(1,:) = A(1,:);
row = 2;
for i = 2 : size(A,1)
if A(i,2) ~= A(i-1,2)
res_mat(row,:) = A(i,:);
row = row + 1;
end
end
res_mat
HTH;) 不需要循环
在这里,您可以使用true
在第二列之间存在差异的位置创建一个逻辑向量,如果值相等,则使用false
创建一个逻辑向量:
这可以通过如下方式使用diff
实现:diff(A(:,2))~=0
。现在,您还需要包括第一行,因此在这个向量的开头添加一个true
:[true;diff(a(:,2))~=0)]
。使用此向量选择所需的行,并使用:
确保获得所有列:
A=[2,2,4;1,2,3;4,5,6;4,5,6;4,5,6;7,8,9]
B = A([true; diff(A(:,2))~=0],:)
B =
2 2 4
4 5 6
7 8 9
不需要循环
在这里,您可以使用true
在第二列之间存在差异的位置创建一个逻辑向量,如果值相等,则使用false
创建一个逻辑向量:
这可以通过如下方式使用diff
实现:diff(A(:,2))~=0
。现在,您还需要包括第一行,因此在这个向量的开头添加一个true
:[true;diff(a(:,2))~=0)]
。使用此向量选择所需的行,并使用:
确保获得所有列:
A=[2,2,4;1,2,3;4,5,6;4,5,6;4,5,6;7,8,9]
B = A([true; diff(A(:,2))~=0],:)
B =
2 2 4
4 5 6
7 8 9
如果他们解决了你的问题,请考虑接受其中的一个答案。这是答案左边的复选标记。谢谢!:)如果他们解决了你的问题,请考虑接受其中的一个答案。这是答案左边的复选标记。谢谢!:)