将matlab矩阵分成几个相等的部分

Jac*_*ses 7 matlab matrix k-means

我有一个大小的矩阵64500x17.它代表检测到的texton功能,我必须用它来找到5个质心kmeans.

我需要的是:

  • 将该矩阵分成5个12900x17矩阵
  • 找到手段
  • 将它们连接成一个5x17矩阵,以输入到的start参数kmeans.

我知道该怎么做几乎所有的东西(cat,kmeans,等),但我只是想找到一个矩阵分成5个部分,或加/划分成所需大小的方法.

除非绝对必要,否则我禁止过度使用循环(由于效率).

我在其他问题中找不到任何相关的例子,所以如果这个问题得到了回答,请耐心等待.

ang*_*nor 5

你可以使用mat2cell和oneliner

C = mat2cell(A, repmat(12900, 5, 1), 17);
Run Code Online (Sandbox Code Playgroud)

第二个参数mat2cell是矩阵的行拆分.

现在C是一个单元格数组:

C = 

[12900x17 double]
[12900x17 double]
[12900x17 double]
[12900x17 double]
[12900x17 double]
Run Code Online (Sandbox Code Playgroud)

并且可以访问部分矩阵

C{1} etc.
Run Code Online (Sandbox Code Playgroud)


Dim*_*ims 1

要获取第一个子矩阵,请使用冒号表示法:

A(1:12900,:)
Run Code Online (Sandbox Code Playgroud)

然后

A(12901:12900*2,:)
Run Code Online (Sandbox Code Playgroud)

等等。