How to recursively add fields in a structure.
3 ビュー (過去 30 日間)
古いコメントを表示
Hey there!
I am trying to recursively add results into a single structure from the following piece of code: http://www.mathworks.com/matlabcentral/fileexchange/18160-evaluate-nelson-siegel-function/content/nelson/nelsonfit.m
This function returns a structure with two field which have dimensions of 1x1 and 4x1 respectively. Instead of the input y, which in the example is a 1x11 vector, I would like to insert an array with multiple rows. I thought I should write a different function which repeats the nelsonfit function with as input y each time a different row of matrix X. That is not the problem, however I am stuck with adding the returned values of the nelsonfit function. I can add the structures but it creates a 1x2 structure while I need a 1x1 structure where the fields are simply concatenated.
Any tips or hints would be much appreciated!
Kind regards,
Michael
0 件のコメント
採用された回答
Geoff Hayes
2014 年 6 月 13 日
How are you concatenating the fields? If I run nelsonfit with two different sets of inputs, the function returns two structures with the tau and beta fields of dimensions 1x1 and 3x1 respectively. If par1 and par2 are the two returned structures, then I can create one as follows:
parAll.tau = [par1.tau par2.tau];
parAll.beta = [par1.beta par2.beta];
with parAll now being a single structure
parAll =
tau: [2.7680 1.1280]
beta: [3x2 double]
Appending the third structure is just as easy
parAll.tau = [parAll.tau par2.tau];
parAll.beta = [parAll.beta par2.beta];
Try the above and see what happens!
4 件のコメント
その他の回答 (1 件)
参考
カテゴリ
Help Center および File Exchange で Structures についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!