how to extract a specific data from struct formatted dataset

조회 수: 12 (최근 30일)
Padmamalini  T H
Padmamalini T H 2020년 4월 23일
댓글: Padmamalini T H 2020년 5월 4일
i have battery dataset in a struct format. i need to extract "capacity" data alone from the dataset. the capacity data is present under 'discharge' only.
here is the dataset structure
i used the following code
z = load('B0005.mat');
for i = 1:length(z.B0005.cycle)
a(i) = z.B0005.cycle(i).data.Capacity;
end
the problem is, the first field('charge') does not contain 'capacity' data so it throws an error:
Reference to non-existent field 'Capacity'.
Error in Untitled (line 3)
a(i) = z.B0005.cycle(i).data.Capacity;
can anyone please tell me where iam going wrong and help me out in correcing the error. i want to read just the capacity data situated under discharge field

채택된 답변

per isakson
per isakson 2020년 4월 23일
Try this
%%
z = load('B0005.mat');
len = length(z.B0005.cycle);
a = zeros( len, 1 );
for ii = 1:len
if strcmp( z.B0005.cycle(ii).type, 'discharge' )
a(ii) = z.B0005.cycle(ii).data.Capacity;
end
end
Every second value of a will be zero

추가 답변 (1개)

Muthu
Muthu 2020년 4월 23일
편집: Muthu 2020년 4월 23일
I assume from the data and image that you have posted, the z.B0005.cycle(i) refers to 'charge' and 'discharge' which is placed consecutively: All 'discharge' in even and all 'charge' in odd indices.
Hence you can modify your code, so that you iterate only through your even indices.
for i = 1:length(z.B0005.cycle)
if mod(i,2)==0
a(i) = z.B0005.cycle(i).data.Capacity;
end
end
Hope this helps.
Good Luck.
  댓글 수: 1
Padmamalini  T H
Padmamalini T H 2020년 4월 30일
No the discharge data doesnt come in even indices. What i have shown is the initial recordings. After this there is no order and all charge and discharge recordings are random

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

카테고리

Help CenterFile Exchange에서 Structures에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by