Hello,
I have a multidimensional array size = 220 x 46 x 10 x 4 x2 . I would like to combine all of the data in the third dimension so that way I end up with a 4-dimesional array. Any help is greatly appreciated.
Take care and stay well!

 採用された回答

James Tursa
James Tursa 2021 年 2 月 8 日

2 投票

One way using summing:
result = squeeze(sum(your_array,3));

7 件のコメント

Early Social Development Lab Lab
Early Social Development Lab Lab 2021 年 2 月 8 日
Hi! Thanks so much for your speedy help. I did this and now the size of my array is: 220 46 2 4. However, I want all of the raw data from the 3rd dimension. So wouldn't one of my dimesions then have to be expanded by an order of 10 (e.g., 2200 46 2 4). Please let me know if I'm misunderstanding what is happening.
James Tursa
James Tursa 2021 年 2 月 8 日
So how do you want the data combined? Another method that retains the raw data would be:
result = reshape(your_array,220,46,10*4,2)
which combines the 3rd and 4th dimensions into one dimension. But it isn't clear how you want the array reduced from 5 dimensions to 4.
Early Social Development Lab Lab
Early Social Development Lab Lab 2021 年 2 月 8 日
Hi James, Thank you for the follow-up. I would like to take all ten trials in the third dimension and combine them so they are vertically stacked in the first dimension (220*10), giving me a 2200 x 46 x 4 x 2 matrix. I will be doing this for a series of data with varying trial numbers so if you could help me to adapt the code for the varying lengths of dimension 3 that would also be greatly appreciated.
Early Social Development Lab Lab
Early Social Development Lab Lab 2021 年 2 月 8 日
Hi James - I think I figured it out. I created vectors that will update the sizes based on the participant (e.g., x = reshape(trialTimecourses, maxTL*maxTrials, data.nChans, nHb, data.nConds). Thank you so much for your help!
James Tursa
James Tursa 2021 年 2 月 8 日
Maybe this does what you want?
result = reshape(permute(your_array,[1 3 2 4 5]),2200,46,4,2)
Early Social Development Lab Lab
Early Social Development Lab Lab 2021 年 2 月 9 日
Yes! Thank you! I did not realize the arrays had to be next to eachother before applying the reshape function!
James Tursa
James Tursa 2021 年 2 月 9 日
Yes. Reshape does not change the order of the data in memory. You will often need to use another function first such as permute or transpose etc. to rearrange the data in memory before applying the reshape.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by