как я могу исключить в матрице все столбцы, последние два элемента которых равны? в Матлаб - PullRequest
1 голос
/ 12 декабря 2011

как я могу исключить в матрице (4000x10) все столбцы, последние два элемента которых равны? (в Matlab)

Ответы [ 3 ]

5 голосов
/ 12 декабря 2011

Я думаю, предыдущие ответы перевернутые строки и столбцы, я бы сделал:

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

A =

     1     2     3
     4     5     6
     5     5     5

Здесь второй столбец имеет те же два последних элемента.

A(:,A(end,:)==A(end-1,:))=[]

A =

     1     3
     4     6
     5     5
1 голос
/ 12 декабря 2011

Сначала вы индексируете все столбцы, последние два элемента которых равны, т.е. последние две строки матрицы равны.Допустим, матрица имеет вид A:

index = (A(:,end) == A(:,end-1) );

Затем, удалив эти столбцы,

A(:,index) = [];
1 голос
/ 12 декабря 2011

Попробуйте:

B = A( : , A(: , end-1) ~= A(: , end) )

Вот почему это работает:

  • A(:,end-1) получает предпоследний столбец
  • A(:,end) получает последний столбец
  • A(: , end-1) ~= A(: , end) выбирает строки, в которых эти записи не равны
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...