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 commentaires

Rik
Rik le 21 Août 2022
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.
hapseeker
hapseeker le 24 Août 2022
Hi Rik. Just want to save as 2-D matrix for origin plot

Connectez-vous pour commenter.

Réponses (1)

Matt J
Matt J le 21 Août 2022
Modifié(e) : Matt J le 21 Août 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 commentaires

hapseeker
hapseeker le 24 Août 2022
Modifié(e) : hapseeker le 24 Août 2022
Thanks. That's really helpful, but 'a.mat' still can not be import to Origin, since its not 2-D.
Matt J
Matt J le 24 Août 2022
Modifié(e) : Matt J le 24 Août 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?

Connectez-vous pour commenter.

Catégories

En savoir plus sur MATLAB dans Centre d'aide et File Exchange

Produits

Version

R2019b

Tags

Question posée :

le 21 Août 2022

Modifié(e) :

le 24 Août 2022

Community Treasure Hunt

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

Start Hunting!

Translated by