2.1 iiplot figure tutorial#
iiplot is the response viewer used by SDT. It is essential for the identification procedures but can also be used to visualize FEM simulation results.
As detailed in section 2.2, identification problems should be solved using the standard commands for identification provided in idcom while running the iiplot interface for data visualization. To perform an identification correctly, you need to have some familiarity with the interface and in particular with the iicom commands that let you modify what you display.
2.1.1 The main figure#
For simple data viewing you can open an iiplot figure using ci=iiplot (or ci=iiplot(2) to specify a figure number). For identification routines you should use ci=idcom (standard datasets are then used see section 2.2).
To familiarize yourself with the iiplot interface, run demosdt('demogartidpro'). Which opens the iiplot figure and the associated iiplot(2) properties figure whose tabs are detailed in the following sections.
Toolbar#
Toggles the display or not of the iiplot property figure. | |
Previous channel/deformation, see iicom ch+. | |
Next channel/deformation. | |
Fixed zoom on FRF, see iicom wmin. Note that the variable zoom (drag box) is always active, see iimouse zoom. | |
Start cursor, see iimouse Cursor. | |
Refresh the displayed axes. | |
No subplot. See iicom Sub[1,1]. | |
2 subplots. See iicom Sub[2,1]. | |
Amplitude and phase subplots. See iicom Submagpha. | |
switch lin/log scale for x axis. See iicom xlin. | |
switch lin/log scale for y axis. See iicom ylog. | |
switch lin/log scale for z axis. See iicom xlog. | |
Show absolute value. See iicom Showabs. | |
Show phase. See iicom Showpha. | |
Show real part. See iicom Showrea. | |
Show imaginary part. See iicom Showima. | |
Show real and imaginary part. See iicom Showr&i. | |
Show Nyquist diagram. See iicom Shownyq. | |
Show unwrapped phase. See iicom Showphu. | |
Snapshot. See iicom ImWrite |
Interactivity: keyboard, scroll, mouse#
iiplot, feplot, and ii_mac figure have a large number of interactions.
- press the ? key for a list interactions. Generic description of interactions is given at interactURN.
- -+, (their non modified value _=), leftarrow,rightarrow change channels using commands ch-,ch+. home calls ch1, end calls chEnd. Scrolling with no modifier normal+Scroll does the same.
- A box event (click-down on a followed by dragging the rubber box to select an area, with the urn Box.@ga) zooms to the selected area
- Double click on the same plot to go back to the initial zoom. On some platforms the double click is sensitive to speed and you may need to type the i key with the axis of interest active. An axis becomes active when you click on it.
- aA zooms out (smaller) or in (larger).
- xyz keys move left, down, backwards. XYZ keys move right,up, forward. x+Scroll and x+Down implement the associated motion using scrolling or mouse dragging while pressing the key down.
- Shift+Scroll.@OnX wheel when mouse is close to x or y axes dollies on the corresponding axis. Ctrl+Scroll.@OnX zooms on the axis.
- 1234 are standard views, double click or i zooms back.
- clicking on an axis makes it active. triax and Colorbar axes are movable while maintaining an down click.
Open the ContextMenu associated with any axis (click anywhere in the axis using the right mouse button), select Cursor, and see how you have a vertical cursor giving information about data in the axis. To stop the cursor use a right click or press the c key. Note how the left click gives you detailed information on the current point or the left click history. In iiplot you can for example use that to measure distances.
Click on pole lines (vertical dotted lines) and FRFs and see how additional information on what you just clicked on is given. You can hide the info area by clicking on it.
2.1.2 The curve stack#
iiplot considers data sets in the following format
- Response data related to UFF58 format
- Curves generated by SDT
- Shapes at IO pairs related to UFF55 format
This data is stored in iiplot figures as a Stack field (a cell array with the first column giving 'curve' type entries, the second giving a name for each dataset and the last containing the data, see stack_get). To allow easier access to the data, SDT handle objects are used. Thus the following calls are equivalent ways to get access to the data
ci=iicom('curveload','gartid'); iicom(ci,'pro');iicom(ci,'CurTab Stack'); % show stack tab% Normal use : the figure pointer stack ci.Stack % show content of iiplot stack ci.Stack{'Test'} % a copy of the same data, selected by name ci.Stack{1,3} % the same by index % Use regular expresion ('II.' here) for multiple match ci=stack_rm(ci,'curve','#II.')
% If you really insist on low level calls gf=sdtdef('cf'); % recover current sdth handle, number may vary r1=get(gf,'userdata'); % object containing the data (same as ci) s=ci.vfields.Stack.GetData % get a copy of the stack (cell array with % type,name,data where data is stored) s{1,3} % the first data set
% Alternative use (obsolete) : the XF stack pointer XF1=iicom(ci,'curvexf'); XF1('Test') % still the same dataset, indexed by name XF2=XF1.GetData; % Copy the data from the figure to variable XF2
The ci.Stack handler allows regular expression based access, as for cf.Stack. The text then begins by the # character.
The graphical representation of the stack shown in figure 2.3 lets you do a number of manipulations witch are available trough the context menu of the list of datasets in the stack
- Compute gives access to data processing commands in ii_mmif. You perform the analysis from the command line with iicom(ci,'sum','Test'). The list of available post processing functions is given by ii_mmif list.
- Load lets you load more data with iicom(ci,'curveload-append','gartid'), replace the current data with iicom(ci,'curveload','gartid')
- Display lets you display one or more selected dataset in the iiplot figure (see corresponding command iicom IIx).
- Save lets you save one or more dataset (see corresponding command iicom CurveSave).
- Join combines selected datasets that have comparable dimensions (see corresponding command iicom CurveJoin).
- Cat concatenates selected datasets along time or frequency dimension (see corresponding command iicom CurveCat).
- Remove removes selected dataset (see corresponding command iicom CurveRemove).
- NewId opens a new idcom figure with the selected dataset (see corresponding command iicom CurveNewId).
2.1.3 Handling what you display, axes and channel tabs#
iiplot lets you display multiple axes see iicom Sub. Information about each axis is show in the axes tab.
For example open the interface with the commands below and see a few thing you can do
ci=idcom;iicom(ci,'CurveLoad sdt_id'); ci.Stack{'curve','IdFrf'}=ci.Stack{'Test'}; % copy dataset ci.Stack{'IdFrf'}.xf=ci.Stack{'Test'}.xf*2; % double amplitude iicom('CurTab Axes');
- Sub Subplots : Type iicom submagpha to display a standard magnitude/phase plot. Open the IIplot:sub commands menu and see that you could have achieved the same thing using this pull-down menu. Note that using ci=iiplot(2); iicom(ci,'SubMagPha') gives you control on which figure the command applies to.
- Show Type iicom(';cax1;showmmi'); to display the MMIF in the lower plot. Go back to the phase, by making axis 1 active (click on it) and selecting phase(w) in the axis type menu (which is located just on the right of the current axis button).
- IIx select sets you want to display using iicom(';showabs;ch1');iicom('iix only',{'Test','IdFrf'}). You could also achieve the same thing using the IIplot:Variables menu.
- Note that when you print the figure, you may want to use the comgui('ImWrite','FileName.ext') command or -noui switch so that the GUI is not printed. It is the same command as for feplot image printing (see iicom ImWrite).
2.1.4 Channel tab usage#
Once you have selected the datasets to be displayed, you can use the channel tab to scan trough the data. Major commands you might want to know
- use the to scan trough different transfer functions. Note that you can also use the + or - keys when a drawing axis is active.
- Go the Channel tab of the property figure (open with iicom('InitChannel')) and select one more than one channel in the list. In the figure, the >10 is used to illustrate that the tab supports channel selection. For datasets with string labels use 10*.
- Note that you can also select channels from the command line using iicom('ch 1 5').
2.1.5 Handling displayed units and labels#
ci=iicom('curveload gartid'); ci.Stack{'Test'}.yn.unit='N'; ci.Stack{'Test'}.yd.unit='M'; iicom sub
2.1.6 SDT 5 compatibility#
With SDT 6, global variables are no longer used and iiplot supports display of curves in other settings than identification.
If you have saved SDT 5 datasets into a .mat file, iicom('CurveLoad FileName') will place the data into an SDT 6 stack properly. Otherwise for an operation similar to that of SDT 5, where you use XF(1).xf rather than the new ci.Stack{'Test'}.xf, you should start iiplot in its identification mode and obtain a pointer XF (SDT handle object) to the data sets (now stored in the figure itself) as follows
>> ci=iicom('curveid');XF=iicom(ci,'curveXF')XF (curve stack in figure 2) =
XF(1) : [.w 0x0, xf 0x0] 'Test' : response (general or unknown) XF(2) : [.w 0x0, xf 0x0] 'IdFrf' : response (general or unknown) XF(3) : [.w 0x0, xf 0x0] 'IIxh' : response (general or unknown) XF(4) : [.w 0x0, xf 0x0] 'IIxi' : response (general or unknown) XF(5) : [.po 0x0, res 0x0] 'IdMain' : shape data
XF(6) : [.po 0x0, res 0x0] 'IdAlt' : shape data
The following table lists the global variables that were used in SDT 5 and the new procedure to access those fields which should be defined directly.
XFdof | described DOFs at which the responses/shapes are defined, see .dof field for response and shape data in the xfopt section, was a global variable pointed at by the ci.Stack{'name'}.dof fields. |
IDopt | which contains options used by identification routines, see idopt) is now stored in ci.IDopt. |
IIw | was a global variable pointed at by the ci.Stack{'name'}.w fields. |
IIxf | (main data set) was a global variable pointed at by the ci.Stack{'Test'}.xf fields. |
IIxe | (identified model) was a global variable pointed at by the ci.Stack{'IdFrf'}.xf fields. |
IIxh | (alternate data set) was a global variable pointed at by the ci.Stack{'IIxh'}.xf fields. |
IIxi | (alternate data set) was a global variable pointed at by the ci.Stack{'IIxi'}.xf fields. |
IIpo | (main pole set) was a global variable pointed at by the ci.Stack{'IdMain'}.po fields. |
IIres | (main residue set) was a global variable pointed at by the ci.Stack{'IdMain'}.res fields. |
IIpo1 | (alternate pole set) was a global variable pointed at by the ci.Stack{'IdAlt'}.po fields. |
IIres1 | (alternate residue set) was a global variable pointed at by the ci.Stack{'IdAlt'}.res fields. |
XF |
2.1.7 iiplot for signal processing#
iiplot figure lets you perform standard signal processing operations (FFT, MMIF, filtering...) directly from the GUI. Opening iiplot properties figure, they are accessible trough the contextual menu compute (right click on the curve list in the Stack tab). Once an operation has been performed, its parameters can be edited in the GUI, and it can be recomputed using the Recompute button.
Following example illustrates some signal processing commands.
[mdl,def]=fe_time('demobar10-run'); % build mdl and perform time computation cf=feplot(2); cf.model=mdl; cf.def=def;
ci=iiplot(3); fecom(cf,'CursorOnIiplot') % display deformations in iiplot
% all following operations can be performed directly in the GUI: % see the list of curves contained in iiplot figure, Stack tab: iicom(ci,'pro');iicom(ci,'curtab Stack'); % compute FFT of deformations. Name of entry 'feplot(2)_def(1)' ename=ci.Stack(:,2); ename=ename{strncmp(ename,'feplot',5)}; ii_mmif('FFT',ci,ename) % compute fname=sprintf('fft(%s)',ename); iicom(ci,'curtab Stack',fname); % show FFT options that are editable % edit options & Recompute: ci.Stack{fname}.Set={'fmax',50}; iicom(ci,'curtab Stack',fname,'Recompute');
% filter and display (the bandpass removes a lot of transient) ii_mmif('BandPass -fmin 40 -fmax 50',ci,ename) % compute fname=sprintf('bandpass(%s)',ename); ci.Stack{fname}.Set={'fmin',10,'fmax',20}; iicom(ci,'curtab Stack',fname,'Recompute'); iicom(ci,'iix',{ename,fname});
2.1.8 iiplot FAQ#
This section lists various questions that were not answered elsewhere.
-
How do I display a channel with an other channel in abscissa?
The low level call ci.ua.ob(1,11)=channel; defines the channel number channel of the displayed curve as the abscissa of other channels.ci.ua.ob(1,11)=3; % define channel 3 as abscissa iiplot; % display the changes set(ci.ga,'XLim',[0 1e-3]); % redefine axis bounds
- Channel selection in multi-dimensional arrays
% sdtweb('demosdt.m#DemoGartteCurve') % FRF with 2 damping levels ci=iiplot(demosdt('demogarttecurve')) ci.Stack{'New'} iicom(ci,'ChAllzeta')