{"base": 144, "html": "\n<p class=\"meta\">Manuscript draft. Readers are assumed to be familiar with Gomaa et al. [<a class=\"cite\" href=\"#ref-gomaa\">1</a>].</p>\n<h1 id=\"sec2\"><span class=\"secno\">2</span>Problem formulation</h1>\n<h2 id=\"s21\"><span class=\"secno\">2.1</span>Motivation</h2>\n<p>Hybrid simulation relies on the transfer system to impose the computed displacements on the specimen. When the outer controller loop loses stability, the actuator drives the specimen beyond its target displacements. Such instability creates safety hazards for laboratory personnel and can also damage the specimen and expensive equipment such as the actuator and servo-valve. Instability then necessitates early termination of the test, and the experiment is lost before the planned loading is completed. Because the specimen may already be damaged, the test must be repeated with a new specimen. The dynamics of the experiment are not fixed, because the specimen itself can change during the test. Maghareh et al. [<a class=\"cite\" href=\"#ref-maghareh\">2</a>] noted that a failure in part of the physical substructure can drastically change its dynamics. They also noted that such a change affects the safety and integrity of the experiment.</p>\n<p>Gomaa et al. [<a class=\"cite\" href=\"#ref-gomaa\">1</a>] showed that specimen degradation can cause this instability even when the outer controller is properly tuned for the initial state. As the specimen degrades, its stiffness decreases and the same controller produces a larger response. This results in gain amplification in the outer controller loop, which reduces its gain margin. Conventional time-delay-based margins can miss this mechanism, so Gomaa et al. [<a class=\"cite\" href=\"#ref-gomaa\">1</a>] proposed the NCF online stability indicator (NCF OSI) based on the NCF margin. This finding encourages the use of the NCF margin in this study. However, that finding was obtained from a virtual hybrid simulation, so this section examines whether the same mechanism appears in a physical experiment.</p>\n<h2 id=\"s22\"><span class=\"secno\">2.2</span>Experimental setup</h2>\n<p>Figure 1 shows the experimental setup, in which the specimen is a steel column representing the physical substructure. Its base is anchored to a concrete block with four Hilti anchors, and its top is connected to the actuator. An MTS hydraulic actuator with a capacity of 10 kip imposes the lateral displacement at the top of the column. The internal LVDT of the actuator measures this displacement, which serves as the feedback signal of the outer controller loop. A Speedgoat real-time target runs the outer controller and sends the command to the actuator at 2048 Hz.</p>\n<figure id=\"fig_setup\"><img src=\"figures/fig_setup.jpg\" alt=\"Steel column specimen anchored to a concrete block and loaded laterally by an MTS actuator\" style=\"width:60%;max-width:100%;display:block;margin:0 auto;background:#fff\"/><figcaption><b>Figure 1.</b> Experimental setup: steel column specimen anchored to a concrete block and loaded laterally by a hydraulic actuator.</figcaption></figure>\n<p>The goal of the tests is to compare the outer controller loop before and after damage. The plant is first identified in the initial state, while the anchorage is undamaged and the specimen has its initial stiffness. The specimen is then pushed laterally until the concrete around the anchors cracks and the base loses part of its rotational stiffness. Finally, the plant of the degraded specimen is identified, and Section 2.3 compares the two states.</p>\n<p>No numerical substructure is involved in the tests of this section, and the measured force is therefore not fed back. The reference <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>u</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> is a prescribed displacement, so only the outer controller loop is closed. As Figure 2 shows, the outer controller <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>C</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> acts on the tracking error <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>u</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x02212;</mo><mi>y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> and sends the command <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>v</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> to the plant <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>H</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo>&#x0002C;</mo><mi>k</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>. The measured displacement <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> is then fed back to the controller, which closes the loop with unity feedback.</p>\n<figure id=\"fig_loop\"><svg role=\"img\" aria-labelledby=\"flt fld\" viewBox=\"0 0 560 130\">\n<title id=\"flt\">Outer controller loop with a prescribed reference u(t), used to identify the plant H(s,k) in the initial and damaged states</title>\n<desc id=\"fld\">The reference u enters a summing junction, where the measured displacement y is subtracted. The tracking error enters the controller C(s), which sends the command v to the transfer system and specimen H(s,k). The output y is fed back to the summing junction.</desc>\n<style>#fig_loop svg text{font-size:13px}#fig_loop svg .lb{font-size:14px}</style>\n<defs><marker id=\"fla000\" markerWidth=\"7\" markerHeight=\"7\" refX=\"9\" refY=\"5\" viewBox=\"0 0 10 10\" orient=\"auto-start-reverse\"><path d=\"M0 0 L10 5 L0 10 Z\" fill=\"#000\"/></marker><marker id=\"fla1689BA\" markerWidth=\"7\" markerHeight=\"7\" refX=\"9\" refY=\"5\" viewBox=\"0 0 10 10\" orient=\"auto-start-reverse\"><path d=\"M0 0 L10 5 L0 10 Z\" fill=\"#1689BA\"/></marker><marker id=\"fla404040\" markerWidth=\"7\" markerHeight=\"7\" refX=\"9\" refY=\"5\" viewBox=\"0 0 10 10\" orient=\"auto-start-reverse\"><path d=\"M0 0 L10 5 L0 10 Z\" fill=\"#404040\"/></marker></defs>\n<g fill=\"#CCCCCC\" stroke=\"#000\" stroke-width=\"0.8\"><rect x=\"170\" y=\"30\" width=\"90\" height=\"46\"/><rect x=\"320\" y=\"30\" width=\"130\" height=\"46\"/></g>\n<circle cx=\"115\" cy=\"53\" r=\"9\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"0.8\"/>\n<g fill=\"none\" stroke-width=\"1.1\">\n<path d=\"M30 53 H104\" stroke=\"#404040\" marker-end=\"url(#fla404040)\"/>\n<path d=\"M124 53 H168\" stroke=\"#404040\" marker-end=\"url(#fla404040)\"/>\n<path d=\"M260 53 H318\" stroke=\"#000\" stroke-width=\"1.4\" marker-end=\"url(#fla000)\"/>\n<path d=\"M450 53 H540\" stroke=\"#1689BA\" marker-end=\"url(#fla1689BA)\"/>\n<path d=\"M495 53 V110 H115 V64\" stroke=\"#1689BA\" marker-end=\"url(#fla1689BA)\"/>\n</g>\n<circle cx=\"495\" cy=\"53\" r=\"2.4\" fill=\"#1689BA\"/>\n<g text-anchor=\"middle\" fill=\"#000\">\n<text x=\"215\" y=\"50\" class=\"it lb\">C(s)</text><text x=\"215\" y=\"66\">Controller</text>\n<text x=\"385\" y=\"45\" class=\"it lb\">H(s, k)</text><text x=\"385\" y=\"60\">Transfer system</text><text x=\"385\" y=\"73\">and specimen</text>\n<text x=\"60\" y=\"45\" class=\"it lb\">u(t)</text><text x=\"102\" y=\"42\">+</text><text x=\"106\" y=\"80\">−</text>\n<text x=\"289\" y=\"45\" class=\"it lb\">v(t)</text><text x=\"525\" y=\"45\" class=\"it lb\">y(t)</text>\n</g></svg>\n<figcaption><b>Figure 2.</b> Outer controller loop with a prescribed reference <i>u</i>(<i>t</i>), used to identify the plant <i>H</i>(<i>s</i>,<i>k</i>) in the initial and damaged states.</figcaption></figure>\n<h2 id=\"s23\"><span class=\"secno\">2.3</span>Effect of degradation on stability</h2>\n<p>The plant <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>H</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo>&#x0002C;</mo><mi>k</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> was experimentally identified before and after the anchorage damage, and the two identified plants are denoted <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>H</mi><mn>0</mn></msub></mrow></math> and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>H</mi><mi>d</mi></msub></mrow></math>. In each state, band-limited white noise up to 80 Hz was applied through the loop of Figure 2 with the same PID controller <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>C</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>. A parametric model was then fitted to the transfer function from the command <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>v</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> to the measured displacement <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>. In the initial state, the lateral stiffness of the specimen at the actuator control point was <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>k</mi><mn>0</mn></msub><mo>&#x0003D;</mo><mn>7.20</mn></mrow></math> MN/m. After the anchorage was damaged, the lateral stiffness fell to 5.38 MN/m, or <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mn>0.75</mn><mspace width=\"0.167em\" /><msub><mi>k</mi><mn>0</mn></msub></mrow></math>, which is a 25% loss.</p>\n<p>In the loop of Figure 2, the controller <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>C</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> is the same in both states, and only the specimen changes. The open-loop transfer function is therefore <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>L</mi><mn>0</mn></msub><mo>&#x0003D;</mo><mi>C</mi><msub><mi>H</mi><mn>0</mn></msub></mrow></math> in the initial state and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>L</mi><mi>d</mi></msub><mo>&#x0003D;</mo><mi>C</mi><msub><mi>H</mi><mi>d</mi></msub></mrow></math> in the damaged state. The chordal distance between <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>L</mi><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> and the critical point <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mo>&#x02212;</mo><mn>1</mn></mrow></math> is</p>\n<div class=\"equation\" id=\"eq1\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><mi>&#x003C7;</mi><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mfrac><mrow><mo stretchy=\"false\">&#x0007C;</mo><mn>1</mn><mo>&#x0002B;</mo><mi>L</mi><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo stretchy=\"false\">&#x0007C;</mo></mrow><mrow><msqrt><mrow><mn>2</mn><mo minsize=\"1.2em\" maxsize=\"1.2em\">(</mo><mn>1</mn><mo>&#x0002B;</mo><mo stretchy=\"false\">&#x0007C;</mo><mi>L</mi><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><msup><mo stretchy=\"false\">&#x0007C;</mo><mrow><mn>2</mn></mrow></msup><mo minsize=\"1.2em\" maxsize=\"1.2em\">)</mo></mrow></msqrt></mrow></mfrac><mo>&#x0002C;</mo></mrow></math></div><span class=\"eqno\">(1)</span></div>\n<p>and its minimum over frequency is the NCF margin, presented by Vinnicombe [<a class=\"cite\" href=\"#ref-vinnicombe\">3</a>] as the generalized stability margin. Figure 3 compares the experimentally identified frequency responses of the two states and their chordal distances.</p>\n<figure id=\"fig_ol\"><img src=\"figures/fig_open_loop.svg\" alt=\"Open-loop magnitude, phase and chordal distance for the initial and damaged systems\" style=\"width:70%;max-width:100%;display:block;margin:0 auto;background:#fff\"/><figcaption><b>Figure 3.</b> Experimentally identified open-loop frequency response of the outer controller loop and its chordal distance for the initial and damaged systems. Markers show the measured points, lines show the fitted models, blue dots show the NCF margins, and the dotted line shows the 0.4 guideline.</figcaption></figure>\n<p>The 25% loss of lateral stiffness raised the loop gain by a factor of about 2.4. However, the phase of the loop changed only slightly, as Figure 3 shows. The loss of stiffness therefore mainly amplifies the loop gain rather than adding phase lag. Consequently, the NCF margin falls from 0.59 at 35 Hz in the initial state to 0.34 at 39 Hz in the damaged state, below the 0.4 guideline. These trends agree with the gain-amplification mechanism and the guideline proposed by Gomaa et al. [<a class=\"cite\" href=\"#ref-gomaa\">1</a>], so the mechanism also appears in a physical experiment.</p>\n<h2 id=\"s24\"><span class=\"secno\">2.4</span>Problem statement</h2>\n<p>These results expose a dilemma for a fixed outer controller, which must be tuned before the experiment begins. A controller tuned for the initial state becomes too aggressive once the specimen degrades, as Section 2.3 showed. Conversely, a controller tuned for the damaged state can remain stable but compromises tracking performance in the initial state. The specimen state is also highly uncertain during the experiment, so the appropriate tuning cannot be chosen in advance. The stability of the outer controller loop must therefore be quantified online based on the observed measurements. Updating the controller accordingly is then required so the experiment is completed safely and successfully. Section 3 presents a framework that meets both requirements by combining an online stability indicator with an adaptive controller.</p>\n<h1 id=\"sec3\"><span class=\"secno\">3</span>Online NCF stability indicator framework for adaptive control</h1>\n<p class=\"lead\">The NCF OSI introduced in Section 2.1 quantifies the robustness of the closed-loop system as the physical plant changes during the experiment. This study extends the analytical results to experimental implementation, discusses the challenges that arise, and proposes ways to address them. The proposed framework comprises two parts: an online estimator of the indicator and an adaptive controller that scales the outer controller output according to the estimated indicator. The indicator is estimated during the experiment from the desired displacement calculated by the numerical substructure and the measured actuator displacement. To this end, three estimator branches are combined at each frequency, each weighted by the confidence in its output. The first is direct identification, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow></mrow></msub></mrow></math>, which estimates the closed-loop transfer function of the outer controller loop from the desired displacement <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>u</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> to the measured actuator displacement <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>, with the <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>H</mi><mn>1</mn></msub></mrow></math> cross-spectral estimator [<a class=\"cite\" href=\"#ref-bendat\">4</a>]. The second is output-power inference, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">p</mi><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">w</mi></mrow></mrow></msub></mrow></math>, which can detect loop amplification at frequencies that cannot be reliably identified. This branch compares the output power measured during the experiment against the reference recorded before the excitation. The third is the prior identification of the initial state, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mn>0</mn></mrow></msub></mrow></math>, which serves as a fallback when insufficient information is available. The adaptive controller then uses the estimated indicator to scale the controller output by the adaptive factor <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math>, keeping the loop stable with an adequate margin as the specimen degrades while retaining as much tracking performance as possible. This section presents the framework first and then its calibration against cases with a known margin.</p>\n<h2 id=\"s1\"><span class=\"secno\">3.1</span>Framework Architecture</h2>\n<p>In the hybrid simulation of Figure 4, the numerical substructure computes the desired displacement <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>d</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> from the ground acceleration and measured force <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>f</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>. To compensate for transfer-system lag and improve tracking, a phase-lead compensator receives <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>d</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> and produces the reference <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>u</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>. The outer controller <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>C</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> takes the tracking error <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>u</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x02212;</mo><mi>y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>, where <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> is the measured actuator displacement. It scales its output by the adaptive factor <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi><mo>&#x02208;</mo><mo stretchy=\"false\">&#x00028;</mo><mn>0</mn><mo>&#x0002C;</mo><mn>1</mn><mo stretchy=\"false\">]</mo></mrow></math> to produce the command <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>v</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> sent to the plant <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>H</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo>&#x0002C;</mo><mi>k</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>.</p>\n<p>The plant comprises the specimen of stiffness <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>k</mi></mrow></math> and the transfer system, which includes the inner-loop controller, servo-valve, and actuator. The control–structure interaction discussed by Dyke et al. [<a class=\"cite\" href=\"#ref-dyke\">5</a>] is also accounted for in the transfer-system dynamics. The measured force <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>f</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> is fed back to the numerical substructure and closes the numerical substructure loop. Similarly, the measured displacement <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> is fed back to the outer controller and closes the outer controller loop.</p>\n<p>The NCF OSI block runs alongside the outer-controller loop and does not alter the signals within it. It collects the reference <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>u</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> and the measured displacement <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> over a moving window and estimates the NCF margin of the loop at each update. The adaptive law then compares this estimate with a target margin and updates the adaptive factor <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math>. A lower margin reduces <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> to restore stability, while a sufficient margin lets <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> recover toward one to retain tracking performance.</p>\n<figure id=\"fig1\"><svg role=\"img\" aria-labelledby=\"f1t f1d\" viewBox=\"0 0 602 200\" data-units=\"px\">\n<title id=\"f1t\">Hybrid simulation loop with the NCF OSI framework setup</title>\n<desc id=\"f1d\">The numerical substructure computes the desired displacement d, which the phase-lead compensator turns into the reference u. The tracking error u minus d_m enters the controller C(s). The adaptive factor lambda scales its output to give the command v applied to the transfer system and specimen H(s,k), whose output is y. The measured displacement d_m returns to the summing junction. The measured force f_m returns to the numerical substructure. The NCF OSI collects the reference u and the measured displacement d_m and updates lambda.</desc>\n<defs><marker id=\"f1a000\" markerWidth=\"7\" markerHeight=\"7\" refX=\"9\" refY=\"5\" viewBox=\"0 0 10 10\" orient=\"auto-start-reverse\"><path d=\"M0 0 L10 5 L0 10 Z\" fill=\"#000\"/></marker><marker id=\"f1a1689BA\" markerWidth=\"7\" markerHeight=\"7\" refX=\"9\" refY=\"5\" viewBox=\"0 0 10 10\" orient=\"auto-start-reverse\"><path d=\"M0 0 L10 5 L0 10 Z\" fill=\"#1689BA\"/></marker><marker id=\"f1a278A42\" markerWidth=\"7\" markerHeight=\"7\" refX=\"9\" refY=\"5\" viewBox=\"0 0 10 10\" orient=\"auto-start-reverse\"><path d=\"M0 0 L10 5 L0 10 Z\" fill=\"#278A42\"/></marker><marker id=\"f1a404040\" markerWidth=\"7\" markerHeight=\"7\" refX=\"9\" refY=\"5\" viewBox=\"0 0 10 10\" orient=\"auto-start-reverse\"><path d=\"M0 0 L10 5 L0 10 Z\" fill=\"#404040\"/></marker><marker id=\"f1aA518AD\" markerWidth=\"7\" markerHeight=\"7\" refX=\"9\" refY=\"5\" viewBox=\"0 0 10 10\" orient=\"auto-start-reverse\"><path d=\"M0 0 L10 5 L0 10 Z\" fill=\"#A518AD\"/></marker></defs>\n<g fill=\"#CCCCCC\" stroke=\"#000\" stroke-width=\"0.8\">\n<rect x=\"4\" y=\"89\" width=\"82\" height=\"52\"/><rect x=\"110\" y=\"89\" width=\"78\" height=\"52\"/><rect x=\"270\" y=\"89\" width=\"58\" height=\"52\"/>\n<rect x=\"352\" y=\"89\" width=\"58\" height=\"52\"/><rect x=\"442\" y=\"89\" width=\"94\" height=\"52\"/>\n<rect x=\"440\" y=\"6\" width=\"96\" height=\"34\" fill=\"#BEDCC6\"/>\n</g>\n<circle cx=\"238\" cy=\"115\" r=\"8\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"0.8\"/>\n<g fill=\"none\" stroke-width=\"1\">\n<path d=\"M86 115 H108\" stroke=\"#404040\" marker-end=\"url(#f1a404040)\"/>\n<path d=\"M188 115 H228\" stroke=\"#404040\" marker-end=\"url(#f1a404040)\"/>\n<path d=\"M246 115 H268\" stroke=\"#404040\" marker-end=\"url(#f1a404040)\"/>\n<path d=\"M328 115 H350\" stroke=\"#404040\" marker-end=\"url(#f1a404040)\"/>\n<path d=\"M410 115 H440\" stroke=\"#000\" stroke-width=\"1.3\" marker-end=\"url(#f1a000)\"/>\n<path d=\"M536 111 H600\" stroke=\"#1689BA\" marker-end=\"url(#f1a1689BA)\"/>\n<path d=\"M556 111 V168 H238 V125\" stroke=\"#1689BA\" marker-end=\"url(#f1a1689BA)\"/>\n<path d=\"M536 124 H574 V190 H45 V143\" stroke=\"#A518AD\" marker-end=\"url(#f1aA518AD)\"/>\n<path d=\"M216 115 V23 H438\" stroke=\"#278A42\" marker-end=\"url(#f1a278A42)\"/>\n<path d=\"M556 111 V23 H538\" stroke=\"#278A42\" marker-end=\"url(#f1a278A42)\"/>\n<path d=\"M470 40 V62 H381 V86.5\" stroke=\"#278A42\"/><circle cx=\"381\" cy=\"89\" r=\"2.5\" fill=\"#fff\" stroke=\"#278A42\" stroke-width=\"1.2\"/>\n</g>\n<circle cx=\"556\" cy=\"111\" r=\"2.2\" fill=\"#1689BA\"/><circle cx=\"216\" cy=\"115\" r=\"2.2\" fill=\"#278A42\"/>\n<g text-anchor=\"middle\" fill=\"#000\">\n<text x=\"45\" y=\"112\">Numerical</text><text x=\"45\" y=\"125\">substructure</text>\n<text x=\"149\" y=\"112\">Phase-lead</text><text x=\"149\" y=\"125\">compensator</text>\n<text x=\"299\" y=\"112\" class=\"it\">C(s)</text><text x=\"299\" y=\"125\">Controller</text>\n<text x=\"381\" y=\"106\" class=\"it\">λ</text><text x=\"381\" y=\"119\">Adaptive</text><text x=\"381\" y=\"131\">factor</text>\n<text x=\"489\" y=\"106\" class=\"it\">H(s, k)</text><text x=\"489\" y=\"119\">Transfer system</text><text x=\"489\" y=\"131\">and specimen</text>\n<text x=\"488\" y=\"27\">NCF OSI</text>\n</g>\n<g fill=\"currentColor\">\n<text x=\"98\" y=\"108\" text-anchor=\"middle\" class=\"it\">d(t)</text>\n<text x=\"200\" y=\"108\" text-anchor=\"middle\" class=\"it\">u(t)</text>\n<text x=\"225\" y=\"104\" text-anchor=\"middle\">+</text><text x=\"229\" y=\"137\" text-anchor=\"middle\">−</text>\n<text x=\"426\" y=\"108\" text-anchor=\"middle\" class=\"it\" font-weight=\"700\">v(t)</text>\n<text x=\"589\" y=\"104\" text-anchor=\"middle\" class=\"it\">y(t)</text>\n<text x=\"394\" y=\"163\" text-anchor=\"middle\" class=\"it\">d<tspan dy=\"3\" font-size=\"9\">m</tspan></text>\n<text x=\"300\" y=\"185\" text-anchor=\"middle\" class=\"it\">f<tspan dy=\"3\" font-size=\"9\">m</tspan></text>\n</g>\n<text x=\"426\" y=\"57\" text-anchor=\"middle\" fill=\"#278A42\" class=\"sm\">update</text>\n</svg>\n<figcaption><b>Figure 4.</b> Hybrid simulation loop with the NCF OSI framework setup.</figcaption></figure>\n<p>The plant in Figure 4 is characterized by the transfer function <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>H</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo>&#x0002C;</mo><mi>k</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mi>Y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002F;</mo><mi>V</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> from the command <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>v</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> to the measured actuator displacement <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>. The open-loop transfer function of the outer controller loop and its closed-loop response from <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>u</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> to <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> are</p>\n<div class=\"equation\" id=\"eq2\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><mi>L</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo>&#x0002C;</mo><mi>&#x003BB;</mi><mo>&#x0002C;</mo><mi>k</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mi>&#x003BB;</mi><mspace width=\"0.167em\" /><mi>C</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo stretchy=\"false\">&#x00029;</mo><mspace width=\"0.167em\" /><mi>H</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo>&#x0002C;</mo><mi>k</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002C;</mo></mrow></math></div><span class=\"eqno\">(2)</span></div>\n<div class=\"equation\" id=\"eq3\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><mi>T</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo>&#x0002C;</mo><mi>&#x003BB;</mi><mo>&#x0002C;</mo><mi>k</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mfrac><mrow><mi>Y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo stretchy=\"false\">&#x00029;</mo></mrow><mrow><mi>U</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></mfrac><mo>&#x0003D;</mo><mfrac><mrow><mi>L</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo>&#x0002C;</mo><mi>&#x003BB;</mi><mo>&#x0002C;</mo><mi>k</mi><mo stretchy=\"false\">&#x00029;</mo></mrow><mrow><mn>1</mn><mo>&#x0002B;</mo><mi>L</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo>&#x0002C;</mo><mi>&#x003BB;</mi><mo>&#x0002C;</mo><mi>k</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></mfrac><mo>&#x0002C;</mo></mrow></math></div><span class=\"eqno\">(3)</span></div>\n<p>Here <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>U</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>Y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>V</mi><mo stretchy=\"false\">&#x00028;</mo><mi>s</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> are the Laplace transforms of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>u</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>v</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>, respectively. The NCF stability margin of the outer controller loop is evaluated for the loop <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>L</mi></mrow></math> under unity feedback [<a class=\"cite\" href=\"#ref-glover\">6</a>]:</p>\n<div class=\"equation\" id=\"eq4\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">N</mi><mi mathvariant=\"normal\">C</mi><mi mathvariant=\"normal\">F</mi></mrow></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>L</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><msub><mo>inf</mo><mrow><mi>&#x003C9;</mi></mrow></msub><mi>&#x003C7;</mi><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(4)</span></div>\n<p>As the specimen changes during a hybrid simulation, the loop <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>L</mi><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> changes with it, and so does its margin. Equation <a href=\"#eq4\">(4)</a> could be applied directly only if <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>L</mi><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> were identified with high confidence at every frequency, but online measurements rarely support this. The NCF OSI is therefore estimated from three complementary branches, which the following sections develop in turn. These are direct identification <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow></mrow></msub></mrow></math>, output-power inference <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">p</mi><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">w</mi></mrow></mrow></msub></mrow></math> and the prior identification of the initial state <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mn>0</mn></msub></mrow></math>.</p>\n<h2 id=\"s2\"><span class=\"secno\">3.1.1</span>Direct identification branch, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow></mrow></msub></mrow></math></h2>\n<p>Identifying the closed-loop transfer function requires the autospectrum of reference <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>u</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> and the cross spectrum of measured actuator displacement <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> with <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>u</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>. The autospectrum of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> is also needed to calculate coherence, which helps set the identification weight at each frequency. A moving window lets these spectra follow changes in the specimen during the experiment instead of averaging over the whole record.</p>\n<p>Each window contains <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>N</mi><mo>&#x0003D;</mo><msub><mi>f</mi><mi>s</mi></msub><msub><mi>T</mi><mi>w</mi></msub></mrow></math> samples of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>u</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>, where <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>f</mi><mi>s</mi></msub></mrow></math> is the sampling frequency and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>T</mi><mi>w</mi></msub></mrow></math> is the window duration. Updates occur at intervals <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x00394;</mi><mi>t</mi></mrow></math>, so consecutive windows overlap when <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x00394;</mi><mi>t</mi><mo>&#x0003C;</mo><msub><mi>T</mi><mi>w</mi></msub></mrow></math> and share part of their samples. With update index <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>n</mi></mrow></math> and sample index <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>r</mi><mo>&#x0003D;</mo><mn>0</mn><mo>&#x0002C;</mo><mo>&#x02026;</mo><mo>&#x0002C;</mo><mi>N</mi><mo>&#x02212;</mo><mn>1</mn></mrow></math> within each window, the Hann-windowed discrete Fourier transforms are</p>\n<div class=\"equation\" id=\"eq5\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>U</mi><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><munderover><mo>&#x02211;</mo><mrow><mi>r</mi><mo>&#x0003D;</mo><mn>0</mn></mrow><mrow><mi>N</mi><mo>&#x02212;</mo><mn>1</mn></mrow></munderover><mi>w</mi><mo stretchy=\"false\">[</mo><mi>r</mi><mo stretchy=\"false\">]</mo><mspace width=\"0.167em\" /><msub><mi>u</mi><mi>n</mi></msub><mo stretchy=\"false\">[</mo><mi>r</mi><mo stretchy=\"false\">]</mo><mspace width=\"0.167em\" /><msup><mi>e</mi><mrow><mo>&#x02212;</mo><mi>j</mi><mn>2</mn><mi>&#x003C0;</mi><mi>m</mi><mi>r</mi><mo>&#x0002F;</mo><mi>N</mi></mrow></msup><mo>&#x0002C;</mo></mrow></math></div><span class=\"eqno\">(5)</span></div>\n<div class=\"equation\" id=\"eq6\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>Y</mi><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><munderover><mo>&#x02211;</mo><mrow><mi>r</mi><mo>&#x0003D;</mo><mn>0</mn></mrow><mrow><mi>N</mi><mo>&#x02212;</mo><mn>1</mn></mrow></munderover><mi>w</mi><mo stretchy=\"false\">[</mo><mi>r</mi><mo stretchy=\"false\">]</mo><mspace width=\"0.167em\" /><msub><mi>y</mi><mi>n</mi></msub><mo stretchy=\"false\">[</mo><mi>r</mi><mo stretchy=\"false\">]</mo><mspace width=\"0.167em\" /><msup><mi>e</mi><mrow><mo>&#x02212;</mo><mi>j</mi><mn>2</mn><mi>&#x003C0;</mi><mi>m</mi><mi>r</mi><mo>&#x0002F;</mo><mi>N</mi></mrow></msup><mo>&#x0002C;</mo></mrow></math></div><span class=\"eqno\">(6)</span></div>\n<p>where <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>u</mi><mi>n</mi></msub><mo stretchy=\"false\">[</mo><mi>r</mi><mo stretchy=\"false\">]</mo></mrow></math> and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>y</mi><mi>n</mi></msub><mo stretchy=\"false\">[</mo><mi>r</mi><mo stretchy=\"false\">]</mo></mrow></math> are the samples of window <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>n</mi></mrow></math>, and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo>&#x0003D;</mo><mn>2</mn><mi>&#x003C0;</mi><mi>m</mi><msub><mi>f</mi><mi>s</mi></msub><mo>&#x0002F;</mo><mi>N</mi></mrow></math> is the angular frequency of bin <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>m</mi></mrow></math>. The samples of each window are weighted by the Hann window presented by Blackman and Tukey [<a class=\"cite\" href=\"#ref-blackman\">7</a>]:</p>\n<div class=\"equation\" id=\"eq7\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><mi>w</mi><mo stretchy=\"false\">[</mo><mi>r</mi><mo stretchy=\"false\">]</mo><mo>&#x0003D;</mo><mfrac><mrow><mn>1</mn></mrow><mrow><mn>2</mn></mrow></mfrac><mrow><mo stretchy=\"true\" fence=\"true\" form=\"prefix\">[</mo><mn>1</mn><mo>&#x02212;</mo><mi>cos</mi><mspace width=\"negativethinmathspace\" /><mrow><mo stretchy=\"true\" fence=\"true\" form=\"prefix\">&#x00028;</mo><mfrac><mrow><mn>2</mn><mi>&#x003C0;</mi><mi>r</mi></mrow><mrow><mi>N</mi><mo>&#x02212;</mo><mn>1</mn></mrow></mfrac><mo stretchy=\"true\" fence=\"true\" form=\"postfix\">&#x00029;</mo></mrow><mo stretchy=\"true\" fence=\"true\" form=\"postfix\">]</mo></mrow><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(7)</span></div>\n<p>Welch [<a class=\"cite\" href=\"#ref-welch\">8</a>] proposed estimating the power spectrum by averaging, with equal weight, the squared Fourier magnitudes of overlapping windowed segments of a record. Cross spectra are estimated in the same way from products of paired Fourier transforms, with one transform conjugated. In the present study, the plant changes as the specimen degrades, so recent windows should carry more weight than earlier ones. Each window therefore provides one raw estimate of the autospectra of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>u</mi></mrow></math> and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi></mrow></math> and the cross spectrum of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi></mrow></math> with <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>u</mi></mrow></math>:</p>\n<div class=\"equation\" id=\"eq8\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>p</mi><mrow><mi>u</mi><mi>u</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mo stretchy=\"false\">&#x0007C;</mo><msub><mi>U</mi><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><msup><mo stretchy=\"false\">&#x0007C;</mo><mrow><mn>2</mn></mrow></msup><mo>&#x0002C;</mo></mrow></math></div><span class=\"eqno\">(8)</span></div>\n<div class=\"equation\" id=\"eq9\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>p</mi><mrow><mi>y</mi><mi>y</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mo stretchy=\"false\">&#x0007C;</mo><msub><mi>Y</mi><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><msup><mo stretchy=\"false\">&#x0007C;</mo><mrow><mn>2</mn></mrow></msup><mo>&#x0002C;</mo></mrow></math></div><span class=\"eqno\">(9)</span></div>\n<div class=\"equation\" id=\"eq10\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>p</mi><mrow><mi>y</mi><mi>u</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><msub><mi>Y</mi><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mspace width=\"0.167em\" /><msubsup><mi>U</mi><mi>n</mi><mrow><mo>&#x0002A;</mo></mrow></msubsup><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002C;</mo></mrow></math></div><span class=\"eqno\">(10)</span></div>\n<p>where the superscript <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mo>&#x0002A;</mo></mrow></math> denotes the complex conjugate, and the subscript <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>n</mi></mrow></math> marks the raw estimate of window <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>n</mi></mrow></math>. These raw estimates are averaged with the geometric moving average proposed by Roberts [<a class=\"cite\" href=\"#ref-roberts\">9</a>], which updates an average from its previous value and the newest observation. Earlier spectra are retained with contributions that decay as new windows arrive, which reduces scatter between updates while still following changes in the plant. The first complete window initializes the average, and at each subsequent update <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003B7;</mi><mi>s</mi></msub></mrow></math> weights the new spectrum and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mn>1</mn><mo>&#x02212;</mo><msub><mi>&#x003B7;</mi><mi>s</mi></msub></mrow></math> weights the previous average:</p>\n<div class=\"equation\" id=\"eq11\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mover><mrow><mi>p</mi></mrow><mo stretchy=\"true\">&#x000AF;</mo></mover><mrow><mi>u</mi><mi>u</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mo stretchy=\"false\">&#x00028;</mo><mn>1</mn><mo>&#x02212;</mo><msub><mi>&#x003B7;</mi><mi>s</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mspace width=\"0.167em\" /><msub><mover><mrow><mi>p</mi></mrow><mo stretchy=\"true\">&#x000AF;</mo></mover><mrow><mi>u</mi><mi>u</mi><mo>&#x0002C;</mo><mi>n</mi><mo>&#x02212;</mo><mn>1</mn></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002B;</mo><msub><mi>&#x003B7;</mi><mi>s</mi></msub><mspace width=\"0.167em\" /><msub><mi>p</mi><mrow><mi>u</mi><mi>u</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002C;</mo></mrow></math></div><span class=\"eqno\">(11)</span></div>\n<div class=\"equation\" id=\"eq12\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mover><mrow><mi>p</mi></mrow><mo stretchy=\"true\">&#x000AF;</mo></mover><mrow><mi>y</mi><mi>y</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mo stretchy=\"false\">&#x00028;</mo><mn>1</mn><mo>&#x02212;</mo><msub><mi>&#x003B7;</mi><mi>s</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mspace width=\"0.167em\" /><msub><mover><mrow><mi>p</mi></mrow><mo stretchy=\"true\">&#x000AF;</mo></mover><mrow><mi>y</mi><mi>y</mi><mo>&#x0002C;</mo><mi>n</mi><mo>&#x02212;</mo><mn>1</mn></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002B;</mo><msub><mi>&#x003B7;</mi><mi>s</mi></msub><mspace width=\"0.167em\" /><msub><mi>p</mi><mrow><mi>y</mi><mi>y</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002C;</mo></mrow></math></div><span class=\"eqno\">(12)</span></div>\n<div class=\"equation\" id=\"eq13\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mover><mrow><mi>p</mi></mrow><mo stretchy=\"true\">&#x000AF;</mo></mover><mrow><mi>y</mi><mi>u</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mo stretchy=\"false\">&#x00028;</mo><mn>1</mn><mo>&#x02212;</mo><msub><mi>&#x003B7;</mi><mi>s</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mspace width=\"0.167em\" /><msub><mover><mrow><mi>p</mi></mrow><mo stretchy=\"true\">&#x000AF;</mo></mover><mrow><mi>y</mi><mi>u</mi><mo>&#x0002C;</mo><mi>n</mi><mo>&#x02212;</mo><mn>1</mn></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002B;</mo><msub><mi>&#x003B7;</mi><mi>s</mi></msub><mspace width=\"0.167em\" /><msub><mi>p</mi><mrow><mi>y</mi><mi>u</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(13)</span></div>\n<p>The NCF OSI is evaluated over <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003A9;</mi></mrow></math>, the set of frequencies considered in the analysis.</p>\n<p>At each selected frequency, the loop response can be identified directly from the reference <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>u</mi></mrow></math> and the measured response <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi></mrow></math>. The averaged spectra give the <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>H</mi><mn>1</mn></msub></mrow></math> estimate of the closed-loop frequency response [<a class=\"cite\" href=\"#ref-bendat\">4</a>] and the magnitude-squared coherence</p>\n<div class=\"equation\" id=\"eq14\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mover><mrow><mi>T</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mfrac><mrow><msub><mover><mrow><mi>p</mi></mrow><mo stretchy=\"true\">&#x000AF;</mo></mover><mrow><mi>y</mi><mi>u</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow><mrow><msub><mover><mrow><mi>p</mi></mrow><mo stretchy=\"true\">&#x000AF;</mo></mover><mrow><mi>u</mi><mi>u</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></mfrac><mo>&#x0002C;</mo></mrow></math></div><span class=\"eqno\">(14)</span></div>\n<div class=\"equation\" id=\"eq15\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msubsup><mi>&#x003B3;</mi><mi>n</mi><mrow><mn>2</mn></mrow></msubsup><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mfrac><mrow><mo stretchy=\"false\">&#x0007C;</mo><msub><mover><mrow><mi>p</mi></mrow><mo stretchy=\"true\">&#x000AF;</mo></mover><mrow><mi>y</mi><mi>u</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><msup><mo stretchy=\"false\">&#x0007C;</mo><mrow><mn>2</mn></mrow></msup></mrow><mrow><msub><mover><mrow><mi>p</mi></mrow><mo stretchy=\"true\">&#x000AF;</mo></mover><mrow><mi>u</mi><mi>u</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mspace width=\"0.167em\" /><msub><mover><mrow><mi>p</mi></mrow><mo stretchy=\"true\">&#x000AF;</mo></mover><mrow><mi>y</mi><mi>y</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></mfrac><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(15)</span></div>\n<p>Inverting Equation <a href=\"#eq3\">(3)</a> gives the identified loop, which is the open-loop transfer function estimated from the measured closed-loop response:</p>\n<div class=\"equation\" id=\"eq16\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mover><mrow><mi>L</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mfrac><mrow><msub><mover><mrow><mi>T</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow><mrow><mn>1</mn><mo>&#x02212;</mo><msub><mover><mrow><mi>T</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></mfrac><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(16)</span></div>\n<p>Here, the identified loop is smoothed with the running median over neighbouring frequencies, as proposed by Di Matteo et al. [<a class=\"cite\" href=\"#ref-dimatteo\">10</a>], so the median is taken over each frequency and its two neighbours. With three values, a single outlying bin cannot set the median, and the smoothed loop <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mover><mrow><mi>L</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mrow><mi>&#x00073;</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> is given by</p>\n<div class=\"equation\" id=\"eq17\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mover><mrow><mi>L</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mrow><mi>&#x00073;</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><msub><mi>&#x003C9;</mi><mi>m</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><munder><mrow><mo>median</mo></mrow><mrow><mi>i</mi><mo>&#x02208;</mo><mo stretchy=\"false\">&#x0007B;</mo><mi>m</mi><mo>&#x02212;</mo><mn>1</mn><mo>&#x0002C;</mo><mspace width=\"0.167em\" /><mi>m</mi><mo>&#x0002C;</mo><mspace width=\"0.167em\" /><mi>m</mi><mo>&#x0002B;</mo><mn>1</mn><mo stretchy=\"false\">&#x0007D;</mo></mrow></munder><mspace width=\"0.278em\" /><msub><mover><mrow><mi>L</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><msub><mi>&#x003C9;</mi><mi>i</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(17)</span></div>\n<p>The identified margin then follows from Equation <a href=\"#eq4\">(4)</a>, with the smoothed loop in place of the unknown loop <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>L</mi></mrow></math>:</p>\n<div class=\"equation\" id=\"eq18\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo>&#x0003D;</mo><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">N</mi><mi mathvariant=\"normal\">C</mi><mi mathvariant=\"normal\">F</mi></mrow></mrow></msub><mo minsize=\"1.2em\" maxsize=\"1.2em\">(</mo><msub><mover><mrow><mi>L</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mrow><mi>&#x00073;</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo minsize=\"1.2em\" maxsize=\"1.2em\">)</mo><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(18)</span></div>\n<p>At each update, however, the estimate is uncertain at any frequency that the command does not excite sufficiently. The measured response at that frequency then stays close to the sensor noise and carries little information.</p>\n<p>Each bin therefore receives an identification weight <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> between zero and one, built from three factors. The first is command activity <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>A</mi><mi>n</mi></msub></mrow></math>, which checks from the root mean square of the window that the command rises above the noise:</p>\n<div class=\"equation\" id=\"eq19\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>A</mi><mi>n</mi></msub><mo>&#x0003D;</mo><mrow><mo stretchy=\"true\" fence=\"true\" form=\"prefix\">&#x0007B;</mo><mtable><mtr><mtd columnalign=\"left\"><mn>1</mn><mo>&#x0002C;</mo></mtd><mtd columnalign=\"left\"><mo>RMS</mo><mo stretchy=\"false\">&#x00028;</mo><msub><mi>u</mi><mi>n</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003E;</mo><msub><mi>&#x003B7;</mi><mi>A</mi></msub><mspace width=\"0.167em\" /><msub><mi>&#x003C3;</mi><mi>u</mi></msub><mo>&#x0002C;</mo></mtd></mtr><mtr><mtd columnalign=\"left\"><mn>0</mn><mo>&#x0002C;</mo></mtd><mtd columnalign=\"left\"><mtext>otherwise</mtext><mo>&#x0002C;</mo></mtd></mtr></mtable></mrow></mrow></math></div><span class=\"eqno\">(19)</span></div>\n<p>where <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mo>RMS</mo><mo stretchy=\"false\">&#x00028;</mo><msub><mi>u</mi><mi>n</mi></msub><mo stretchy=\"false\">&#x00029;</mo></mrow></math> is the root mean square of the command samples in the considered window <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>n</mi></mrow></math>, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003C3;</mi><mi>u</mi></msub></mrow></math> is the standard deviation of the command noise measured in a quiet record, and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003B7;</mi><mi>A</mi></msub></mrow></math> is a hyperparameter to be tuned. The second factor is the input leverage <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x02113;</mi><mi>n</mi></msub></mrow></math>, which reduces the weight of bins that carry little command energy. To measure this, the command power in each bin is first normalized by its maximum over <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003A9;</mi></mrow></math>:</p>\n<div class=\"equation\" id=\"eq20\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>&#x02113;</mi><mrow><mrow><mi mathvariant=\"normal\">r</mi><mi mathvariant=\"normal\">a</mi><mi mathvariant=\"normal\">w</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mfrac><mrow><msub><mover><mrow><mi>p</mi></mrow><mo stretchy=\"true\">&#x000AF;</mo></mover><mrow><mi>u</mi><mi>u</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow><mrow><msub><mo>max</mo><mrow><mi>&#x003BD;</mi><mo>&#x02208;</mo><mi>&#x003A9;</mi></mrow></msub><msub><mover><mrow><mi>p</mi></mrow><mo stretchy=\"true\">&#x000AF;</mo></mover><mrow><mi>u</mi><mi>u</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003BD;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></mfrac><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(20)</span></div>\n<p>The raw leverage then sets the weight of each bin through the threshold <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x02113;</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">h</mi></mrow></mrow></msub></mrow></math>, expressed as a fraction of the peak command power. A bin with <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x02113;</mi><mrow><mrow><mi mathvariant=\"normal\">r</mi><mi mathvariant=\"normal\">a</mi><mi mathvariant=\"normal\">w</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> well above <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x02113;</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">h</mi></mrow></mrow></msub></mrow></math> should receive a weight close to one, and a bin well below it a weight close to zero:</p>\n<div class=\"equation\" id=\"eq21\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>&#x02113;</mi><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mfrac><mrow><msub><mi>&#x02113;</mi><mrow><mrow><mi mathvariant=\"normal\">r</mi><mi mathvariant=\"normal\">a</mi><mi mathvariant=\"normal\">w</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow><mrow><msub><mi>&#x02113;</mi><mrow><mrow><mi mathvariant=\"normal\">r</mi><mi mathvariant=\"normal\">a</mi><mi mathvariant=\"normal\">w</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002B;</mo><msub><mi>&#x02113;</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">h</mi></mrow></mrow></msub></mrow></mfrac><mo>&#x0002C;</mo></mrow></math></div><span class=\"eqno\">(21)</span></div>\n<p>which changes smoothly between these limits and equals one half when <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x02113;</mi><mrow><mrow><mi mathvariant=\"normal\">r</mi><mi mathvariant=\"normal\">a</mi><mi mathvariant=\"normal\">w</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo>&#x0003D;</mo><msub><mi>&#x02113;</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">h</mi></mrow></mrow></msub></mrow></math>, that is, when the bin carries <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x02113;</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">h</mi></mrow></mrow></msub></mrow></math> times the peak command power. The leverage is relative to the peak bin, so <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>A</mi><mi>n</mi></msub></mrow></math> is still needed to reject a command that is weak at all frequencies. The third factor is the coherence <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msubsup><mi>&#x003B3;</mi><mi>n</mi><mrow><mn>2</mn></mrow></msubsup></mrow></math> from Equation <a href=\"#eq15\">(15)</a>, which multiplies the activity and the leverage to complete the weight</p>\n<div class=\"equation\" id=\"eq22\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><msub><mi>A</mi><mi>n</mi></msub><mspace width=\"0.167em\" /><msubsup><mi>&#x003B3;</mi><mi>n</mi><mrow><mn>2</mn></mrow></msubsup><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mspace width=\"0.167em\" /><msub><mi>&#x02113;</mi><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(22)</span></div>\n<p>This weight sets the share of direct identification in the per-frequency fusion of the three branches in Section 3.1.3.</p>\n<h2 id=\"s3\"><span class=\"secno\">3.1.2</span>Output-power inference branch</h2>\n<p>Where the command carries little energy, the identification weight <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> falls toward zero, and direct identification then provides little evidence of the margin. A degrading specimen can still reduce the margin of the outer controller loop at these frequencies, so a second source of evidence is needed. In this case, the output power still carries evidence, because the outer controller loop shapes every signal that enters it, including sensor noise. Wu and Wang [<a class=\"cite\" href=\"#ref-wu\">11</a>] used the active-power deviation and its rate of change to detect the positive-feedback mode of a virtual synchronous generator. The output-power inference branch is inspired by this approach and uses the change in output power as evidence of a reduced margin. To quantify this change at each frequency, the averaged output power is compared with its reference from the initial state:</p>\n<div class=\"equation\" id=\"eq23\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>q</mi><mrow><mrow><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">b</mi><mi mathvariant=\"normal\">s</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mfrac><mrow><msub><mover><mrow><mi>p</mi></mrow><mo stretchy=\"true\">&#x000AF;</mo></mover><mrow><mi>y</mi><mi>y</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow><mrow><msub><mi>p</mi><mrow><mi>y</mi><mi>y</mi><mo>&#x0002C;</mo><mn>0</mn></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></mfrac><mo>&#x0002C;</mo></mrow></math></div><span class=\"eqno\">(23)</span></div>\n<p>where <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>q</mi><mrow><mrow><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">b</mi><mi mathvariant=\"normal\">s</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> is the observed power ratio at window <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>n</mi></mrow></math>, which measures the change in output power at each frequency relative to the initial state. The averaged autospectrum of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi></mrow></math> is <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mover><mrow><mi>p</mi></mrow><mo stretchy=\"true\">&#x000AF;</mo></mover><mrow><mi>y</mi><mi>y</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> from Equation <a href=\"#eq12\">(12)</a>, and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>p</mi><mrow><mi>y</mi><mi>y</mi><mo>&#x0002C;</mo><mn>0</mn></mrow></msub></mrow></math> is the reference autospectrum of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi></mrow></math> recorded in the initial state.</p>\n<p>The output-power branch detects a change by comparing the present output power with a reference from the initial state. A single window of output power fluctuates strongly, so a reference taken from one window could bias every later comparison. The reference autospectrum is therefore the median of three raw autospectra recorded in the initial state. These autospectra are taken from the first three non-overlapping windows of the experiment, with <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi><mo>&#x0003D;</mo><mn>1</mn></mrow></math>:</p>\n<div class=\"equation\" id=\"eq24\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>p</mi><mrow><mi>y</mi><mi>y</mi><mo>&#x0002C;</mo><mn>0</mn></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mo>med</mo><mo stretchy=\"false\">&#x0007B;</mo><msub><mi>p</mi><mrow><mi>y</mi><mi>y</mi><mo>&#x0002C;</mo><msub><mi>n</mi><mn>1</mn></msub></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002C;</mo><mspace width=\"0.167em\" /><msub><mi>p</mi><mrow><mi>y</mi><mi>y</mi><mo>&#x0002C;</mo><msub><mi>n</mi><mn>2</mn></msub></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002C;</mo><mspace width=\"0.167em\" /><msub><mi>p</mi><mrow><mi>y</mi><mi>y</mi><mo>&#x0002C;</mo><msub><mi>n</mi><mn>3</mn></msub></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo stretchy=\"false\">&#x0007D;</mo><mo>&#x0002C;</mo></mrow></math></div><span class=\"eqno\">(24)</span></div>\n<p>where <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>n</mi><mn>1</mn></msub></mrow></math>, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>n</mi><mn>2</mn></msub></mrow></math> and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>n</mi><mn>3</mn></msub></mrow></math> are the corresponding updates, and the median discards one unusually loud or quiet window.</p>\n<p>According to the experimental verification presented in Section 2.3, the change due to specimen degradation can be represented by an amplification <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>g</mi></mrow></math> of the open-loop gain. Consequently, a candidate loop <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003BB;</mi><mi>n</mi></msub><mi>g</mi><msub><mi>L</mi><mn>0</mn></msub></mrow></math> with amplification <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>g</mi></mrow></math> predicts the power ratio relative to the initial state</p>\n<div class=\"equation\" id=\"eq25\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>q</mi><mrow><mrow><mi mathvariant=\"normal\">m</mi><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">d</mi><mi mathvariant=\"normal\">e</mi><mi mathvariant=\"normal\">l</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo>&#x0002C;</mo><mi>g</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><msup><mrow><mo stretchy=\"true\" fence=\"true\" form=\"prefix\">&#x0007C;</mo><mfrac><mrow><mn>1</mn><mo>&#x0002B;</mo><msub><mi>L</mi><mn>0</mn></msub><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow><mrow><mn>1</mn><mo>&#x0002B;</mo><msub><mi>&#x003BB;</mi><mi>n</mi></msub><mi>g</mi><mspace width=\"0.167em\" /><msub><mi>L</mi><mn>0</mn></msub><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></mfrac><mo stretchy=\"true\" fence=\"true\" form=\"postfix\">&#x0007C;</mo></mrow><mrow><mn>2</mn></mrow></msup><mo>&#x0002C;</mo></mrow></math></div><span class=\"eqno\">(25)</span></div>\n<p>where <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>q</mi><mrow><mrow><mi mathvariant=\"normal\">m</mi><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">d</mi><mi mathvariant=\"normal\">e</mi><mi mathvariant=\"normal\">l</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> is the predicted power ratio, and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>L</mi><mn>0</mn></msub><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mi>C</mi><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><msub><mi>H</mi><mn>0</mn></msub><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> is the loop of the prior identification of the initial state. The amplification is then selected as the value that minimizes the logarithmic difference between the observed and predicted ratios:</p>\n<div class=\"equation\" id=\"eq26\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><munder><mrow><mo>arg&#x2009;min</mo></mrow><mrow><mi>g</mi></mrow></munder><mspace width=\"0.278em\" /><mrow><mo stretchy=\"true\" fence=\"true\" form=\"prefix\">&#x0007C;</mo><mi>log</mi><msub><mi>q</mi><mrow><mrow><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">b</mi><mi mathvariant=\"normal\">s</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x02212;</mo><mi>log</mi><msub><mi>q</mi><mrow><mrow><mi mathvariant=\"normal\">m</mi><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">d</mi><mi mathvariant=\"normal\">e</mi><mi mathvariant=\"normal\">l</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo>&#x0002C;</mo><mi>g</mi><mo stretchy=\"false\">&#x00029;</mo><mo stretchy=\"true\" fence=\"true\" form=\"postfix\">&#x0007C;</mo></mrow><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(26)</span></div>\n<p>The amplification <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> is reliable only when the observed power ratio reflects a change in the loop. At weakly excited frequencies, however, the output consists mainly of sensor noise, and its averaged power scatters because it is estimated from few windows. The reference <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>p</mi><mrow><mi>y</mi><mi>y</mi><mo>&#x0002C;</mo><mn>0</mn></mrow></msub></mrow></math> is the median of only three windows, so it is equally uncertain at these frequencies. Consequently, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub></mrow></math> can exceed one for an unchanged specimen, and the margin of this branch would then fall without any degradation.</p>\n<p>Such a false amplification must be separated from a real one before it enters the margin estimate. Direct identification cannot resolve the loop at these frequencies, but it remains reliable at the excited frequencies of the same window. Degradation changes the plant, so it also increases the magnitude of the identified loop at the excited frequencies. Section 2.3 observed such an increase by a factor of about 2.4 in the damaged specimen. An unchanged specimen and a degraded one therefore leave different traces in the measurements. For an unchanged specimen, a large <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub></mrow></math> at an unexcited frequency appears without any increase of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mover><mrow><mi>L</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub></mrow></math> at the excited frequencies. For a degraded specimen, the output power and the identified loop increase together. The amplification inferred from output power is therefore trusted only to the extent that the identified loop confirms it.</p>\n<p>Confirmation requires a single measure of how much the identified loop exceeds the loop expected without degradation. This expected loop is <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003BB;</mi><mi>n</mi></msub><msub><mi>L</mi><mn>0</mn></msub></mrow></math>, the prior loop scaled by the current adaptive factor. Including <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003BB;</mi><mi>n</mi></msub></mrow></math> keeps a reduction of the adaptive factor from being mistaken for a change in the specimen. The loop-increase factor <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003C1;</mi><mi>n</mi></msub></mrow></math> is the real scale that best fits <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003BB;</mi><mi>n</mi></msub><msub><mi>L</mi><mn>0</mn></msub></mrow></math> to the identified loop <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mover><mrow><mi>L</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub></mrow></math> in the weighted least-squares sense:</p>\n<div class=\"equation\" id=\"eq27\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>&#x003C1;</mi><mi>n</mi></msub><mo>&#x0003D;</mo><munder><mrow><mo>arg&#x2009;min</mo></mrow><mrow><mi>&#x003C1;</mi><mo>&#x02208;</mo><mi>&#x0211D;</mi></mrow></munder><munder><mo>&#x02211;</mo><mrow><mi>&#x003C9;</mi><mo>&#x02208;</mo><mi>&#x003A9;</mi></mrow></munder><msubsup><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow><mrow><mn>2</mn></mrow></msubsup><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mspace width=\"0.167em\" /><mo minsize=\"1.2em\" maxsize=\"1.2em\">|</mo><msub><mover><mrow><mi>L</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x02212;</mo><mi>&#x003C1;</mi><mspace width=\"0.167em\" /><msub><mi>&#x003BB;</mi><mi>n</mi></msub><msub><mi>L</mi><mn>0</mn></msub><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><msup><mo minsize=\"1.2em\" maxsize=\"1.2em\">|</mo><mrow><mn>2</mn></mrow></msup><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(27)</span></div>\n<p>Each frequency is weighted by <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msubsup><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow><mrow><mn>2</mn></mrow></msubsup></mrow></math> from Equation <a href=\"#eq22\">(22)</a>, so the well-identified excited frequencies dominate the fit and the weakly excited ones contribute little. The fit uses the identified loop <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mover><mrow><mi>L</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub></mrow></math> from Equation <a href=\"#eq16\">(16)</a>, taken before the median smoothing of Equation <a href=\"#eq17\">(17)</a>. The scale is kept real, consistent with the real amplification <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>g</mi></mrow></math> in Equation <a href=\"#eq25\">(25)</a>. Setting the derivative of the sum with respect to <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003C1;</mi></mrow></math> to zero then gives the closed form</p>\n<div class=\"equation\" id=\"eq28\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>&#x003C1;</mi><mi>n</mi></msub><mo>&#x0003D;</mo><mfrac><mrow><mo>Re</mo><mo stretchy=\"false\">&#x0007B;</mo><msub><mo>&#x02211;</mo><mrow><mi>&#x003C9;</mi><mo>&#x02208;</mo><mi>&#x003A9;</mi></mrow></msub><msubsup><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow><mrow><mn>2</mn></mrow></msubsup><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mspace width=\"0.167em\" /><msub><mi>&#x003BB;</mi><mi>n</mi></msub><msubsup><mi>L</mi><mn>0</mn><mrow><mo>&#x0002A;</mo></mrow></msubsup><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mspace width=\"0.167em\" /><msub><mover><mrow><mi>L</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo stretchy=\"false\">&#x0007D;</mo></mrow><mrow><msub><mo>&#x02211;</mo><mrow><mi>&#x003C9;</mi><mo>&#x02208;</mo><mi>&#x003A9;</mi></mrow></msub><msubsup><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow><mrow><mn>2</mn></mrow></msubsup><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mspace width=\"0.167em\" /><mo stretchy=\"false\">&#x0007C;</mo><msub><mi>&#x003BB;</mi><mi>n</mi></msub><msub><mi>L</mi><mn>0</mn></msub><mo stretchy=\"false\">&#x00028;</mo><mi>j</mi><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><msup><mo stretchy=\"false\">&#x0007C;</mo><mrow><mn>2</mn></mrow></msup></mrow></mfrac><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(28)</span></div>\n<p>For an unchanged specimen, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mover><mrow><mi>L</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub></mrow></math> agrees with <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003BB;</mi><mi>n</mi></msub><msub><mi>L</mi><mn>0</mn></msub></mrow></math> at the excited frequencies and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003C1;</mi><mi>n</mi></msub><mo>&#x02248;</mo><mn>1</mn></mrow></math>. A degraded specimen instead raises the identified loop at these frequencies and drives <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003C1;</mi><mi>n</mi></msub></mrow></math> above one. The confirmation <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>c</mi><mi>n</mi></msub></mrow></math> converts this loop increase into the trust given to the amplification inferred from output power. It rises linearly with <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003C1;</mi><mi>n</mi></msub></mrow></math> and is clipped between a lower bound <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003F5;</mi></mrow></math> and one:</p>\n<div class=\"equation\" id=\"eq29\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>c</mi><mi>n</mi></msub><mo>&#x0003D;</mo><mfrac><mrow><msub><mi>&#x003C1;</mi><mi>n</mi></msub><mo>&#x02212;</mo><mn>1</mn></mrow><mrow><msub><mi>&#x003C1;</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">h</mi></mrow></mrow></msub><mo>&#x02212;</mo><mn>1</mn></mrow></mfrac><mo>&#x0002C;</mo><mspace width=\"2em\" /><msub><mi>c</mi><mi>n</mi></msub><mo>&#x02208;</mo><mo stretchy=\"false\">[</mo><mi>&#x003F5;</mi><mo>&#x0002C;</mo><mspace width=\"0.167em\" /><mn>1</mn><mo stretchy=\"false\">]</mo><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(29)</span></div>\n<p>Once <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003C1;</mi><mi>n</mi></msub></mrow></math> reaches the confirmation threshold <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003C1;</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">h</mi></mrow></mrow></msub></mrow></math>, the loop increase confirms the amplification fully and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>c</mi><mi>n</mi></msub><mo>&#x0003D;</mo><mn>1</mn></mrow></math>. The lower bound <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003F5;</mi><mo>&#x0003D;</mo><mn>0.1</mn></mrow></math> keeps some trust in this branch even when no loop increase is identified. It accounts for amplification that cannot be observed at any excited frequency, such as amplification from unmodeled dynamics or higher-mode effects. Because <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003C1;</mi><mi>n</mi></msub></mrow></math> is a single value at each update, the same confirmation applies at every frequency.</p>\n<p>The confirmation acts by pulling the inferred amplification toward one, which represents an unchanged loop, and gives the accepted amplification</p>\n<div class=\"equation\" id=\"eq30\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0007E;</mo></mover><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mn>1</mn><mo>&#x0002B;</mo><msub><mi>c</mi><mi>n</mi></msub><mo minsize=\"1.2em\" maxsize=\"1.2em\">(</mo><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x02212;</mo><mn>1</mn><mo minsize=\"1.2em\" maxsize=\"1.2em\">)</mo><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(30)</span></div>\n<p>With full confirmation, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0007E;</mo></mover><mi>n</mi></msub><mo>&#x0003D;</mo><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub></mrow></math>, and the amplification inferred from output power is accepted unchanged. For an unchanged specimen, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>c</mi><mi>n</mi></msub><mo>&#x0003D;</mo><mi>&#x003F5;</mi></mrow></math>, so a false value of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub><mo>&#x0003D;</mo><mn>2</mn></mrow></math> is accepted only as <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0007E;</mo></mover><mi>n</mi></msub><mo>&#x0003D;</mo><mn>1.1</mn></mrow></math>.</p>\n<p>The accepted amplification still carries the scatter of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>q</mi><mrow><mrow><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">b</mi><mi mathvariant=\"normal\">s</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> and therefore varies between updates. To reduce this scatter while following a degrading specimen, successive accepted amplifications are averaged recursively, as the spectra were in Equations (11)–(13). The average is formed on a logarithmic scale, consistent with the logarithmic difference in Equation <a href=\"#eq26\">(26)</a>:</p>\n<div class=\"equation\" id=\"eq31\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><mi>log</mi><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mrow><mi>&#x00073;</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mo stretchy=\"false\">&#x00028;</mo><mn>1</mn><mo>&#x02212;</mo><msub><mi>&#x003B7;</mi><mi>g</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mi>log</mi><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mrow><mi>&#x00073;</mi><mo>&#x0002C;</mo><mi>n</mi><mo>&#x02212;</mo><mn>1</mn></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002B;</mo><msub><mi>&#x003B7;</mi><mi>g</mi></msub><mi>log</mi><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0007E;</mo></mover><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(31)</span></div>\n<p>The smoothed amplification <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mrow><mi>&#x00073;</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> acts as the memory of this branch and holds a detected amplification while the specimen remains degraded. The averaging factor <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003B7;</mi><mi>g</mi></msub></mrow></math> sets how strongly each new accepted amplification updates this memory.</p>\n<p>The same memory, however, slows the release of an amplification that the observed output no longer supports. With Equation <a href=\"#eq31\">(31)</a> alone, each update moves the remembered value toward the newest one by only the fraction <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003B7;</mi><mi>g</mi></msub></mrow></math>. An outdated amplification would therefore keep the margin of this branch low after the loop has recovered, and the output power shows when this occurs. A median of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>q</mi><mrow><mrow><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">b</mi><mi mathvariant=\"normal\">s</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> over <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003A9;</mi></mrow></math> below one means that the output power has fallen below its initial reference at most frequencies. In that case, the remembered amplification is released by a recovery step in place of Equation <a href=\"#eq31\">(31)</a>:</p>\n<div class=\"equation\" id=\"eq32\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><mi>log</mi><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mrow><mi>&#x00073;</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><msub><mi>r</mi><mi>g</mi></msub><mspace width=\"0.167em\" /><mi>log</mi><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mrow><mi>&#x00073;</mi><mo>&#x0002C;</mo><mi>n</mi><mo>&#x02212;</mo><mn>1</mn></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(32)</span></div>\n<p>The recovery factor <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>r</mi><mi>g</mi></msub></mrow></math>, with <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mn>0</mn><mo>&#x0003C;</mo><msub><mi>r</mi><mi>g</mi></msub><mo>&#x0003C;</mo><mn>1</mn></mrow></math>, moves the smoothed amplification gradually toward one. The release stops once the median ratio returns to one, and Equation <a href=\"#eq31\">(31)</a> then resumes. As a result, the output power itself limits how far the amplification is released as the loop recovers.</p>\n<p>The smoothed amplification then scales the prior loop, and Equation <a href=\"#eq4\">(4)</a> gives the margin of the output-power branch:</p>\n<div class=\"equation\" id=\"eq33\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">p</mi><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">w</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo>&#x0003D;</mo><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">N</mi><mi mathvariant=\"normal\">C</mi><mi mathvariant=\"normal\">F</mi></mrow></mrow></msub><mo minsize=\"1.2em\" maxsize=\"1.2em\">(</mo><msub><mi>&#x003BB;</mi><mi>n</mi></msub><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mrow><mi>&#x00073;</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><msub><mi>L</mi><mn>0</mn></msub><mo minsize=\"1.2em\" maxsize=\"1.2em\">)</mo><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(33)</span></div>\n<p>For an unchanged specimen, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mrow><mi>&#x00073;</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> stays close to one and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">p</mi><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">w</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> stays close to the margin of the prior loop. A confirmed amplification instead lowers <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">p</mi><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">w</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> at the affected frequencies, including frequencies that direct identification cannot resolve.</p>\n<p>The confirmation also sets how much this margin counts in the fusion of Section 3.1.3. Direct identification takes the share <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math>, and the output-power branch receives the remaining share in proportion to the confirmation:</p>\n<div class=\"equation\" id=\"eq34\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">p</mi><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">w</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo>&#x0003D;</mo><mo stretchy=\"false\">&#x00028;</mo><mn>1</mn><mo>&#x02212;</mo><msub><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00029;</mo><mspace width=\"0.167em\" /><msub><mi>c</mi><mi>n</mi></msub><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(34)</span></div>\n<p>Consequently, a confirmed amplification dominates the frequencies that direct identification cannot resolve, whereas an unconfirmed one receives only the small weight <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003F5;</mi><mo stretchy=\"false\">&#x00028;</mo><mn>1</mn><mo>&#x02212;</mo><msub><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00029;</mo></mrow></math>. The rest of that share is left for the third branch, the prior identification of the initial state.</p>\n<h2 id=\"s4\"><span class=\"secno\">3.1.3</span>Per-frequency fusion and reported indicator</h2>\n<p>Sections 3.1.1 and 3.1.2 give two measured margins, and each is supported by evidence only under certain conditions. Direct identification needs an excited command, and output-power inference needs a loop increase that confirms the inferred amplification. At a bin where neither condition holds, a margin is still required, so the prior identification of the initial state supplies it. This third branch applies Equation <a href=\"#eq4\">(4)</a> to the initial loop scaled by the current adaptive factor:</p>\n<div class=\"equation\" id=\"eq35\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>b</mi><mrow><mn>0</mn><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo>&#x0003D;</mo><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">N</mi><mi mathvariant=\"normal\">C</mi><mi mathvariant=\"normal\">F</mi></mrow></mrow></msub><mo minsize=\"1.2em\" maxsize=\"1.2em\">(</mo><msub><mi>&#x003BB;</mi><mi>n</mi></msub><msub><mi>L</mi><mn>0</mn></msub><mo minsize=\"1.2em\" maxsize=\"1.2em\">)</mo><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(35)</span></div>\n<p>Because <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>L</mi><mn>0</mn></msub></mrow></math> is identified before the experiment, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mn>0</mn><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> is available at every bin and at every update. However, this margin assumes that the specimen has not changed since the prior identification, so it serves only as the default estimate.</p>\n<p>Each branch evaluates the chordal distance of Equation <a href=\"#eq1\">(1)</a> for its own loop at every bin, before the infimum of Equation <a href=\"#eq4\">(4)</a> is taken. These per-bin values, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">p</mi><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">w</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mn>0</mn><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>, form three margin curves over <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003A9;</mi></mrow></math>. The fusion combines the three curves bin by bin, and each weight should reflect the evidence available at that bin. The identification weight <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> first sets the share of direct identification, and the confirmation <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>c</mi><mi>n</mi></msub></mrow></math> then divides the remaining share <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mn>1</mn><mo>&#x02212;</mo><msub><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> between output-power inference and the prior. Output-power inference receives <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">p</mi><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">w</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> from Equation <a href=\"#eq34\">(34)</a>, and the prior receives the share that remains at each bin:</p>\n<div class=\"equation\" id=\"eq36\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>w</mi><mrow><mn>0</mn><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo>&#x0003D;</mo><mo stretchy=\"false\">&#x00028;</mo><mn>1</mn><mo>&#x02212;</mo><msub><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00029;</mo><mo stretchy=\"false\">&#x00028;</mo><mn>1</mn><mo>&#x02212;</mo><msub><mi>c</mi><mi>n</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(36)</span></div>\n<p>With this split, the three weights add up to one at every bin. The fused margin curve is therefore a weighted average of the three branch margins:</p>\n<div class=\"equation\" id=\"eq37\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>&#x003B2;</mi><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><msub><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mspace width=\"0.167em\" /><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002B;</mo><msub><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">p</mi><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">w</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mspace width=\"0.167em\" /><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">p</mi><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">w</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002B;</mo><msub><mi>w</mi><mrow><mn>0</mn><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mspace width=\"0.167em\" /><msub><mi>b</mi><mrow><mn>0</mn><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(37)</span></div>\n<p>Three limiting cases show how Equation <a href=\"#eq37\">(37)</a> moves between the branches as the evidence at a bin changes. At a well-excited bin with high coherence, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> approaches one, and the fused margin follows the identified margin. At an unexcited bin, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> approaches zero, and the confirmation then decides between the two remaining branches. A loop increase that reaches <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003C1;</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">h</mi></mrow></mrow></msub></mrow></math> gives <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>c</mi><mi>n</mi></msub><mo>&#x0003D;</mo><mn>1</mn></mrow></math>, so the fused margin follows the output-power margin. Without an identified loop increase, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>c</mi><mi>n</mi></msub></mrow></math> stays at its lower bound <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003F5;</mi></mrow></math>, so the prior carries most of the weight.</p>\n<p>The same weights also handle an idle command, which excites no bin, without any special treatment. The activity <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>A</mi><mi>n</mi></msub></mrow></math> from Equation <a href=\"#eq19\">(19)</a> is then zero, so <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>w</mi><mrow><mrow><mi mathvariant=\"normal\">i</mi><mi mathvariant=\"normal\">d</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo>&#x0003D;</mo><mn>0</mn></mrow></math> at every bin and no loop increase can be identified. The confirmation therefore falls to <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003F5;</mi></mrow></math>, and the fused margin returns mostly to the prior evaluated with the current adaptive factor. A remembered amplification in <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mover><mrow><mi>g</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mrow><mi>&#x00073;</mi><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> still lowers the fused margin, but only through the small weight <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003F5;</mi></mrow></math>.</p>\n<p>Fusing bin by bin, before any reduction over frequency, keeps each weight attached to the frequency where its evidence was obtained. Reducing each branch to its own minimum first would instead combine margins located at different frequencies, with weights taken from other frequencies. Because the adaptive controller needs a single value at each update, the fused curve is reduced to its minimum over <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003A9;</mi></mrow></math>, as in Equation <a href=\"#eq4\">(4)</a>:</p>\n<div class=\"equation\" id=\"eq38\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">O</mi><mi mathvariant=\"normal\">S</mi><mi mathvariant=\"normal\">I</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo>&#x0003D;</mo><msub><mo>min</mo><mrow><mi>&#x003C9;</mi><mo>&#x02208;</mo><mi>&#x003A9;</mi></mrow></msub><msub><mi>&#x003B2;</mi><mi>n</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003C9;</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(38)</span></div>\n<p>The NCF OSI margin <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">O</mi><mi mathvariant=\"normal\">S</mi><mi mathvariant=\"normal\">I</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub></mrow></math> is the only quantity that the adaptive law of Section 3.1.4 receives from the estimator. Figure 5 summarizes one complete update, from the measured signals to this margin and the adaptive factor that it sets.</p>\n<h2 id=\"s5\"><span class=\"secno\">3.1.4</span>Adaptive factor update</h2>\n<p>The NCF OSI margin indicates whether the outer controller loop keeps enough robustness, and the adaptive factor <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> provides the means to restore it. Section 2.3 showed that specimen degradation mainly amplifies the loop gain, and scaling the controller output by <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi><mo>&#x0003C;</mo><mn>1</mn></mrow></math> offsets this amplification in Equation <a href=\"#eq2\">(2)</a>. For example, a loop amplified by a factor <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>g</mi></mrow></math> regains its initial gain when <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi><mo>&#x0003D;</mo><mn>1</mn><mo>&#x0002F;</mo><mi>g</mi></mrow></math>. Full cancellation is not required, however, because the loop only needs to regain the target margin. Every reduction beyond the target margin weakens the corrective control action and compromises the tracking performance. The adaptive law therefore reduces <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> only as far as the margin requires, based on the margin error at update <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>n</mi></mrow></math>:</p>\n<div class=\"equation\" id=\"eq39\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>e</mi><mi>n</mi></msub><mo>&#x0003D;</mo><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">O</mi><mi mathvariant=\"normal\">S</mi><mi mathvariant=\"normal\">I</mi></mrow><mo>&#x0002C;</mo><mi>n</mi></mrow></msub><mo>&#x02212;</mo><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">a</mi><mi mathvariant=\"normal\">r</mi></mrow></mrow></msub><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(39)</span></div>\n<p>Here <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">a</mi><mi mathvariant=\"normal\">r</mi></mrow></mrow></msub></mrow></math> is the target NCF margin listed in Table 1, and a negative error indicates insufficient margin that calls for a smaller adaptive factor. Conversely, a positive error indicates spare margin, which allows <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> to recover toward one and restore tracking performance.</p>\n<p>Reducing and restoring the adaptive factor carry different risks, which depend on how quickly each change is made. A slow reduction leaves the loop exposed to instability for as long as the margin remains insufficient. Conversely, a fast recovery can raise <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> back toward instability before the margin estimate settles after a reduction. The adaptive factor is therefore reduced and restored at different rates, depending on the sign of the margin error:</p>\n<div class=\"equation\" id=\"eq40\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><msub><mi>&#x003BB;</mi><mrow><mi>n</mi><mo>&#x0002B;</mo><mn>1</mn></mrow></msub><mo>&#x0003D;</mo><mrow><mo stretchy=\"true\" fence=\"true\" form=\"prefix\">&#x0007B;</mo><mtable><mtr><mtd columnalign=\"left\"><msub><mi>&#x003BB;</mi><mi>n</mi></msub><mi>exp</mi><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003BA;</mi><msub><mi>e</mi><mi>n</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002C;</mo></mtd><mtd columnalign=\"left\"><msub><mi>e</mi><mi>n</mi></msub><mo>&#x0003C;</mo><mn>0</mn><mo>&#x0002C;</mo></mtd></mtr><mtr><mtd columnalign=\"left\"><msub><mi>&#x003BB;</mi><mi>n</mi></msub><mi>exp</mi><mo stretchy=\"false\">&#x00028;</mo><mi>&#x003BC;</mi><mi>&#x003BA;</mi><msub><mi>e</mi><mi>n</mi></msub><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002C;</mo></mtd><mtd columnalign=\"left\"><msub><mi>e</mi><mi>n</mi></msub><mo>&#x02265;</mo><mn>0</mn><mo>&#x0002C;</mo></mtd></mtr></mtable></mrow><mspace width=\"2em\" /><msub><mi>&#x003BB;</mi><mrow><mi>n</mi><mo>&#x0002B;</mo><mn>1</mn></mrow></msub><mo>&#x02208;</mo><mo stretchy=\"false\">[</mo><msub><mi>&#x003BB;</mi><mrow><mo>min</mo></mrow></msub><mo>&#x0002C;</mo><mn>1</mn><mo stretchy=\"false\">]</mo><mo>&#x0002E;</mo></mrow></math></div><span class=\"eqno\">(40)</span></div>\n<p>Here <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BA;</mi></mrow></math> is the adaptation gain, and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BC;</mi></mrow></math> is the ratio of the recovery rate to the reduction rate. Each update thus adds <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BA;</mi><msub><mi>e</mi><mi>n</mi></msub></mrow></math> to <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>log</mi><msub><mi>&#x003BB;</mi><mi>n</mi></msub></mrow></math>, or <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BC;</mi><mi>&#x003BA;</mi><msub><mi>e</mi><mi>n</mi></msub></mrow></math> when the margin is sufficient. The adaptive factor therefore keeps changing until the margin reaches the target or <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> reaches a bound. With the values in Table 1, a margin 0.1 below the target reduces <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> by about 6% per update. A margin 0.1 above the target raises <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> by only about 2%, so recovery is about three times slower than reduction. The adaptive factor stays between the smallest permitted value <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003BB;</mi><mrow><mo>min</mo></mrow></msub></mrow></math> and one, which corresponds to the full controller output.</p>\n<p>The updated factor <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003BB;</mi><mrow><mi>n</mi><mo>&#x0002B;</mo><mn>1</mn></mrow></msub></mrow></math> scales the controller output during the next update interval and also enters Equation <a href=\"#eq25\">(25)</a>, Equation <a href=\"#eq28\">(28)</a>, Equation <a href=\"#eq33\">(33)</a> and Equation <a href=\"#eq35\">(35)</a>. Consequently, the next margin estimate already accounts for the controller output reduced or restored at this update.</p>\n<figure id=\"fig2\"><svg role=\"img\" aria-labelledby=\"f2t f2d\" viewBox=\"0 0 1000 575\">\n<title id=\"f2t\">Structure of one estimator update</title>\n<desc id=\"f2d\">Windowed displacements u and y feed a windowed FFT that forms the averaged autospectra and cross spectrum. These spectra feed the direct identification and output-power branches. A third branch is the initial-state prior. The adaptive factor lambda, shown in green, feeds the output-power and initial-state prior branches. The three margin curves are fused per frequency bin with the weights w_id, w_pow and w_0, and the minimum of the fused curve over the analysis band gives b_OSI, which updates the adaptive factor lambda.</desc>\n<defs>\n<marker id=\"a2\" markerWidth=\"8\" markerHeight=\"8\" refX=\"9\" refY=\"5\" viewBox=\"0 0 10 10\" orient=\"auto-start-reverse\"><path d=\"M0 0 L10 5 L0 10 Z\" fill=\"#000\"/></marker>\n<marker id=\"a2l\" markerWidth=\"8\" markerHeight=\"8\" refX=\"9\" refY=\"5\" viewBox=\"0 0 10 10\" orient=\"auto-start-reverse\"><path d=\"M0 0 L10 5 L0 10 Z\" fill=\"#2A9A48\"/></marker>\n<marker id=\"a2y\" markerWidth=\"8\" markerHeight=\"8\" refX=\"9\" refY=\"5\" viewBox=\"0 0 10 10\" orient=\"auto-start-reverse\"><path d=\"M0 0 L10 5 L0 10 Z\" fill=\"#007CA8\"/></marker>\n</defs>\n<g fill=\"none\" stroke=\"#000\" stroke-width=\"1.5\">\n<rect x=\"40\" y=\"175\" width=\"190\" height=\"110\" rx=\"10\"/>\n<rect x=\"340\" y=\"30\" width=\"270\" height=\"110\" rx=\"10\"/>\n<rect x=\"340\" y=\"175\" width=\"270\" height=\"110\" rx=\"10\"/>\n<rect x=\"340\" y=\"320\" width=\"270\" height=\"110\" rx=\"10\"/>\n<rect x=\"700\" y=\"175\" width=\"180\" height=\"110\" rx=\"10\"/>\n<rect x=\"700\" y=\"320\" width=\"180\" height=\"110\" rx=\"10\"/>\n\n<path d=\"M2 211.7 H38\" marker-end=\"url(#a2)\"/>\n<path d=\"M230 230 H280 V85 H338\" marker-end=\"url(#a2)\"/>\n<path d=\"M280 211.7 H338\" marker-end=\"url(#a2)\"/>\n<path d=\"M610 85 H655 V202.5 H698\" marker-end=\"url(#a2)\"/>\n<path d=\"M610 230 H698\" marker-end=\"url(#a2)\"/>\n<path d=\"M610 375 H655 V257.5 H698\" marker-end=\"url(#a2)\"/>\n<path d=\"M790 285 V318\" marker-end=\"url(#a2)\"/>\n<path d=\"M880 375 H992\" marker-end=\"url(#a2)\"/>\n\n</g>\n<path d=\"M2 248.3 H38\" fill=\"none\" stroke=\"#007CA8\" stroke-width=\"1.5\" marker-end=\"url(#a2y)\"/>\n<g fill=\"none\" stroke=\"#2A9A48\" stroke-width=\"1.8\">\n<rect x=\"340\" y=\"465\" width=\"270\" height=\"100\" rx=\"10\" fill=\"#EAF7EE\"/>\n<path d=\"M940 375 V515 H612\" marker-end=\"url(#a2l)\"/>\n<path d=\"M340 515 H310 V248.3\"/>\n<path d=\"M310 248.3 H338\" marker-end=\"url(#a2l)\"/>\n<path d=\"M310 375 H338\" marker-end=\"url(#a2l)\"/>\n</g>\n<circle cx=\"280\" cy=\"211.7\" r=\"3.5\" fill=\"#000\"/><circle cx=\"940\" cy=\"375\" r=\"3.5\" fill=\"#000\"/>\n<circle cx=\"310\" cy=\"375\" r=\"3\" fill=\"#2A9A48\"/>\n<g text-anchor=\"middle\" dominant-baseline=\"central\" style=\"fill:#000\">\n<text x=\"14\" y=\"197\" class=\"it\" style=\"font-size:22px\">u</text>\n<text x=\"14\" y=\"234\" class=\"it\" style=\"font-size:22px;fill:#007CA8\">y</text>\n<text x=\"135\" y=\"203\" style=\"font-size:20px\">Windowed FFT</text>\n<text x=\"135\" y=\"231\" style=\"font-size:19px\"><tspan class=\"it\">p̄</tspan><tspan style=\"font-size:13px\" dy=\"5\">uu</tspan><tspan dy=\"-5\">, </tspan><tspan class=\"it\">p̄</tspan><tspan style=\"font-size:13px\" dy=\"5\">yy</tspan><tspan dy=\"-5\">, </tspan><tspan class=\"it\">p̄</tspan><tspan style=\"font-size:13px\" dy=\"5\">yu</tspan></text>\n<text x=\"135\" y=\"259\" style=\"font-size:15px;fill:#6b6b6b\">Equations (5)–(13)</text>\n<text x=\"475\" y=\"58\" style=\"font-size:20px\">Direct identification</text>\n<text x=\"475\" y=\"86\" style=\"font-size:19px\"><tspan class=\"it\">L̂</tspan><tspan style=\"font-size:13px\" dy=\"5\">s</tspan><tspan dy=\"-5\">, </tspan><tspan class=\"it\">w</tspan><tspan style=\"font-size:13px\" dy=\"5\">id</tspan><tspan dy=\"-5\"> → </tspan><tspan class=\"it\">b</tspan><tspan style=\"font-size:13px\" dy=\"5\">id</tspan><tspan dy=\"-5\">(ω)</tspan></text>\n<text x=\"475\" y=\"114\" style=\"font-size:15px;fill:#6b6b6b\">Equations (14)–(22)</text>\n<text x=\"475\" y=\"203\" style=\"font-size:20px\">Output-power inference</text>\n<text x=\"475\" y=\"231\" style=\"font-size:19px\"><tspan class=\"it\">q</tspan><tspan style=\"font-size:13px\" dy=\"5\">obs</tspan><tspan dy=\"-5\">, </tspan><tspan class=\"it\">ĝ</tspan><tspan style=\"font-size:13px\" dy=\"5\">s</tspan><tspan dy=\"-5\"> → </tspan><tspan class=\"it\">b</tspan><tspan style=\"font-size:13px\" dy=\"5\">pow</tspan><tspan dy=\"-5\">(ω)</tspan></text>\n<text x=\"475\" y=\"259\" style=\"font-size:15px;fill:#6b6b6b\">Equations (23)–(32)</text>\n<text x=\"475\" y=\"348\" style=\"font-size:20px\">Initial-state prior</text>\n<text x=\"475\" y=\"376\" style=\"font-size:19px\"><tspan class=\"it\">L</tspan><tspan style=\"font-size:13px\" dy=\"5\">0</tspan><tspan dy=\"-5\"> → </tspan><tspan class=\"it\">b</tspan><tspan style=\"font-size:13px\" dy=\"5\">0</tspan><tspan dy=\"-5\">(ω)</tspan></text>\n<text x=\"475\" y=\"404\" style=\"font-size:15px;fill:#6b6b6b\">Equation (35)</text>\n<text x=\"790\" y=\"203\" style=\"font-size:20px\">Per-bin fusion</text>\n<text x=\"790\" y=\"231\" style=\"font-size:19px\" class=\"it\">β(ω)</text>\n<text x=\"790\" y=\"259\" style=\"font-size:15px;fill:#6b6b6b\">Equations (36)–(37)</text>\n<text x=\"790\" y=\"348\" style=\"font-size:20px\">Minimum over Ω</text>\n<text x=\"790\" y=\"376\" style=\"font-size:19px\"><tspan class=\"it\">b</tspan><tspan style=\"font-size:13px\" dy=\"5\">OSI</tspan></text>\n<text x=\"790\" y=\"404\" style=\"font-size:15px;fill:#6b6b6b\">Equation (38)</text>\n<text x=\"475\" y=\"487\" style=\"font-size:20px\">Adaptive factor</text>\n<text x=\"475\" y=\"515\" class=\"it\" style=\"font-size:19px\">λ</text>\n<text x=\"475\" y=\"543\" style=\"font-size:15px;fill:#6b6b6b\">Equation (40)</text>\n<text x=\"634\" y=\"70\" class=\"it\" style=\"font-size:18px\">w<tspan style=\"font-size:12px;font-style:normal\" dy=\"5\">id</tspan></text>\n<text x=\"640\" y=\"215\" class=\"it\" style=\"font-size:18px\">w<tspan style=\"font-size:12px;font-style:normal\" dy=\"5\">pow</tspan></text>\n<text x=\"634\" y=\"360\" class=\"it\" style=\"font-size:18px\">w<tspan style=\"font-size:12px;font-style:normal\" dy=\"5\">0</tspan></text>\n<text x=\"960\" y=\"358\" class=\"it\" style=\"font-size:18px\">b<tspan style=\"font-size:12px;font-style:normal\" dy=\"5\">OSI</tspan></text>\n\n</g></svg>\n<figcaption><b>Figure 5.</b> Flowchart of one NCF OSI update. The reference <i>u</i> and the measured displacement <i>y</i> provide the spectra for direct identification and output-power inference. The two measured margin curves are fused bin by bin with the prior identification of the initial state. The minimum of the fused curve, <i>b</i><sub>OSI</sub>, then updates the adaptive factor <i>λ</i>.</figcaption></figure>\n<h2 id=\"s32\"><span class=\"secno\">3.2</span>Calibration</h2>\n<p>The equations of Section 3.1 fix the structure of the estimator and the adaptive law, but they leave several numerical values open. These values include the averaging factors, the evidence thresholds and the rates of the adaptive law. Each value balances two competing needs, as the spectral averaging factor <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003B7;</mi><mi>s</mi></msub></mrow></math> of Section 3.1.1 illustrates. A larger <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003B7;</mi><mi>s</mi></msub></mrow></math> lets the spectra follow a degrading specimen sooner, but it also leaves more scatter between updates. Calibration selects these values so that the indicator follows the true margin and the adaptive factor holds the loop near the target margin.</p>\n<p>Table 1 lists the 14 parameters of the framework with their values and roles, and six of them are design values. These design values follow from the test setup and the analysis, so they are set directly rather than calibrated. The window duration <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>T</mi><mi>w</mi></msub></mrow></math> of 0.5 s gives a frequency resolution of 2 Hz, which also sets the lower bound of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003A9;</mi></mrow></math>. The upper bound of 80 Hz matches the band over which the plants were identified in Section 2.3. The update interval <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x00394;</mi><mi>t</mi></mrow></math> of 0.125 s sets how often the indicator and the adaptive factor are updated. The target <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">a</mi><mi mathvariant=\"normal\">r</mi></mrow></mrow></msub><mo>&#x0003D;</mo><mn>0.4</mn></mrow></math> follows the guideline proposed by Gomaa et al. [<a class=\"cite\" href=\"#ref-gomaa\">1</a>], and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003BB;</mi><mrow><mo>min</mo></mrow></msub><mo>&#x0003D;</mo><mn>0.2</mn></mrow></math> keeps part of the controller output active. Finally, the minimum confirmation <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003F5;</mi><mo>&#x0003D;</mo><mn>0.1</mn></mrow></math> is the safety minimum introduced in Section 3.1.2 for amplification that cannot be confirmed.</p>\n<p>The remaining eight parameters are hyperparameters, which are marked as calibrated in Table 1 and are tuned in this section. They set how quickly the indicator follows a change, how much evidence each branch requires and how strongly the adaptive factor responds. Their suitable values depend on the laboratory, the equipment, the specimen and its material, which differ between experiments. They therefore cannot be fixed from theory alone and must be calibrated against cases in which the true margin is known.</p>\n<figure class=\"table\" id=\"tab1\"><figcaption><b>Table 1.</b> Estimator parameters. Smoothing coefficients follow <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003B7;</mi><mo>&#x0003D;</mo><mn>1</mn><mo>&#x02212;</mo><mi>exp</mi><mo stretchy=\"false\">&#x00028;</mo><mo>&#x02212;</mo><mi>&#x00394;</mi><mi>t</mi><mo>&#x0002F;</mo><mi>&#x003C4;</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> from the listed time constant.</figcaption><table><thead><tr><th>Symbol</th><th>Value</th><th><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003C4;</mi></mrow></math></th><th>Type</th><th>Role</th></tr></thead><tbody><tr><td><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x00394;</mi><mi>t</mi></mrow></math></td><td>0.125 s</td><td>—</td><td>Design</td><td>Update interval</td></tr><tr><td><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>T</mi><mi>w</mi></msub></mrow></math>, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>N</mi></mrow></math></td><td>0.5 s, 1024</td><td>—</td><td>Design</td><td>Window length at <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>f</mi><mi>s</mi></msub><mo>&#x0003D;</mo><mn>2048</mn></mrow></math> Hz</td></tr><tr><td><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003A9;</mi></mrow></math></td><td>2–80 Hz, 37 bins</td><td>—</td><td>Design</td><td>Analysis set, 58–62 Hz rejected</td></tr><tr><td><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003B7;</mi><mi>s</mi></msub></mrow></math></td><td>0.39</td><td>0.25 s</td><td>Calibrated</td><td>Spectral averaging, Equations (11)–(13)</td></tr><tr><td><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003B7;</mi><mi>A</mi></msub></mrow></math></td><td>4.54</td><td>—</td><td>Calibrated</td><td>Activity threshold relative to command noise, Equation <a href=\"#eq19\">(19)</a></td></tr><tr><td><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x02113;</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">h</mi></mrow></mrow></msub></mrow></math></td><td><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msup><mn>10</mn><mrow><mo>&#x02212;</mo><mn>3</mn></mrow></msup></mrow></math></td><td>—</td><td>Calibrated</td><td>Input-leverage threshold, Equation <a href=\"#eq21\">(21)</a></td></tr><tr><td><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003F5;</mi></mrow></math></td><td>0.1</td><td>—</td><td>Design</td><td>Minimum confirmation, Equation (29)</td></tr><tr><td><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003C1;</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">h</mi></mrow></mrow></msub></mrow></math></td><td>1.5</td><td>—</td><td>Calibrated</td><td>Confirmation threshold, Equation (29)</td></tr><tr><td><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003B7;</mi><mi>g</mi></msub></mrow></math></td><td>0.12</td><td>1.0 s</td><td>Calibrated</td><td>Output-power memory, accumulation, Equation <a href=\"#eq31\">(31)</a></td></tr><tr><td><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>r</mi><mi>g</mi></msub></mrow></math></td><td>0.73</td><td>0.4 s</td><td>Calibrated</td><td>Recovery factor per update, Equation <a href=\"#eq32\">(32)</a></td></tr><tr><td><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">a</mi><mi mathvariant=\"normal\">r</mi></mrow></mrow></msub></mrow></math></td><td>0.40</td><td>—</td><td>Design</td><td>Target NCF margin, Equation (39)</td></tr><tr><td><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BA;</mi></mrow></math></td><td>0.625</td><td>—</td><td>Calibrated</td><td>Adaptation gain per update, Equation (40)</td></tr><tr><td><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BC;</mi></mrow></math></td><td>0.32</td><td>—</td><td>Calibrated</td><td>Ratio of the recovery rate to the reduction rate of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math></td></tr><tr><td><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003BB;</mi><mrow><mo>min</mo></mrow></msub></mrow></math></td><td>0.20</td><td>—</td><td>Design</td><td>Smallest adaptive factor, Equation (40)</td></tr></tbody></table></figure>\n<p>A known margin requires a plant that is known at every instant, including while the specimen degrades. The two plants <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>H</mi><mn>0</mn></msub></mrow></math> and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>H</mi><mi>d</mi></msub></mrow></math> identified in Section 2.3 meet this requirement for the column specimen of this study. To impose damage numerically, both plants receive the same command <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>v</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>, and their outputs are mixed:</p>\n<div class=\"equation\" id=\"eq41\"><div class=\"expression\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mrow><mi>y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0003D;</mo><mo minsize=\"1.2em\" maxsize=\"1.2em\">[</mo><mn>1</mn><mo>&#x02212;</mo><mi>&#x003B4;</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo><mo minsize=\"1.2em\" maxsize=\"1.2em\">]</mo><mspace width=\"0.167em\" /><msub><mi>y</mi><mn>0</mn></msub><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002B;</mo><mi>&#x003B4;</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo><mspace width=\"0.167em\" /><msub><mi>y</mi><mi>d</mi></msub><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x0002C;</mo></mrow></math></div><span class=\"eqno\">(41)</span></div>\n<p>where <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>y</mi><mn>0</mn></msub></mrow></math> and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>y</mi><mi>d</mi></msub></mrow></math> are the outputs of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>H</mi><mn>0</mn></msub></mrow></math> and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>H</mi><mi>d</mi></msub></mrow></math>, and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003B4;</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo><mo>&#x02208;</mo><mo stretchy=\"false\">[</mo><mn>0</mn><mo>&#x0002C;</mo><mn>1</mn><mo stretchy=\"false\">]</mo></mrow></math> is the damage index. Thus <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003B4;</mi><mo>&#x0003D;</mo><mn>0</mn></mrow></math> represents the initial state, and <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003B4;</mi><mo>&#x0003D;</mo><mn>1</mn></mrow></math> represents the damaged state identified in Section 2.3. While <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003B4;</mi></mrow></math> is constant, superposition makes this mixture equivalent to the single linear plant <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mo stretchy=\"false\">&#x00028;</mo><mn>1</mn><mo>&#x02212;</mo><mi>&#x003B4;</mi><mo stretchy=\"false\">&#x00029;</mo><msub><mi>H</mi><mn>0</mn></msub><mo>&#x0002B;</mo><mi>&#x003B4;</mi><msub><mi>H</mi><mi>d</mi></msub></mrow></math> driven by <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>v</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>. The true margin at each update therefore follows from Equation <a href=\"#eq4\">(4)</a> applied to the loop <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi><mi>C</mi><mo minsize=\"1.2em\" maxsize=\"1.2em\">[</mo><mo stretchy=\"false\">&#x00028;</mo><mn>1</mn><mo>&#x02212;</mo><mi>&#x003B4;</mi><mo stretchy=\"false\">&#x00029;</mo><msub><mi>H</mi><mn>0</mn></msub><mo>&#x0002B;</mo><mi>&#x003B4;</mi><msub><mi>H</mi><mi>d</mi></msub><mo minsize=\"1.2em\" maxsize=\"1.2em\">]</mo></mrow></math>. This true margin is computed independently of the estimator, so it serves as the benchmark for judging <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">O</mi><mi mathvariant=\"normal\">S</mi><mi mathvariant=\"normal\">I</mi></mrow></mrow></msub></mrow></math>. The mixture interpolates the responses of the two states and does not represent an intermediate stiffness.</p>\n<p>The calibration cases are built from three features, and each feature targets one part of the framework. The first feature is the damage history, which tests how quickly the indicator follows a change over a case duration of 120 s. Sudden damage steps <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003B4;</mi></mrow></math> from zero to one at 40 s and back to zero at 80 s. Gradual damage ramps <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003B4;</mi></mrow></math> up between 20 and 50 s and back down between 70 and 100 s. A damaged specimen does not regain its stiffness, but the return to <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003B4;</mi><mo>&#x0003D;</mo><mn>0</mn></mrow></math> reproduces a loop that regains its margin. This return therefore tests the recovery step of Section 3.1.2, which releases the remembered amplification.</p>\n<p>The second feature is the excitation band of the reference <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>u</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>, which determines which branch can observe the change. In both bands, the reference is band-limited white noise with an RMS of 0.15 mm. Sensor noise with a standard deviation of 0.05 mm is added to the measured displacement in every case. Wideband excitation covers 2 to 80 Hz and therefore excites the frequencies of the minimum margin, between 35 and 39 Hz in Section 2.3. The wideband cases therefore test direct identification, and they set its spectral averaging <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003B7;</mi><mi>s</mi></msub></mrow></math>, activity threshold <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003B7;</mi><mi>A</mi></msub></mrow></math> and leverage threshold <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x02113;</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">h</mi></mrow></mrow></msub></mrow></math>. Narrowband excitation covers only 2 to 10 Hz, so direct identification cannot observe the change near the minimum margin. Only output-power inference can then detect the reduced margin, and the narrowband cases set its hyperparameters. Their damage onset sets the confirmation threshold <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003C1;</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">h</mi></mrow></mrow></msub></mrow></math> and the averaging factor <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>&#x003B7;</mi><mi>g</mi></msub></mrow></math>, and their return sets the recovery factor <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>r</mi><mi>g</mi></msub></mrow></math>.</p>\n<p>The third feature is the adaptive factor, which is either fixed at one or active during the case. With <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> fixed, the cases test whether the indicator alone estimates the margin correctly as the damage changes. With <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> active, the same cases test whether the loop is held near the target while tracking is retained. These active cases set the adaptation gain <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BA;</mi></mrow></math> and the ratio <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BC;</mi></mrow></math> of the recovery rate to the reduction rate. The fixed and active versions of each case use the same reference and sensor-noise records, so their differences come from <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> alone. Table 2 lists the resulting eight cases, which cover every combination of the three features.</p>\n<figure class=\"table\" id=\"tab_cases\"><figcaption><b>Table 2.</b> Calibration cases.</figcaption><table><thead><tr><th>Case</th><th>Damage history</th><th>Excitation</th><th>Adaptive factor</th></tr></thead><tbody><tr><td>1</td><td>Sudden</td><td>Wideband, 2–80 Hz</td><td>Fixed, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi><mo>&#x0003D;</mo><mn>1</mn></mrow></math></td></tr><tr><td>2</td><td>Gradual</td><td>Wideband, 2–80 Hz</td><td>Fixed, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi><mo>&#x0003D;</mo><mn>1</mn></mrow></math></td></tr><tr><td>3</td><td>Sudden</td><td>Narrowband, 2–10 Hz</td><td>Fixed, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi><mo>&#x0003D;</mo><mn>1</mn></mrow></math></td></tr><tr><td>4</td><td>Gradual</td><td>Narrowband, 2–10 Hz</td><td>Fixed, <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi><mo>&#x0003D;</mo><mn>1</mn></mrow></math></td></tr><tr><td>5</td><td>Sudden</td><td>Wideband, 2–80 Hz</td><td>Active</td></tr><tr><td>6</td><td>Gradual</td><td>Wideband, 2–80 Hz</td><td>Active</td></tr><tr><td>7</td><td>Sudden</td><td>Narrowband, 2–10 Hz</td><td>Active</td></tr><tr><td>8</td><td>Gradual</td><td>Narrowband, 2–10 Hz</td><td>Active</td></tr></tbody></table></figure>\n<p>Figures 6 and 7 show the cases with <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> fixed and active, respectively, and each column shows one case in three panels. The first panel shows the command <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>v</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math> and the measured displacement <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>y</mi><mo stretchy=\"false\">&#x00028;</mo><mi>t</mi><mo stretchy=\"false\">&#x00029;</mo></mrow></math>, and the second shows the damage index <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003B4;</mi></mrow></math>. The third panel compares the estimated <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">O</mi><mi mathvariant=\"normal\">S</mi><mi mathvariant=\"normal\">I</mi></mrow></mrow></msub></mrow></math> with the true margin and the target <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">a</mi><mi mathvariant=\"normal\">r</mi></mrow></mrow></msub></mrow></math>, and it also shows <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> in the adaptive cases.</p>\n<figure id=\"fig_cal_fixed\"><img src=\"figures/fig_calibration_fixed.png\" alt=\"Calibration cases 1 to 4 with the adaptive factor fixed\" style=\"width:100%;max-width:100%;display:block;margin:0 auto;background:#fff\"/><figcaption><b>Figure 6.</b> Calibration cases 1–4 with the adaptive factor fixed at one.</figcaption></figure>\n<figure id=\"fig_cal_adapt\"><img src=\"figures/fig_calibration_adaptive.png\" alt=\"Calibration cases 5 to 8 with the adaptive factor active\" style=\"width:100%;max-width:100%;display:block;margin:0 auto;background:#fff\"/><figcaption><b>Figure 7.</b> Calibration cases 5–8 with the adaptive factor active.</figcaption></figure>\n<p>Four metrics in Table 3 summarize each case, and they are evaluated after the first 5 s of the record. The estimation error is the mean of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mo stretchy=\"false\">&#x0007C;</mo><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">O</mi><mi mathvariant=\"normal\">S</mi><mi mathvariant=\"normal\">I</mi></mrow></mrow></msub><mo>&#x02212;</mo><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">N</mi><mi mathvariant=\"normal\">C</mi><mi mathvariant=\"normal\">F</mi></mrow></mrow></msub><mo stretchy=\"false\">&#x0007C;</mo></mrow></math>, which measures how closely the indicator follows the true margin. The roughness is the median absolute second difference of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">O</mi><mi mathvariant=\"normal\">S</mi><mi mathvariant=\"normal\">I</mi></mrow></mrow></msub></mrow></math>, multiplied by 1000, so steady changes are not penalized. The travel is the total variation of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math>, which measures how much the controller output is adjusted. The unsafe time is the percentage of time with <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">N</mi><mi mathvariant=\"normal\">C</mi><mi mathvariant=\"normal\">F</mi></mrow></mrow></msub><mo>&#x0003C;</mo><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">a</mi><mi mathvariant=\"normal\">r</mi></mrow></mrow></msub><mo>&#x02212;</mo><mn>0.02</mn></mrow></math>, during which the true margin lies clearly below the target.</p>\n<figure class=\"table\" id=\"tab_metrics\"><figcaption><b>Table 3.</b> Calibration metrics with <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">t</mi><mi mathvariant=\"normal\">a</mi><mi mathvariant=\"normal\">r</mi></mrow></mrow></msub><mo>&#x0003D;</mo><mn>0.4</mn></mrow></math>.</figcaption><table><thead><tr><th>Case</th><th>Estimation error</th><th>Roughness</th><th>Travel of <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math></th><th>Unsafe time (%)</th></tr></thead><tbody><tr><td>1</td><td>0.014</td><td>10.5</td><td>—</td><td>34.8</td></tr><tr><td>2</td><td>0.014</td><td>11.8</td><td>—</td><td>25.1</td></tr><tr><td>3</td><td>0.017</td><td>0.010</td><td>—</td><td>34.8</td></tr><tr><td>4</td><td>0.032</td><td>0.52</td><td>—</td><td>25.1</td></tr><tr><td>5</td><td>0.014</td><td>10.1</td><td>1.44</td><td>1.5</td></tr><tr><td>6</td><td>0.015</td><td>11.1</td><td>1.38</td><td>0.0</td></tr><tr><td>7</td><td>0.022</td><td>0.023</td><td>2.44</td><td>3.6</td></tr><tr><td>8</td><td>0.037</td><td>0.53</td><td>2.64</td><td>1.0</td></tr></tbody></table></figure>\n<p>With <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> fixed, the estimation error stays at or below 0.032, so the indicator follows the true margin in both bands. The unsafe time of 34.8% or 25.1% then measures how long the damage holds the true margin below the target, because <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> stays at one. Activating <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> with the same signals reduces the unsafe time to at most 3.6%, and the estimation error stays at or below 0.037. The narrowband cases adjust <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi></mrow></math> more, with a travel of 2.44 and 2.64 against 1.44 and 1.38 in the wideband cases.</p>\n<h1 id=\"appA\"><span class=\"secno\"></span>Appendix A. Assumptions and limitations</h1>\n<p>The estimator and its calibration rely on the following assumptions, and each one limits how the reported indicator should be interpreted.</p>\n<ol class=\"assumptions\"><li>The identification branch assumes that the output disturbance is uncorrelated with the reference <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>u</mi></mrow></math>, as the <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>H</mi><mn>1</mn></msub></mrow></math> estimator requires. Feedback through the numerical substructure returns part of this disturbance to <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>u</mi></mrow></math> through the measured force <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>f</mi><mi>m</mi></msub></mrow></math>, which can bias <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mover><mrow><mi>T</mi></mrow><mo stretchy=\"false\">&#x0005E;</mo></mover><mi>n</mi></msub></mrow></math> even at high coherence.</li><li>The output-power branch assumes that the disturbance spectrum remains as it was during the reference period formed by the first three windows. It also assumes that the loop during this period is the initial loop at full controller output, with <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003BB;</mi><mo>&#x0003D;</mo><mn>1</mn></mrow></math>. A change in disturbance intensity or in the command-driven response can therefore alter <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>q</mi><mrow><mrow><mi mathvariant=\"normal\">o</mi><mi mathvariant=\"normal\">b</mi><mi mathvariant=\"normal\">s</mi></mrow></mrow></msub></mrow></math> without any change in stability.</li><li>The amplification <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>g</mi></mrow></math> is real, so the output-power branch captures changes in loop magnitude but not in loop phase.</li><li>Frequencies outside <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>&#x003A9;</mi></mrow></math> are not evaluated, so <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">O</mi><mi mathvariant=\"normal\">S</mi><mi mathvariant=\"normal\">I</mi></mrow></mrow></msub></mrow></math> is not a guaranteed lower bound on the full-frequency margin <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><msub><mi>b</mi><mrow><mrow><mi mathvariant=\"normal\">N</mi><mi mathvariant=\"normal\">C</mi><mi mathvariant=\"normal\">F</mi></mrow></mrow></msub></mrow></math>.</li><li>The calibration cases use the two identified linear plants and their output mixture, which do not include nonlinear specimen behavior. The calibrated values can therefore require adjustment when the framework is applied to another specimen or laboratory.</li></ol>\n<section class=\"references\" aria-labelledby=\"refs\"><h2 id=\"refs\">References</h2><ol>\n<li id=\"ref-gomaa\">Gomaa, M., Patino, E. D., Villamizar, J. N., Condori Uribe, J. W., and Dyke, S. J. (in press), “<a href=\"https://scholar.google.com/scholar?q=An+online+stability+indicator+for+real-time+hybrid+simulation+emphasizing+physical+substructure+degradation\" target=\"_blank\" rel=\"noopener\">An online stability indicator for real-time hybrid simulation emphasizing physical substructure degradation</a>,” author manuscript.</li>\n<li id=\"ref-maghareh\">Maghareh, A., Fu, Y., Montoya, H., Condori, J., Wang, Z., Dyke, S. J., and Montoya, A. (2020), “<a href=\"https://scholar.google.com/scholar?q=A+reflective+framework+for+performance+management+%28REFORM%29+of+real-time+hybrid+simulation\" target=\"_blank\" rel=\"noopener\">A reflective framework for performance management (REFORM) of real-time hybrid simulation</a>,” <i>Frontiers in Built Environment</i>, 6, 568742. DOI: 10.3389/fbuil.2020.568742</li>\n<li id=\"ref-vinnicombe\">Vinnicombe, G. (1993), “<a href=\"https://scholar.google.com/scholar?q=Frequency+domain+uncertainty+and+the+graph+topology\" target=\"_blank\" rel=\"noopener\">Frequency domain uncertainty and the graph topology</a>,” <i>IEEE Transactions on Automatic Control</i>, 38(9), 1371–1383. DOI: 10.1109/9.237648</li>\n<li id=\"ref-bendat\">Bendat, J. S., and Piersol, A. G. (2010), <i><a href=\"https://scholar.google.com/scholar?q=Random+Data%3A+Analysis+and+Measurement+Procedures\" target=\"_blank\" rel=\"noopener\">Random Data: Analysis and Measurement Procedures</a></i>, 4th ed., Wiley, Hoboken, NJ.</li>\n<li id=\"ref-dyke\">Dyke, S. J., Spencer, B. F., Quast, P., and Sain, M. K. (1995), “<a href=\"https://scholar.google.com/scholar?q=Role+of+control-structure+interaction+in+protective+system+design\" target=\"_blank\" rel=\"noopener\">Role of control-structure interaction in protective system design</a>,” <i>Journal of Engineering Mechanics</i>, 121(2), 322–338. DOI: 10.1061/(ASCE)0733-9399(1995)121:2(322)</li>\n<li id=\"ref-glover\">Glover, K., and McFarlane, D. (1989), “<a href=\"https://scholar.google.com/scholar?q=Robust+stabilization+of+normalized+coprime+factor+plant+descriptions+with+H%E2%88%9E-bounded+uncertainty\" target=\"_blank\" rel=\"noopener\">Robust stabilization of normalized coprime factor plant descriptions with H<sub>∞</sub>-bounded uncertainty</a>,” <i>IEEE Transactions on Automatic Control</i>, 34(8), 821–830. DOI: 10.1109/9.29424</li>\n<li id=\"ref-blackman\">Blackman, R. B., and Tukey, J. W. (1958), “<a href=\"https://scholar.google.com/scholar?q=The+measurement+of+power+spectra+from+the+point+of+view+of+communications+engineering+%E2%80%94+Part+I\" target=\"_blank\" rel=\"noopener\">The measurement of power spectra from the point of view of communications engineering — Part I</a>,” <i>The Bell System Technical Journal</i>, 37(1), 185–282. DOI: 10.1002/j.1538-7305.1958.tb03874.x</li>\n<li id=\"ref-welch\">Welch, P. D. (1967), “<a href=\"https://scholar.google.com/scholar?q=The+use+of+fast+Fourier+transform+for+the+estimation+of+power+spectra%3A+A+method+based+on+time+averaging+over+short%2C+modified+periodograms\" target=\"_blank\" rel=\"noopener\">The use of fast Fourier transform for the estimation of power spectra: A method based on time averaging over short, modified periodograms</a>,” <i>IEEE Transactions on Audio and Electroacoustics</i>, 15(2), 70–73. DOI: 10.1109/TAU.1967.1161901</li>\n<li id=\"ref-roberts\">Roberts, S. W. (1959), “<a href=\"https://scholar.google.com/scholar?q=Control+chart+tests+based+on+geometric+moving+averages\" target=\"_blank\" rel=\"noopener\">Control chart tests based on geometric moving averages</a>,” <i>Technometrics</i>, 1(3), 239–250. DOI: 10.1080/00401706.1959.10489860</li>\n<li id=\"ref-dimatteo\">Di Matteo, S., Viall, N. M., and Kepko, L. (2021), “<a href=\"https://scholar.google.com/scholar?q=Power+spectral+density+background+estimate+and+signal+detection+via+the+multitaper+method\" target=\"_blank\" rel=\"noopener\">Power spectral density background estimate and signal detection via the multitaper method</a>,” <i>Journal of Geophysical Research: Space Physics</i>, 126(2), e2020JA028748. DOI: 10.1029/2020JA028748</li>\n<li id=\"ref-wu\">Wu, H., and Wang, X. (2020), “<a href=\"https://scholar.google.com/scholar?q=A+mode-adaptive+power-angle+control+method+for+transient+stability+enhancement+of+virtual+synchronous+generators\" target=\"_blank\" rel=\"noopener\">A mode-adaptive power-angle control method for transient stability enhancement of virtual synchronous generators</a>,” <i>IEEE Journal of Emerging and Selected Topics in Power Electronics</i>, 8(2), 1034–1049. DOI: 10.1109/JESTPE.2020.2976791</li>\n</ol></section>\n"}