2014-09-24 97 views
0

我有一個4×4個matrix.I 64個字符需要將其轉換成一個單元陣列,使得電池具有4 characters.For例如如何將字符矩陣轉換爲單元格數組?

Consider A=[TCTGCTCTCGGTTATATACACTGCCCAGAACACGTCAACAAGGCCAGTGTATCCTTCTTTGTGT] 

我需要得到一個單元陣列,如下

B={[TCTG][CTCT][CGGT][TATA] 
    [TACA][CTGC][CCAG][AACA] 
    [CGTC][AACA][AGGC][CAGT] 
    [GTAT][CCTT][CTTT][GTGT]} 

我嘗試過使用mat2cell功能,但我不能理解it.please幫助。

+0

http://stackoverflow.com/questions/15691857/splitting-string-by-number -of-characters-matlab – Cheery 2014-09-24 17:38:18

回答

2

使用一個for循環:打破你的輸入向量

clc 
clear 

A = 'TCTGCTCTCGGTTATATACACTGCCCAGAACACGTCAACAAGGCCAGTGTATCCTTCTTTGTGT'; 


B = cell(4,4); 

currentIdx = 0; % Use index to increment by steps of 4 when going through A 

for k = 1:16   
    B{k} = A(currentIdx+1:currentIdx+4); 
    currentIdx = currentIdx+4; 
end 

B = B' 

B = 

    'TCTG' 'CTCT' 'CGGT' 'TATA' 
    'TACA' 'CTGC' 'CCAG' 'AACA' 
    'CGTC' 'AACA' 'AGGC' 'CAGT' 
    'GTAT' 'CCTT' 'CTTT' 'GTGT' 
2

您可以使用方法vec2mat到矩陣

M = vec2mat(A, numberOfColumns) 

(在你的情況numberOfColumns是16),然後使用mat2cell。在你的情況下,它將是:

C = mat2cell(M, [1,1,1,1], [4,4,4,4]) 

這意味着所有的cels將有一行和4列)。函數c的

影響= mat2cell(X,[10,20,30],[25,25])將是:

img

該圖像示出爲什麼要轉換矢量到矩陣。 (matlab文檔中的示例)

+0

非常好的圖。 +1 – rayryeng 2015-01-11 17:16:56

2

您從1xN矩陣開始,希望將其轉換爲1x4矩陣的1xN/4單元陣列。您的命令應該是:

N = length(A); 
M = 4; 
B = mat2cell(A,1,ones(1,N/M)*M); 

第一維是1,第二維是4的字符串輸出單元格數組的大小。其結果是:

B = 

    Columns 1 through 12 

    'TCTG' 'CTCT' 'CGGT' 'TATA' 'TACA' 'CTGC' 'CCAG' 'AACA' 'CGTC' 'AACA' 'AGGC' 'CAGT' 

    Columns 13 through 16 

    'GTAT' 'CCTT' 'CTTT' 'GTGT' 
2

你也可以(AB)使用非常靈活accumarray此任務:

A = 'TCTGCTCTCGGTTATATACACTGCCCAGAACACGTCAACAAGGCCAGTGTATCCTTCTTTGTGT'; 
n = 4; 
B = accumarray(ceil(1/n:1/n:numel(A)/n).', A(:), [], @(x) {x.'}).' 
+0

謝謝你..這裏n表示字符串的數量還是大小? – 2014-09-25 03:44:10

+0

這是每個字符串的大小。我在你的例子中選擇了4 – 2014-09-25 09:41:36

相關問題