开发者

MATLAB: Defining n subsets of a matrix

I have a 1974x1 vector, Upper, and I am trying to break the information up into individual arrays of 36 items each. So, I used length to find that there are 1974 items and then divided by 36 and used the floor function. I cannot figure out how to do it all with n.

Here is my logic: I am defining n in an attempt to find the number of subsets that need to be defined. Then, I am trying to have subsetn become subset1, subset2,...,subset36. However, MATLAB only definies the matrix subsetn as a 1x36 matrix. However, this matrix contains what subset1 is supposed to contain(1...36). Do you guys have any advice for a newbie? What am I doing wrong?

binSize = 36;
开发者_StackOverflow社区nData = length(Upper);
nBins = floor(nData/36);
nDiscarded = nData  - binSize*nBins;

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


You can create a 54x36 array where the nth column is your nth subset.

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

You can access the nth subset as subsetArray(:,n)


Sorry in advance if I misunderstood what you want to do.

I think the following little trick might do what you want (it's hacky, but I'm no Matlab expert):

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

Now inds is a nBins*binSize matrix of indices. You can index Upper with it like

Upper(inds)

which should give you the subsets as the columns in the resulting matrix.

Edit: on seeing Yoda's answer, his is better ;)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜