如何在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

如果他们解决了你的问题,请考虑接受其中的一个答案。这是答案左边的复选标记。谢谢!:)如果他们解决了你的问题,请考虑接受其中的一个答案。这是答案左边的复选标记。谢谢!:)