У меня есть строка, подобная этой «FBECGHD», и мне нужно использовать MATLAB и сгенерировать все необходимые возможные перестановки? В нем есть конкретная функция MATLAB, которая выполняет эту задачу, или я должен определить пользовательскую функцию MATLAB, которая выполняет эту задачу?MATLAB генерировать комбинацию из строки
ответ
Используйте функцию perms. Строка в MATLAB представляет собой список символов, поэтому он будет переставлять их:
A = 'FBECGHD';
perms(A)
Вы также можете сохранить выход (например, P = perms(A)
), и, если А является строка N символов, P является N! -by-N, где каждая строка соответствует перестановке.
Если вы заинтересованы в уникальных перестановок, вы можете использовать:
unique(perms(A), 'rows')
удалить дубликаты (в противном случае что-то вроде «АВВ» даст 6 результатов, вместо 3, что можно было бы ожидать).
Как ответил Richante, P = perms(A)
очень подходит для этого. Вы также можете заметить, что P
имеет тип char
, и это не удобно для подмножества/выбора отдельной перестановки. Ниже работал для меня:
str = 'FBECGHD';
A = perms(str);
B = cellstr(reshape(A,7,[])');
C = unique(B);
также, что unique(A, 'rows')
не удаление повторяющихся значений:
>> A=[11, 11];
>> unique(A, 'rows')
ans =
11 11
Однако unique(A)
бы:
>> unique(A)
ans =
11
Я не MATLAB про любой и я не исследовал это исчерпывающе, но по крайней мере в некоторых случаях кажется, что reshape
не то, что вы хотите. Обратите внимание, что ниже приведены 999
и 191
как перестановки 199
, что неверно. Функция Reshape как написано, как представляется, работать «по столбцам» на A
:
>> str = '199';
A = perms(str);
B = cellstr(reshape(A,3,[])');
C = unique(B);
>> C
C =
'191'
'199'
'911'
'919'
'999'
Ниже не производит 999
или 191
:
B = {};
index = 1;
while true
try
substring = A(index,:);
B{index}=substring;
index = index + 1;
catch
break
end
end
C = unique(B)
C =
'199' '919' '991'
- 1. Как удалить комбинацию символов из строки?
- 2. MATLAB генерировать случайные числа
- 3. генерировать данные из отформатированной строки
- 4. Сделать комбинацию из палиндрома
- 5. Как динамически генерировать комбинацию пользовательских элементов управления ASP.NET?
- 6. Matlab, Как генерировать случайные строки без каких-либо пересечений?
- 7. Генерировать следующую комбинацию размера к от целочисленного вектора
- 8. генерировать определенную матрицу в MATLAB
- 9. Matlab генерировать несколько случайных матриц
- 10. Генерировать случайные полиномы с MATLAB
- 11. генерировать собственные изображения изображения matlab
- 12. Нужно генерировать каждую уникальную комбинацию массива файлов рекурсивно
- 13. Matlab генерировать все возможные комбинации команд
- 14. генерировать JS объект ключ-значение из строки
- 15. Xamarin: Генерировать xcarchive из командной строки
- 16. php генерировать html-страницы из строки
- 17. Как генерировать хэш-значение из строки подписи?
- 18. Обнаруживать или генерировать регулярное выражение из строки
- 19. Python: динамически генерировать метод из строки?
- 20. Выполнение Eclipse генерировать javadoc из командной строки
- 21. Генерировать 10-значный номер из строки
- 22. Как генерировать последовательный сигнал из строки?
- 23. R - удалить строки, обеспечивающие определенную комбинацию значений
- 24. Libreoffice Calc - генерировать список как комбинацию из нескольких столбцов или диапазонов ячеек
- 25. Выберите (отличные) строки, которые имеют уникальную комбинацию из двух столбцов
- 26. Как удалить комбинацию символов из строки в C#?
- 27. Получить всю возможную комбинацию (префикс/суффикс) строки
- 28. Генерировать вращения строки, java
- 29. Как генерировать случайные строки?
- 30. UNION генерировать повторяющиеся строки