2013-11-14 25 views
0

如何在MATLAB中生成順序選擇。我需要在訂單很重要的情況下創建一個單詞的所有排列組合。 所以,如果你想要所有的有序選擇2個字母的話,'時間'。 您會收到在MATLAB中創建有序的選擇

q= 

em 
ei 
et 
me 
mi 
mt 
im 
ie 
it 
tm 
ti 
te 

我只能使用這樣的代碼4個字母的單詞做到這一點。

P = perms(S); 
r = size(P); 
if length(S) == k 
    perms(S); 
else 
    q = P(1:2:r,1:k) 

但我需要爲所有長度的單詞(最多10個)以及任何數量的單詞生成該單詞。

任何想法?

回答

2

您可以使用permsunique

word = 'time'; 
result = perms(word); 
result = unique(result(:,1:2),'rows'); 

在你的榜樣,這給

>> result 

result = 

ei 
em 
et 
ie 
im 
it 
me 
mi 
mt 
te 
ti 
tm 

如果你想在一個單詞相同字母多次出現應清楚地計算:與索引一起工作,不與字母:

word = 'timid'; 
ind = perms(1:length(word)); 
ind = unique(ind(:,1:2),'rows'); 
result = word(ind); 

例如,對於單詞「膽小」這給

>> result 

result = 

ti 
tm 
ti 
td 
it 
im 
ii 
id 
mt 
mi 
mi 
md 
it 
ii 
im 
id 
dt 
di 
dm 
di 
+0

你能引導我發生了什麼線下決賽?謝謝! – JamesDonnelly

+1

第二行將過濾掉結果前兩個字母的所有重複行。例如:'mite'和'miet'具有相同的前兩個字母,所以最終只有一個'mi'。 –

+0

是否(:,1:2)表示第1列和第2列之間的所有實例? – JamesDonnelly