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 Kommentare

Rik
Rik am 21 Aug. 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 am 24 Aug. 2022
Hi Rik. Just want to save as 2-D matrix for origin plot

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Matt J
Matt J am 21 Aug. 2022
Bearbeitet: Matt J am 21 Aug. 2022

0 Stimmen

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 Kommentare

hapseeker
hapseeker am 24 Aug. 2022
Bearbeitet: hapseeker am 24 Aug. 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 am 24 Aug. 2022
Bearbeitet: Matt J am 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?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu MATLAB finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2019b

Tags

Gefragt:

am 21 Aug. 2022

Bearbeitet:

am 24 Aug. 2022

Community Treasure Hunt

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

Start Hunting!

Translated by