0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 11
|
|
1 | |
Удалить элементы, которые встречаются более одного раза08.12.2013, 15:31. Показов 6238. Ответов 15
Метки нет Все метки)
(
Вопрос состоит в следующем - мне нужно без цикла удалить абсолютно все повторяющиеся элементы. Функцией unique я воспользоваться не могу, так как она оставляет хотя бы один экземпляр повторяющегося элемента.
Мне надо так: a=[1,2,3,1,2], а b в таком случае равно b=[3] Как сделать это без цикла?
0
|
|
08.12.2013, 15:31 | |
Ответы с готовыми решениями:
15
Подпрограмма: вывести элементы массива, которые встречаются больше 1 раза Исключить из массива все элементы, встречающиеся более одного раза
|
10.12.2013, 19:02 | 2 | ||||||||||
Так-с
![]() Ну для начала нужно узнать, сколько раз встречаются элементы в массиве, а потом уже делать вывводы и действия ![]() Если использовать цикл, то все просто:
![]() а другая загвоздка в том, что длинна массива х практически никогда не равна длине а, поэтому без цикла их переварить затруднительно, на первый взгляд... С другой стороны, если длины векторов разные, то это наталкивает на мысль об матричном умножении (столбец на строку дает матрицу), но нам нужно сравнить, а не умножать. ![]() ![]() ![]() Получаем:
3
|
0 / 0 / 0
Регистрация: 19.08.2015
Сообщений: 15
|
|
10.09.2015, 16:30 | 3 |
Всем привет, у меня матлаб матерится на этот код:
Error using == Matrix dimensions must agree есть мысли как это пофиксить? И еще вопрос, я нигде не могу найти подробного описания функции unique, хотелось бы почитать. Пытаюсь допилить этот код, но при том мне нужно получить исходный массив x, в котором все НЕ уникальные элементы будут приравнены к нулю, а все уникальные элементы останутся на своих i-тых местах ![]() второй день ковыряюсь, что то пока не получается ![]()
0
|
186 / 191 / 43
Регистрация: 13.05.2013
Сообщений: 709
|
|
10.09.2015, 16:53 | 4 |
http://www.mathworks.com/help/... nique.html
Если код у Зосимы скопировали, то там все в порядке.
1
|
0 / 0 / 0
Регистрация: 19.08.2015
Сообщений: 15
|
|
10.09.2015, 17:35 | 5 |
не сомневаюсь, конечно я скопировал не полный код, у меня матрица x представляет собой вектор-столбец из 12к чисел, уникальных элементов там около 3к
![]() Добавлено через 9 минут Пофиксил, транспонировал x в вектор-строку. Если есть мысли по основной задаче, буду очень благодарен ![]()
0
|
186 / 191 / 43
Регистрация: 13.05.2013
Сообщений: 709
|
|
10.09.2015, 17:52 | 6 |
Если по этому вопросу
То в 4 строке кода Зосимы меняете [] на 0.
0
|
0 / 0 / 0
Регистрация: 19.08.2015
Сообщений: 15
|
||||||
10.09.2015, 18:05 | 7 | |||||
конечно эта мысль была первой что пришла мне в голову
![]()
0
|
186 / 191 / 43
Регистрация: 13.05.2013
Сообщений: 709
|
|
10.09.2015, 18:12 | 8 |
Arrow, А не проще занулить уникальные элементы в векторе Х?
Чем вот составлять вектор А из уникальных Х, после сравнивать их элементы и удалять совпадения из Х. Или я опять же вас не понимаю)
0
|
0 / 0 / 0
Регистрация: 19.08.2015
Сообщений: 15
|
|
10.09.2015, 18:16 | 9 |
проще, только вот не работает если заменить y на x, а почему не работает пока не понимаю
![]() Добавлено через 1 минуту с этим не большое дополнение, это число как раз последнее в векторе a , почему то остальные элементы в новый вектор не записываются
0
|
186 / 191 / 43
Регистрация: 13.05.2013
Сообщений: 709
|
||||||
10.09.2015, 18:23 | 10 | |||||
А чего не получается? Вот код зануления уникальных элементов
1
|
0 / 0 / 0
Регистрация: 19.08.2015
Сообщений: 15
|
|
10.09.2015, 18:37 | 11 |
почему то раньше он не срабатывал, наверно где то была ошибка, однако чутка допилил для зануления НЕ уникальных элементов.
![]()
0
|
0 / 0 / 0
Регистрация: 19.08.2015
Сообщений: 15
|
|
14.09.2015, 20:41 | 12 |
Ребят, а вот такой вопрос на засыпку, код удаляет все элементы которые встречаются больше одного раза, а можно ли как то оставить первый встретившийся элемент, а остальные удалить. (то есть кроме уникальных элементов оставить еще первый не уникальный) ?
0
|
186 / 191 / 43
Регистрация: 13.05.2013
Сообщений: 709
|
||||||
14.09.2015, 22:54 | 13 | |||||
1
|
0 / 0 / 0
Регистрация: 19.08.2015
Сообщений: 15
|
|
15.09.2015, 12:46 | 14 |
спасибо, но может быть я не до конца описал задачу. Допустим есть у нас уникальные элементы и не уникальные, и тех и других много, но НЕ уникальные элементы это те, которые встречаются более 1 раза, можно ли оставить каждый первый НЕ уникальный элемент (то есть не самый первый (минимальный) а каждый первый).
0
|
186 / 191 / 43
Регистрация: 13.05.2013
Сообщений: 709
|
|||||||||||
15.09.2015, 16:42 | 15 | ||||||||||
Дак тупо
1
|
0 / 0 / 0
Регистрация: 19.08.2015
Сообщений: 15
|
|
15.09.2015, 18:18 | 16 |
о как, спасибо
![]()
0
|
15.09.2015, 18:18 | |
Помогаю со студенческими работами здесь
16
Все элементы вектора, которые встречаются более одного раза, переписать в другой вектор
Изменить матрицу так, чтобы в строках остались элементы, которые встречаются более одного раза, а другие заменить нулями Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |