SDT-base
Contents  
Functions  
 ![]() ![]() |
Previous sections have focused on the identification of SIMO or MIMO transfers. For some test cases, it is necessary to perform several identification by blocks because pole shifts are expected between these blocks. Here are examples of typical parameters defining the blocks :
The IdentBy strategy provides tools to easily navigate between blocks, perfom the identification for each block and finally post-treat the result (pole tracking, clustering, main shape extraction,...)
Section 2.2.5 explains how to store transfers in the Multi-dim curve format. The IdentBy strategy also uses this format. When only one parameter is used to identify the blocks (temperature ot input number for instance), you must build your curve structure with filed in this order : Frequencies, outputs, inputs and finally the block parameter (note that if the parameter correponds to the inputs, you do not need a fourth dimension).
An example of measurement with blocks depending on the temperature is given in demo. The following script stores the measurements in iiplot and initializes the IdentBy procedure
[XF,wire]=demosdt('DemoGartBy'); [ci,cf]=iicom('dockid',struct('model',wire,'XF',XF)); % Open dock with measurement blocks in curve 'Test' idcom(ci,'ByInitFromTest'); % Same as click on button InitByMode ci.Stack{'Test:All'}.By % Display the range structure defining the block
In the example above, the curve contains 4 dimension with
The command idcom(ci,'ByInitFromTest'); has automatically created a range structure (see fe_range) stored in the field .By of curve 'Test:All' that defines each experiment block. This automatic range definition works for simple measurement blocks : only the last curve dimension is considered as the block parameter. For more complex configurations with several block parameters, you need to build the rangestructure yourself and eventually the doSplit strategy (how to extract a single block from Test:All curve).
The following tutorial highlights the use of the IdentBy procedure through the identification of the DemoGartBy example.
[XF,wire]=demosdt('DemoGartBy'); % Example of measurement blocks with GARTEUR [ci,cf]=iicom('dockid',struct('model',wire,'XF',XF)); % Open dock with measurement blocks in curve 'Test'
In the Ident tab, a block of buttons By has appeared.
These buttons help in the navigation between block through the whole procedure of identification by blocks. All the blocks are listed in the pop button on the top right (here 11 temperatures). You can increase or decrease the selected block by clicking on the + or - buttons or directly selecting the wanted one in the list. When one block is selected, measurement data corresponding to this block only is stored in the curve Test and eventually the synthesized transfer (if previous identification has been performed).
To speed up, you can manually add this list of poles :
ci.Stack{'IdMain'}.po=[ %{'Freq','Damp','Index'} 6.51512 0.010000 % 1 16.31281 0.010000 % 2 37.93563 0.010000 % 3 39.24815 0.010000 % 4 39.63596 0.010000 % 5 52.45596 0.010000 % 6 53.61652 0.010000 % 7 57.28214 0.010000 % 8 ]; ci.Stack{'IdMain'}.BandType='LocalPole'; iicom('SetIdent',struct('est','do'));
Click on Estimate to perform estimation with these poles. The result is not good because at this new temperature, the poles have slightly evolve.
Poles converge toward a satisying result.
Save this result in the current block with the button Store.
Wait for the automatic optimization to end.
If for some reason, the optimzation fails of diverges, it is possible to manually come back to the problematic block of transfer, modifiy identification and restart optimization procedure from there.
Under By, Identify, AutoOpt, click on Export .xls to generate the Excel spreadsheet.
This opens the two figures showing frequency and damping evolution of each mode with temperature.
This opens the figure showing frequency (x-axis) and damping (y-axis) evolution of each mode with temperature (color).