Форум программистов, компьютерный форум, киберфорум
Наши страницы

Matlab

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Stasking
0 / 0 / 0
Регистрация: 04.12.2009
Сообщений: 11
#1

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

08.05.2013, 09:04. Просмотров 1872. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Массив. Перемешать и восстановить (Matlab):

Перемешать массив - C++ Builder
Есть массив, как его можно перемешать? У меня пока только одна идея, создать новый и туда рандомно записать элементы из массива который...

Перемешать массив - C#
Здравствуйте! Я новичок. Я пытаюсь понять, как перемешивается массив. Помогите разобраться пожалуйста. Правильно ли я понимаю? ...

Перемешать массив - Pascal ABC
Необходимо перемешать массив так, чтобы одинаковые числа в нём не стояли рядом. А если это не возможно вывести "0". А да с начала вводится...

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

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

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

6
R2D2
882 / 793 / 110
Регистрация: 23.11.2012
Сообщений: 2,342
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
1996 / 1268 / 56
Регистрация: 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
1996 / 1268 / 56
Регистрация: 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
Привет! Вот еще темы с ответами:

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

Перемешать двумерный массив - C#
Здравствуйте! Я воспользовался поиском по форуму и нашёл код для перемешивания двумерного массива. Подстроил его в свой код, но ничего не...

Перемешать многомерный массив - PHP
Имеется следующий массив Array ( => Array ( => Что делает функция mysql_connect()? ...

Shuffle, как перемешать массив? - PHP
Как массив то перемешать? всю жизнь работало а тут на тебе... var_dump ($list); $list=shuffle($list); echo "<br>Second:"; ...


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

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

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