How can I transform a 3D dimension array (15*781*81) to 15 extracted 781*81 2D matrix to make it feasible to write down them in different Excel files?
Cheers,
Hiua

 採用された回答

Walter Roberson
Walter Roberson 2019 年 7 月 24 日

0 投票

result = cellfun(@squeeze, num2cell(YourArray, [2 3]), 'uniform', 0)
This will give you a 15 x 1 cell array, each entry of which is a 781 x 81 array

2 件のコメント

Akira Agata
Akira Agata 2019 年 7 月 24 日
Another possible way:
result = arrayfun(@(k) squeeze(YourArray(k,:,:)),1:15,'UniformOutput',false);
This will also give you the same result as Walter-san's answer.
Hiua Daraei
Hiua Daraei 2019 年 7 月 26 日
Thanks indeed

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

その他の回答 (1 件)

Stephen23
Stephen23 2019 年 7 月 24 日

0 投票

"How can I transform a 3D dimension array (15*781*81) to 15 extracted 781*81 2D matrix to make it feasible to write down them in different Excel files?"
There is no point in creating a separate cell array with duplicates of all of the data.
Simply loop over the array and save it as you go:
A = your 15x781x81 array
for k = 1:size(A,1)
M = permute(A(k,:,:),[2,3,1]);
... save M here
end

2 件のコメント

Hiua Daraei
Hiua Daraei 2019 年 7 月 26 日
Another Solution! hanks again
Stephen23
Stephen23 2019 年 7 月 28 日
@Hiua Daraei: you can vote for my answer too! Voting is an easy way to show your appreciation.

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

カテゴリ

ヘルプ センター および 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