Форум программистов, компьютерный форум, киберфорум
Наши страницы
Matlab
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Stasking
0 / 0 / 0
Регистрация: 04.12.2009
Сообщений: 11
1

Массив. Перемешать и восстановить

08.05.2013, 09:04. Просмотров 1964. Ответов 6
Метки нет (Все метки)

Уважаемые специалисты по матлабу, добрый день! Сразу к делу.
Допустим, дан массив

a = 1 2 3

Перемешаем.

b = randperm(length(a))

b = 2 3 1

Задача: восстановить массив a из массива b, то есть сделать обратную перемешку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2013, 09:04
Ответы с готовыми решениями:

Перемешать массив
Необходимо перемешать массив так, чтобы одинаковые числа в нём не стояли рядом....

Перемешать массив
Здравствуйте! Я новичок. Я пытаюсь понять, как перемешивается массив. Помогите...

Перемешать массив
Перемешать массив чисел по правилам: 1) Позиция каждого элемента после...

Перемешать массив
Нужно перемешать массив, но сохраняя те элементы и их количество, что и было...

Перемешать массив
Есть массив, как его можно перемешать? У меня пока только одна идея, создать...

6
R2D2
897 / 806 / 112
Регистрация: 23.11.2012
Сообщений: 2,385
08.05.2013, 09:41 2
Давайте, для начала, определимся: Вам необходимо восстановить исходный порядок элементов или именно провести операцию, обратную проведенному перемешиванию:
Цитата Сообщение от Stasking Посмотреть сообщение
b = randperm(length(a))
???
0
Stasking
0 / 0 / 0
Регистрация: 04.12.2009
Сообщений: 11
08.05.2013, 10:48  [ТС] 3
необходимо провести обратную операцию.
0
vital792
1999 / 1271 / 60
Регистрация: 05.06.2010
Сообщений: 2,213
08.05.2013, 11:49 4
вопрос поставлен не совсем корректно. Строка b = randperm(length(a)) перемешивает строку a = [1 2 3] только если исходная строка именно упорядочена. Тогда обратная операция это сортировка). Если же задача такая как писал Dimka_rtf, создать правило прямой и обратной перестановки, то обратная операция - сортировка и сохранение индексов сортированных элементов. Пример - Частотный скремблер в MATLAB Посмотрите строки 19-20 в моем примере
0
Stasking
0 / 0 / 0
Регистрация: 04.12.2009
Сообщений: 11
09.05.2013, 10:51  [ТС] 5
Хмм. Не совсем понятно каким образом я могу это использовать.
0
vital792
1999 / 1271 / 60
Регистрация: 05.06.2010
Сообщений: 2,213
09.05.2013, 14:10 6
Еще раз.

Цитата Сообщение от Stasking Посмотреть сообщение
Допустим, дан массив
a = 1 2 3
Перемешаем.
b = randperm(length(a))
Восстановим:
Matlab M
1
a1 = sort(b)
восстановили, не так ли? Но практической пользы в данном примере никакой. Другой пример:
Дан массив (произвольный, неупорядоченный):
Matlab M
1
a = randi(10, 10, 1)
случайный массив командой b = randperm(length(a)) не перемешаешь, но эта команда может быть использована как правило прямой перестановки, то есть ее результат будет содержать индексы переставляемых элементов:
Matlab M
1
2
3
a = randi(10, 10, 1)
direct = randperm(length(a));
b = a(direct)
Выполнили перестановку. Теперь обратная операция:
Matlab M
1
2
3
4
[~, inverse] = sort(direct);
a1 = b(inverse)
% и сравним
a1-a
1
Stasking
0 / 0 / 0
Регистрация: 04.12.2009
Сообщений: 11
09.05.2013, 14:16  [ТС] 7
vital792, ого, то, что нужно!) спасибо за помощь) Вы - мастер объяснять)
0
09.05.2013, 14:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2013, 14:16

Перемешать массив строк.
Здравствуйте, не могу сделать программу, где будет генерироваться имена без...

Перемешать многомерный массив
Имеется следующий массив Array ( => Array ( ...

Как перемешать массив?
Здравствуйте! подскажите, как перемешать массив, используя один или несколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru