2.7 Identification by block#
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 :
- Temperature
- Input location
- Input level
- Pre-loading
- ...
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,...)
2.7.1 Data format#
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
- 691 frequency samples
- 24 outputs
- 3 inputs
- 11 temperature samples (this is our block parameter)
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).
2.7.2 Example for practice#
The following tutorial highlights the use of the IdentBy procedure through the identification of the DemoGartBy example.
-
Run
Load the curve containing all the measurement blocks and eventually the wireframe. Store them in the dock Id with the command
[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'
- Run
To initialize the identification by block, on tab Ident, expand IDopt and wlick on Init By Mode.
In the Ident tab, a block of buttons By has appeared.
These button help in the navigation between block through all the 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 selcting the wanted one in the list. When one block is selected, measurement dta corresponding to this block only is stores in the curve Test and eventually previous identification results.
- Run
To begin the procedure, select the first block and perform the identification. 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'));
- Run
- Run
- Run
- Run
- Run
- Run
- Run