0

Matlabに次のデータ行列があります。変数をmatlab関数に渡すことにより、これを実際に複数のセグメントに分割しようとしています。しかし、分割する前に、マトリックスをシャッフルしたいと思います。私の行列のサイズは150X4

s.data
5.1000    3.5000    1.4000    0.2000
4.9000    3.0000    1.4000    0.2000
4.7000    3.2000    1.3000    0.2000
4.6000    3.1000    1.5000    0.2000
5.0000    3.6000    1.4000    0.2000
..

s = 

  data: [150x4 double]
labels: [150x1 double]

R環境から来て、MatLabは非常に奇妙だと思います。当初、行列の列にはRデータフレームのようなリレーションショップがあると思いましたが、それは私の仮定では間違っています。

4

3 に答える 3

5

またはあなたが行うことができます:

 perm=randperm(numel(data)); % generate a random permutation
 data = reshape(data(perm),size(data)); % apply it to data
于 2012-09-26T21:35:23.170 に答える
1
new_data=data(randsample(1:length(data),length(data)),:)
于 2012-09-26T21:30:38.493 に答える
1

シャッフルの回答を補完して、データをそれぞれの行列に分割するには15x2、次を使用できますmat2cell

data = rand(150,4);        %# generates a random 150x4 matrix
rowdiv = repmat(15,1,10);  %# size of each chunk in rows. Must sum to 150
coldiv = repmat(2,1,2);    %# size of each chunk in cols. Must sum to 4
datacell = mat2cell(data, rowdiv, coldiv)

によってアクセスされる 20 個の行列を含むセルが返されますdatacell{x,y}

データセル =

    【15×2 ダブル】 【15×2 ダブル】
    【15×2 ダブル】 【15×2 ダブル】
    【15×2 ダブル】 【15×2 ダブル】
    【15×2 ダブル】 【15×2 ダブル】
    【15×2 ダブル】 【15×2 ダブル】
    【15×2 ダブル】 【15×2 ダブル】
    【15×2 ダブル】 【15×2 ダブル】
    【15×2 ダブル】 【15×2 ダブル】
    【15×2 ダブル】 【15×2 ダブル】
    【15×2 ダブル】 【15×2 ダブル】

B = repmat(A,M,N)Bのコピーの M 行 N 列のタイリングで構成される大きな行列を作成しAます。ここでは、要素をそれぞれ1510 回と2 回繰り返して、行と列の正確な分割を生成するために使用してい2ます。ただし、正確な除算を行う必要はありません。異なるサイズのチャンクを設定できます。サイズの異なる行:

rowdiv =

    15    15    15    15    15    15    15    15    16    14

戻ります:

データセル =

    [15x4 ダブル]
    [15x4 ダブル]
    [15x4 ダブル]
    [15x4 ダブル]
    [15x4 ダブル]
    [15x4 ダブル]
    [15x4 ダブル]
    [15x4 ダブル]
    [16x4 ダブル]
    [14x4 ダブル]
于 2012-09-26T22:26:31.467 に答える