save each 2 dimensions of 3 dimensions matrix

Dears
I have a 5*30*32 matrix and want to save it to five variables in a .mat file. I wonder is there a direct way to replace the following work? Thanks.
a=zeros(5,32,32);
a1=a(1,:,:);
a2=a(2,:,:);
a3=a(3,:,:);
a4=a(4,:,:);
a5=a(5,:,:);
save('a.mat','a1','a2','a3','a4','a5')

2 Comments

Why do you want numbered variables? There are ways to do this in a loop, but you're encoding data (the first index) in a variable name, making it difficult for any later function to loop over your data.
Hi Rik. Just want to save as 2-D matrix for origin plot

Sign in to comment.

Answers (1)

Matt J
Matt J on 21 Aug 2022
Edited: Matt J on 21 Aug 2022
As Rik says, it's a terribly inadvisable thing to do, however, here is one way you could accomplish it:
s=cell2struct( num2cell(a,[1,2]) ,"a"+(1:size(a,3)),3);
save('a.mat','-struct','s')

2 Comments

Thanks. That's really helpful, but 'a.mat' still can not be import to Origin, since its not 2-D.
Matt J
Matt J on 24 Aug 2022
Edited: Matt J on 24 Aug 2022
What I've suggested in my answer is equivalent to the code that you posted in your question. Are you saying you've changed your mind about what you're after?

Sign in to comment.

Products

Release

R2019b

Tags

Asked:

on 21 Aug 2022

Edited:

on 24 Aug 2022

Community Treasure Hunt

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

Start Hunting!