私はこの "FBECGHD"のような文字列を持っており、MATLABを使用して必要なすべての順列を生成する必要がありますか?このタスクを実行する特定のMATLAB関数、またはこのタスクを実行するカスタムMATLAB関数を定義する必要がありますか?MATLABは文字列から組み合わせを生成します
1
A
答えて
5
perms機能を使用してください。それはそれらを入れ替えますので、MATLABの文字列は、文字のリストです:
A = 'FBECGHD';
perms(A)
ます。また、出力(例えばP = perms(A)
)を格納することができ、かつ、AがN文字の文字列である場合、PはNです! -by-N配列であり、各行は順列に対応する。
あなたはユニークな順列に興味がある場合は、使用することができます。
unique(perms(A), 'rows')
を重複を削除する(それ以外の場合は「ABB」のような何かが6つの結果、代わりにあなたが期待するかもしれない3を与えるだろう)。
0
リチャードが答えたので、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. 文字列の組み合わせをrで生成する
- 2. 配列から組み合わせを生成するには?
- 3. MATLABのCONCATENATE組み合わせ可変長文字列やベクトル
- 4. 文字列から部分文字列の組み合わせを生成する
- 5. すべての文字の組み合わせを生成
- 6. (文字列の組み合わせ)
- 7. 文字列の組み合わせ
- 8. 文字列のすべての組み合わせを生成する関数
- 9. JavaScriptはすべて組み合わせを生成します
- 10. 文字から組み合わせを探す
- 11. 数字の組み合わせを生成する
- 12. Pythonは文字列を組み合わせると
- 13. 生成方法複数の配列から固定サイズの組み合わせを生成しますか?
- 14. 4文字のすべての可能な文字列の組み合わせを生成する方法C
- 15. Javaの組み合わせの生成
- 16. フィルター文字の組み合わせ
- 17. 文字列の配列を組み合わせる
- 18. 文字列配列とイテレータを組み合わせてソート
- 19. 文字列と数字を組み合わせたJavaScriptの文字列操作
- 20. 1つの色から色の組み合わせを生成
- 21. 任意の組み合わせの文字列から任意の組み合わせの部分文字列を見つける
- 22. Javascriptで数字の組み合わせを生成
- 23. Matlabの行の組み合わせ?
- 24. すべての可能な文字列の組み合わせ
- 25. 文字列のすべての組み合わせ
- 26. ネストされた配列(JS)から一意の組み合わせを生成
- 27. 文字列を組み合わせるScream python
- 28. 文字列補間とstring.formatを組み合わせる
- 29. C++ゼロ終了文字列を2つ組み合わせる?
- 30. 2つの文字列をアルファベット順に組み合わせる