binIndices是1*50的cell,每個cell是的1*n(n不定),那么cell2mat(binIndices)得到的是1*sum(cellfun(@length,binIndices))的行向量,比如{1 2 3} {4 5 6}2個cell,得到的是[1 2 3 4 5 6]的行向量。
這樣我以為是按列組織,其實不是這樣的,估計是按行。
K>> aa = cell{[1;2;3] [4;5;6]}
aa = cell{[1;2;3] [4;5;6]}
錯誤: 圓括號或方括號不對稱或異常。
K>> aa = cell{[1;2;3];[4;5;6]}
aa = cell{[1;2;3];[4;5;6]}
錯誤: 圓括號或方括號不對稱或異常。
K>> aa = {[1;2;3];[4;5;6]}
aa =
[3x1 double]
[3x1 double]
K>> bb=cell2mat(aa)
bb =
1
2
3
4
5
6
...................................................
單純說按行按列不好理解,直接看例子,明白就好。
K>> aa = {[1;2;3] [4;5;6]}
aa =
[3x1 double] [3x1 double]
K>> bb = cell2mat(aa)
bb =
1 4
2 5
3 6
那么究竟該如何理解呢?看例子。
看matlab給的例子。
Example:
C = {[1] [2 3 4]; [5; 9] [6 7 8; 10 11 12]};
M = cell2mat(C)
結果:
M =
1 2 3 4
5 6 7 8
9 10 11 12
在學習神經網絡,BP網絡函數里我也遇到這個問題,現在可以解釋了。
cell是元胞數組,mat是matrix的縮寫。
首先,C = {[1] [2 3 4]; [5; 9] [6 7 8; 10 11 12]};
C元素以“;”為間隔,有兩行,沒一行也有兩個子元素。得到
C{1,1}=1; %為一行一列
C{1,2}=2 3 4; %為一行三列
C{2,1}=5
9; %為兩行一列
C{2,2}=6 7 8
10 11 12; %為兩行三列
上面這幾個可以在matlab里運行求出來。反別將這幾組數據結合起來。
[C{1,1} C{1,2};
C{2,1} C{2,2}];得到
[1 2 3 4;
5 6 7 8;
9 10 11 12];
筆者注:從解析可以看出就是直接按行拼接成了矩陣,但由於元寶數組內數據可以不同為,矩陣內必須同維,所以應該不是所有的元寶素組都能轉化為矩陣。
再看一個例子,a是1*50的cell,每個cell是1*26,那么cell2mat(a)是1*(50*26)的行向量,如果cell2mat(a')得到50*26。