For loop to save doubles in .mat files

조회 수: 6 (최근 30일)
alphabetagamma
alphabetagamma 2022년 7월 19일
댓글: Voss 2022년 7월 21일
I have a .mat file which stores the variables:
E.g: name: ABC, type : 20 x 1; class: double
name: DEF, type : 20 x 1; class: double
name: GHI, type : 20 x 1; class: double
name: JKL, type: 1 x 1; class: struct
name: JKL, type: 1 x 1; class: struct
name: XYZ, type: 7 x 1; class: cell
name: LMN, type : 30 x 1; class: double
etc.
I would like to use only the (20 X1) doubles one by one in another line of code. For instance,
load_mat = load('some_mat_file.mat')
new_var = load_mat.DEF;
new_var = load_mat.GHI;
But instead of writing repeatedly, could you provide an example of a for loop or something else? Thanks a lot in advance.
  댓글 수: 2
Adam Danz
Adam Danz 2022년 7월 19일
Why do you need to remove the data from the neatly organized structure (load_mat)?
Just use load_mat.DEF instead of new_var.

댓글을 달려면 로그인하십시오.

채택된 답변

Voss
Voss 2022년 7월 19일
load_mat = load('some_mat_file.mat')
load_mat = struct with fields:
ABC: [20×1 double] DEF: [20×1 double] GHI: [20×1 double] JKL: [1×1 struct] LMN: [30×1 double] XYZ: {7×1 cell}
% create a new structure, "new_mat", which contains
% only the 20x1 doubles from load_mat:
new_mat = struct();
f = fieldnames(load_mat);
for ii = 1:numel(f)
if isa(load_mat.(f{ii}),'double') && isequal(size(load_mat.(f{ii})),[20 1])
new_mat.(f{ii}) = load_mat.(f{ii});
end
end
new_mat
new_mat = struct with fields:
ABC: [20×1 double] DEF: [20×1 double] GHI: [20×1 double]
  댓글 수: 6
alphabetagamma
alphabetagamma 2022년 7월 21일
Sorry I forgot to reply earlier. Thanks a ton again :)
Voss
Voss 2022년 7월 21일
You're welcome!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by