MATLAB:定义矩阵的n个子集

时间:2011-07-06 22:31:25

标签: arrays matlab vector matrix

我有一个1974x1向量,Upper,我试图将信息分解为每个包含36个项目的单个数组。所以,我使用length来查找有1974项,然后除以36并使用floor函数。我无法弄清楚如何使用n完成所有操作。

这是我的逻辑:我正在定义n以试图找到需要定义的子集数量。然后,我试图让subsetn成为subset1,subset2,...,subset36。但是,MATLAB仅将矩阵subsetn定义为1x36矩阵。但是,此矩阵包含应该包含的子集1(1 ... 36)。你们对新手有什么建议吗?我做错了什么?

binSize = 36;
nData = length(Upper);
nBins = floor(nData/36);
nDiscarded = nData  - binSize*nBins;

n=1:binSize;
subsetn= [(n-1)*binSize+1:n*binSize];

2 个答案:

答案 0 :(得分:3)

您可以创建一个54x36阵列,其中n列是您的n子集。

subsetArray=reshape(x(1:binSize*nBins),[],nBins);

您可以n

访问subsetArray(:,n)子集

答案 1 :(得分:1)

如果我误解了你想做什么,请提前抱歉。

我认为以下小技巧可能会做你想要的(它是hacky,但我不是Matlab专家):

[a, b] = meshgrid(0:nBins-1, 0:binSize-1)
inds = a*binSize + b + 1

现在inds是索引的nBins * binSize矩阵。您可以使用

来索引Upper
Upper(inds)

应该将子集作为结果矩阵中的列。

编辑:看到尤达的回答,他的表现更好;)