idcom#
Purpose
UI command functions for standard operations in identification.
Syntax
idcom('CommandString');
Description
The idcom command should only be used for script purpose. Most commands correspond to the underlying button callbacks of the Ident table (see section 8.2.6). Chapter 2 presents the interactive way to perform a modal identification with SDT using of the dedicated dock Id.
idcom provides a simple access to standard operations in identification. The way they should be sequenced is detailed in section 2.5 which also illustrates the use of the associated GUI.
idcom is always associated with an iiplot figure. Information on how to modify standard plots is given under iicom. The datasets used by idcom are described in section 2.5. Methods to access the data from the command line are described in section 2.1.2. Identification options stored in the figure are detailed under the idopt function.
idcom(ci) turns the environment on, idcom(ci,'Off') removes options but not datasets.
The information given below details each command (see the commode help for hints on how to build commands and understand the variants discussed in this help). Without arguments idcom opens or refreshes the current idcom figure.
Commands
e [ ,i w]#
Single pole narrow-band model identification. e calls ii_poest to determine a single pole narrow band identification for the data set ci.Stack{'test'}.
A bandwidth of two percent of w is used by default (when i is not given). For i<1, the i specifies the half bandwidth as a fraction of the central frequency w. For i an integer greater than 5, the bandwidth is specified as a number of retained frequency points.
The selected frequency band is centered around the frequency w. If w is not given, ii_poest will wait for you to pick the frequency with your mouse.
If the local fit does not seem very good, you should try different bandwidths (values of i).
The results are stored in ci.Stack{'IdAlt'} with a pole .po and residue .res field. FRFs are resynthesized into ci.Stack{'IdFrf'} (which is overlaid to ci.Stack{'Test'} in iiplot). If, based on the plot(s), the estimate seems good it should be added to the current pole set ci.Stack{'IdMain'} using ea.
ea#
Add alternate poles to the main set. If appropriate modes are present in ci.Stack{'IdAlt'} (after using the e or f commands for example), they should be added to the main pole set ci.Stack{'IdMain'} using the ea command. These poles can then be used to identify a multiple pole broadband model with idcom est and idcom eup commands.
If all poles in ci.Stack{'IdAlt'} are already in ci.Stack{'IdMain'}, the two are only combined when using the eaf command (this special format is used to prevent accidental duplication of the nodes).
er [num i, f w]#
Remove poles from ci.Stack{'IdMain'}. The poles to be removed can be indicated by number using 'er num i' or by frequency using 'er f w' (the pole with imaginary part closest to w is removed). The removed pole is placed in ci.Stack{'IdAlt'} so that an ea command will undo the removal.
est[ ,FullBand,LocalBand,LocalPole]#
Multiple pole identification without pole update. est uses id_rc to identify a model based on the complete frequency range selected by ci.IDopt. This estimate uses the current pole set ci.Stack{'IdMain'} but does not update it. The results are a residue matrix ci.Stack{'IdMain'}.res, and corresponding FRF ci.Stack{'IdFrf'} (which is overlaid to ci.Stack{'Test'} in iiplot). In most cases the estimate can be improved by optimizing the poles using the eup or eopt commands.
Three band strategies are available for estimation :
- FullBand : perform estimation on the full frequency range and store residual terms (if any) as extra shapes.
- LocalBand : perform sequential estimation on local bands. Residual terms and outside bands are used to take into account the influence of extra band modes, but are not stored in the result.
To define local bands with GUI, use buttons at line LocalBands below Estimate in the Identtab : Add New and Reset.
From script, bands are given as a cell array of fmin-fmax values : ci.Stack{'IdMain'}.bands={[fmin1 fmax1];[fmin2 fmax2]};
- LocalPole : this is the same local estimation strategy than using LocalBand but bands are automatically defined around each pole. Pole frequencies are used to place the middle of local bands and damping values are related to local band widths.
From GUI, the pop button at right of est is used to select the strategy when clicking on est, Gradient (eopt) or IDRC (eup).
From script, either precise the strategy in the command idcom('estLocalPole') or store the desired strategy in ci.Stack{'IdMain'}.BandType='LocalPole'. Command idcom('est') uses the band strategy stored in IdMain or else FullBand by default.
gartid idcom('w0'); % Reset working frequency band to the whole bandwidthidcom estFullBand; def_FullBand=ci.Stack{'IdMain'}; % FullBand estimate ci.Stack{'IdMain'}.bands={[6 7];[15 17];[31 38];[48 65]}; idcom estLocalBand; def_LocalBand=ci.Stack{'IdMain'}; % LocalBand estimate idcom estLocalPole; def_LocalPole=ci.Stack{'IdMain'}; % LocalPole estimate
eup dstep fstep [local, num i , iter j ]#
Update of poles. eup uses id_rc to update the poles of a multiple pole model based data within ci.IDopt.SelectedRange. This update is done through a non-linear optimization of the pole locations detailed in section 2.6.5. The results are updated modes ci.Stack{'IdMain'} (the initial ones are stored in ci.Stack{'IdAlt'}), and corresponding FRF ci.Stack{'IdFrf'} (which is overlaid in iiplot).
In most cases, eup provides significant improvements over the initial pole estimates provided by the e command. In fact the only cases where you should not use eup is when you have a clearly incomplete set of poles or have reasons to suspect that the model form used by id_rc will not provide an accurate broadband model of your response.
Default values for damping and frequency steps are 0.05 and 0.002. You may specify other values. For example the command 'eup 0.05 0.0' will only update damping values.
It is often faster to start by optimizing over small frequency bands while keeping all the poles. Since some poles are not within the selected frequency range they should not be optimized. The option local placed after values of dstep and fstep (if any) leads to an update of poles whose imaginary part are within the retained frequency band.
When using local update, you may get warning messages about conditioning. These just tell you that residues of modes outside the band are poorly estimated, so that the message can be ignored. While algorithms that by-pass the numerical conditioning warning exist, they are slower and don't change results so that the warning was left.
In some cases you may want to update specific poles. The option num i where i gives the indices in IdMain of the poles you want to update. For example 'eup 0.0 0.02 num 12' will update the frequency of pole 12 with a step of 2%.
- The poles in ci.Stack{'IdMain'}.po are all the information needed to obtain the full model estimate. You should save this information in a text file (use idcom('TableIdMain') to generate a clean output) to be able to restart/refine your identification.
- You can get a feel for the need to further update your poles by showing the error and quality plots (see iiplot and section 2.2.3).
eopt [local, num i, seq]#
Update of poles. eopt is similar to eup but uses id_rcopt to optimize poles. eopt is often more efficient when updating one or two poles (in particular with the eopt local command after selecting a narrow frequency band). eopt is guaranteed to improve the quadratic cost (3.3) so that using it rarely hurts.
eoptSeq seeks to optimize all poles of the band. This is commonly efficient when starting with poles extracted from stabilization diagrams.
find#
Find a pole. This command detects minima of the MMIF that are away from poles of the current model ci.Stack{'IdMain'}.po and calls ii_poest to obtain a narrow band single pole estimate in the surrounding area. This command can be used as an alternative to indicating pole frequencies with the mouse (e command). More complex automated model initialization will be introduced in the future.
f i#
Graphical input of frequencies. f i prompts the user for mouse input of i frequencies (the abscissa associated with each click is taken to be a frequency). The result is stored in the pole matrix ci.Stack{'IdAlt'}.po assuming that the indicated frequencies correspond to poles with 1% damping. This command can be used to create initial pole estimates but the command e should be used in general.
dspi nm#
Direct system parameter identification. dspi uses id_dspi to create a nm pole state space model of Test. nm must be less than the number of sensors. The results are transformed to the residue form which gives poles and residues in IdMain, and corresponding FRF IdFrf (which is overlaid to Test in iiplot.
mass i#
Computes the generalized mass at address i. If the identified model contains complex residues (ci.IDopt.Fit='Pos' or 'Complex'), res2nor is used to find a real residue approximation. For real residues, the mass normalization of the mode is given by the fact that for collocated residues reciprocity implies
(10.25) |
The mass at a given sensor i is then related to the modal output clφj of the mass normalized mode by mlj=(clφj)−2. This command can only be used when collocated transfer functions are specified and the system is assumed to be reciprocal (see idopt).
poly nn nd#
Orthogonal polynomial identification. poly uses id_poly to create a polynomial model of Test with numerators of degree nn and denominators of degree nd. The corresponding FRFs are stored in IdFrf (which is overlaid to Test in iiplot).
Table,Tex] IIpo#
Formatted printout of pole variables IIpo or IIpo1. With the Tex command the printout is suitable for inclusion in LATEX.
This command is also accessible from the idcom figure context menu.
See also