我有一個像這樣的字符串「FBECGHD」,我需要使用MATLAB並生成所有需要的可能排列?在那裏有一個特定的MATLAB函數來完成這個任務,或者我應該定義一個執行這個任務的自定義MATLAB函數?MATLAB從字符串生成組合
1
A
回答
5
使用perms函數。在MATLAB字符串是字符的列表,所以它會置換他們:
A = 'FBECGHD';
perms(A)
您還可以將輸出(如P = perms(A)
),並且,如果A是一個N個字符的字符串,P是N! N數組,每行對應於一個置換。
如果你有興趣的獨特排列,你可以使用:
unique(perms(A), 'rows')
刪除重複(否則像「ABB」將給予6分的結果,而不是您所期望的3)。
0
正如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
,這是不正確的。作爲編寫的重塑功能似乎運行「按列」上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. 從字符串中生成子串的組合
- 3. 從給定字符串生成一組字符串
- 4. 生成所有可能的字符組合的字符串
- 5. (字符串組合)從interviewstreet.com
- 6. 使用字符串數組在C#生成組合
- 7. 從字符串列表中有效生成一組字符
- 8. Matlab的字符串數組
- 9. matlab字符串數組
- 10. 生成字符串
- 11. 生成字符串
- 12. 生成字符串
- 13. 如何從字符串集合中生成一個唯一的字符串?
- 14. 如何從Java中的字符串集合生成隨機字符串?
- 15. 如何生成JSON字符串數組?
- 16. 如何從該數組的字符串表示生成數組?
- 17. 快速生成字符串組合的方法
- 18. 在字符串中生成不同的排列/組合
- 19. 在PHP中生成字符串的所有組合
- 20. 如何生成一整套字符串操作的組合?
- 21. 生成一個字符串的組合(不是排列)
- 22. 使用Python生成兩個字符串的組合
- 23. 生成字符串與多線程的所有組合
- 24. 生成字符串的所有可能組合
- 25. 生成字符串矢量的所有組合
- 26. 結合字符串數組成一個字符串
- 27. Perl形成字符串隨機字符串組合
- 28. php字符串與substr和strpos組合成一個字符串
- 29. 組合字符串的行變成一個字符串
- 30. 結合兩個字符串組成一個新的字符串