mat2cell将3D图像分成块

时间:2015-06-02 22:43:36

标签: matlab 4d

我有一张大小为<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:padding="25dp" android:layout_height="match_parent"> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true"> <Button android:id="@+id/bSignIn" android:text="SignIn" android:layout_centerHorizontal="true" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/bCreateAccount" android:text="Create Account" android:layout_centerHorizontal="true" android:layout_below="@+id/bSignIn" android:layout_width="match_parent" android:layout_height="wrap_content" /> </RelativeLayout> </RelativeLayout> 的四维图像,即它是一个3D图像,其中每个体素都有一个时间序列(350)。

现在我想使用60 x 80 x 12 x 350将3D图像划分为维mat2cell的多维数据集。立方体中的每个体素都是大小为350的向量(时间序列)。

我想我可以用k*k*k来做,但我不知道究竟是怎么回事。每个单元格最后应包含图像的3D块,其中块的每个体素都是350的向量。

1 个答案:

答案 0 :(得分:1)

假设你的4D矩阵被称为M。你需要有一些向量,其元素总和为size(M, i),其中i = 1:4。假设k有一些值,我尝试了4(因为它是你指定大小的公因子)和3(因为它不是)。

k = 3;
MPrime = mat2cell(M, ...
    [k*ones(1, floor(size(M,1)/k)), mod(size(M,1), k)], ...
    [k*ones(1, floor(size(M,2)/k)), mod(size(M,2), k)], ...
    [k*ones(1, floor(size(M,3)/k)), mod(size(M,3), k)], ...
    ones(1, size(M,4)));