Initialising tabular data structure using struct()

For this I'm using an example as below
Eg, A table of data structures, size NL,ML, which has three data types within, at, bt and pt which all have a size nL, mL
Such that all of the below are reasonable:
data(NL,ML).bt(nL,mL) = 5 ;
data(NL-5,ML-2).pt(nL-2,mL-1) = 1 ;
To pre-allocate a data structure like this, I know you need to use struct like below
data = struct(pt,zeros(nL,mL)) ;
However, this creates a data structure that doesn't have the (nL,mL) as above. My current workaround is within the for-loop writing something as below
for N = 1 : NL
for M = 1 : ML
data(N,M) = struct('at',zeros(nL,mL),'bt',zeros(nL,mL),'pt',zeros(nL,mL)) ;
end
end
However this clearly isn't pre-allocated, as it's adding a new column and row to the first table bit each iteration. How can you pre-allocate a table of data structures like this?

 채택된 답변

Stephen23
Stephen23 2023년 1월 6일
편집: Stephen23 2023년 1월 6일
A simple REPMAT does the job:
M = zeros(nL,mL);
data = repmat(struct('at',M, 'bt',M, 'pt',M), NL,ML);

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Structures에 대해 자세히 알아보기

제품

릴리스

R2022b

질문:

2023년 1월 6일

편집:

2023년 1월 6일

Community Treasure Hunt

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

Start Hunting!

Translated by