Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

modalfit

Los parámetros modales de las funciones de frecuencia-respuesta

Descripción

ejemplo

fn = modalfit(frf,f,fs,mnum) estima las frecuencias naturales de los modos de un sistema con funciones de respuesta de frecuencia medidas definidas en las frecuencias y para una frecuencia de muestreo.mnumfrfffs

ejemplo

fn = modalfit(frf,f,fs,mnum,Name,Value) especifica opciones adicionales mediante argumentos de par nombre-valor.

ejemplo

[fn,dr,ms] = modalfit(___) también devuelve las proporciones de amortiguación y los vectores de forma de modo correspondientes a cada frecuencia natural, utilizando cualquier combinación de entradas de sintaxis anteriores.fn

ejemplo

[fn,dr,ms,ofrf] = modalfit(___) también devuelve una matriz de funciones de respuesta de frecuencia reconstruida basada en los parámetros modales estimados.

[___] = modalfit(sys,f,mnum,Name,Value) estima los parámetros modales del modelo identificado.sys Utilice comandos de estimación como o para crear a partir de una función de respuesta de frecuencia medida o de señales de entrada y salida de dominio de tiempo.ssesttfestsys Esta sintaxis permite el uso de los argumentos de par nombre-valor.'DriveIndex''FreqRange''PhysFreq' Normalmente requiere menos datos que las sintaxis que utilizan métodos no paramétricos. Debe tener una licencia para usar esta sintaxis.System Identification Toolbox™

Ejemplos

contraer todo

Estime la función de frecuencia-respuesta para un sistema simple de entrada/salida única y compárelo con la definición.

Un sistema oscilante unidimensional de tiempo discreto consiste en una unidad de masa,

<math display="inline">
<mrow>
<mi mathvariant="italic">m</mi>
</mrow>
</math>
, unida a una pared por un resorte con constante elástica
<math display="inline">
<mrow>
<mi mathvariant="italic">k</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
</math>
. Un sensor muestrea el desplazamiento de la masa en
<math display="inline">
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">F</mi>
</mrow>
<mrow>
<mi mathvariant="normal">s</mi>
</mrow>
</msub>
<mo stretchy="false">=</mo>
<mn>1</mn>
</mrow>
</math>
Hz. Un amortiguador impide el movimiento de la masa ejerciendo en ella una fuerza proporcional a la velocidad, con constante amortiguamiento
<math display="inline">
<mrow>
<mi mathvariant="italic">b</mi>
<mo stretchy="false">=</mo>
<mn>0</mn>
<mo stretchy="false">.</mo>
<mn>01</mn>
</mrow>
</math>
.

Genere 3000 muestras de tiempo. Defina el intervalo de muestreo

<math display="inline">
<mrow>
<mi>Δ</mi>
<mi mathvariant="italic">t</mi>
<mo>=</mo>
<mrow>
<mrow>
<mn>1</mn>
</mrow>
<mo>/</mo>
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">F</mi>
</mrow>
<mrow>
<mi mathvariant="italic">s</mi>
</mrow>
</msub>
</mrow>
</mrow>
</mrow>
</math>
.

Fs = 1; dt = 1/Fs; N = 3000; t = dt*(0:N-1); b = 0.01;

El sistema puede describirse mediante el modelo de espacio de estado

<math display="block">
<mrow>
<mtable>
<mtr>
<mtd>
<mrow>
<mi>x</mi>
<mo stretchy="false">(</mo>
<mi>k</mi>
<mo>+</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mi>A</mi>
<mi>x</mi>
<mo stretchy="false">(</mo>
<mi>k</mi>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mi>B</mi>
<mi>u</mi>
<mo stretchy="false">(</mo>
<mi>k</mi>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>y</mi>
<mo stretchy="false">(</mo>
<mi>k</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mi>C</mi>
<mi>x</mi>
<mo stretchy="false">(</mo>
<mi>k</mi>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mi>D</mi>
<mi>u</mi>
<mo stretchy="false">(</mo>
<mi>k</mi>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mrow>
</mtd>
</mtr>
</mtable>
</mrow>
</math>

Dónde

<math display="inline">
<mrow>
<mi mathvariant="italic">x</mi>
<mo>=</mo>
<msup>
<mrow>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd>
<mrow>
<mi mathvariant="italic">r</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi mathvariant="italic">v</mi>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
</mrow>
<mrow>
<mi mathvariant="italic">T</mi>
</mrow>
</msup>
</mrow>
</math>
es el vector del estado,
<math display="inline">
<mrow>
<mi mathvariant="italic">r</mi>
</mrow>
</math>
Y
<math display="inline">
<mrow>
<mi mathvariant="italic">v</mi>
</mrow>
</math>
son respectivamente el desplazamiento y la velocidad de la masa,
<math display="inline">
<mrow>
<mi mathvariant="italic">u</mi>
</mrow>
</math>
es la fuerza impulsora, y
<math display="inline">
<mrow>
<mi mathvariant="italic">y</mi>
<mo stretchy="false">=</mo>
<mi mathvariant="italic">r</mi>
</mrow>
</math>
es la salida medida. Las matrices de espacio de estado se

<math display="block">
<mrow>
<mi>A</mi>
<mo>=</mo>
<mi mathvariant="normal">exp</mi>
<mo stretchy="false">(</mo>
<msub>
<mrow>
<mi>A</mi>
</mrow>
<mrow>
<mstyle mathvariant="normal">
<mrow>
<mi>c</mi>
</mrow>
</mstyle>
</mrow>
</msub>
<mi>Δ</mi>
<mi>t</mi>
<mo stretchy="false">)</mo>
<mo>,</mo>
<mspace width="1em"></mspace>
<mi>B</mi>
<mo>=</mo>
<msubsup>
<mrow>
<mi>A</mi>
</mrow>
<mrow>
<mstyle mathvariant="normal">
<mrow>
<mi>c</mi>
</mrow>
</mstyle>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mo stretchy="false">(</mo>
<mi>A</mi>
<mo>-</mo>
<mi>I</mi>
<mo stretchy="false">)</mo>
<msub>
<mrow>
<mi>B</mi>
</mrow>
<mrow>
<mstyle mathvariant="normal">
<mrow>
<mi>c</mi>
</mrow>
</mstyle>
</mrow>
</msub>
<mo>,</mo>
<mspace width="1em"></mspace>
<mi>C</mi>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd>
<mrow>
<mn>1</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mo>,</mo>
<mspace width="1em"></mspace>
<mi>D</mi>
<mo>=</mo>
<mn>0</mn>
<mo>,</mo>
</mrow>
</math>

<math display="inline">
<mrow>
<mi mathvariant="italic">I</mi>
</mrow>
</math>
es el
<math display="inline">
<mrow>
<mn>2</mn>
<mo>×</mo>
<mn>2</mn>
</mrow>
</math>
identidad y las matrices de espacio de estado de tiempo continuo se

<math display="block">
<mrow>
<msub>
<mrow>
<mi>A</mi>
</mrow>
<mrow>
<mstyle mathvariant="normal">
<mrow>
<mi>c</mi>
</mrow>
</mstyle>
</mrow>
</msub>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>1</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<mi>b</mi>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mo>,</mo>
<mspace width="1em"></mspace>
<msub>
<mrow>
<mi>B</mi>
</mrow>
<mrow>
<mstyle mathvariant="normal">
<mrow>
<mi>c</mi>
</mrow>
</mstyle>
</mrow>
</msub>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mn>1</mn>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mo>.</mo>
</mrow>
</math>

Ac = [0 1;-1 -b]; A = expm(Ac*dt);  Bc = [0;1]; B = Ac\(A-eye(2))*Bc;  C = [1 0]; D = 0;

La masa se impulsa por entrada aleatoria durante los primeros 2000 segundos y luego se deja para volver al reposo. Utilice el modelo de espacio de estado para calcular la evolución del tiempo del sistema a partir de un estado inicial de cero. Trazar el desplazamiento de la masa en función del tiempo.

rng default u = randn(1,N)/2; u(2001:end) = 0;  y = 0; x = [0;0]; for k = 1:N     y(k) = C*x + D*u(k);     x = A*x + B*u(k); end  plot(t,y)

Estimar la función de frecuencia-respuesta modal del sistema. Utilice una ventana de Hann la mitad de tiempo que las señales medidas. Especifique que la salida es el desplazamiento de la masa.

wind = hann(N/2);  [frf,f] = modalfrf(u',y',Fs,wind,'Sensor','dis');

La función de respuesta de frecuencia de un sistema de tiempo discreto se puede expresar como la transformada Z de la función de transferencia de dominio de tiempo del sistema, evaluada en el círculo unitario. Compare la estimación con la definición.modalfrf

[b,a] = ss2tf(A,B,C,D);  nfs = 2048; fz = 0:1/nfs:1/2-1/nfs; z = exp(2j*pi*fz); ztf = polyval(b,z)./polyval(a,z);  plot(f,20*log10(abs(frf))) hold on plot(fz*Fs,20*log10(abs(ztf))) hold off grid ylim([-60 40])

Calcule la frecuencia natural y la relación de amortiguación para el modo de vibración.

[fn,dr] = modalfit(frf,f,Fs,1,'FitMethod','PP')
fn = 0.1593 
dr = 0.0043 

Compare la frecuencia natural con

<math display="inline">
<mrow>
<mrow>
<mrow>
<mn>1</mn>
</mrow>
<mo>/</mo>
<mrow>
<mn>2</mn>
<mi>π</mi>
</mrow>
</mrow>
</mrow>
</math>
, que es el valor teórico para el sistema sin fecha.

 theo = 1/(2*pi)
theo = 0.1592 

Calcule los parámetros modales de un módulo de estación espacial a partir de su matriz de función de frecuencia-respuesta (FRF).

Cargue una estructura que contenga la matriz FRF de tres entradas/tres salidas. El sistema se muestrea a 320 Hz.

load modaldata SpaceStationFRF  frf = SpaceStationFRF.FRF;  f = SpaceStationFRF.f;  fs = SpaceStationFRF.Fs;

Extraiga los parámetros modales de los 24 modos más bajos utilizando el método de función racional de mínimos cuadrados.

[fn,dr,ms,ofrf] = modalfit(frf,f,fs,24,'FitMethod','lsrf');

Compare la matriz FRF reconstruida con la medida.

for ij = 1:3  for ji = 1:3     subplot(3,3,3*(ij-1)+ji)     loglog(f,abs(frf(:,ji,ij)))     hold on     loglog(f,abs(ofrf(:,ji,ij)))     hold off     axis tight     title(sprintf('In%d -> Out%d',ij,ji))     if ij==3         xlabel('Frequency (Hz)')     end  end end

Estime la función de respuesta de frecuencia y los parámetros modales de un sistema simple de múltiples entradas/múltiples salidas.

Un sistema oscilante unidimensional ideal consta de dos masas,

<math display="inline">
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">m</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</math>
Y
<math display="inline">
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">m</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
</mrow>
</math>
, confinado entre dos muros. Las unidades son tales que
<math display="inline">
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">m</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<mn>1</mn>
</mrow>
</math>
Y
<math display="inline">
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">m</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<mo>=</mo>
<mi>μ</mi>
</mrow>
</math>
. Cada masa se une a la pared más cercana por un resorte con una constante elástica
<math display="inline">
<mrow>
<mi mathvariant="italic">k</mi>
</mrow>
</math>
. Un resorte idéntico conecta las dos masas. Tres amortiguadores impiden el movimiento de las masas ejerciendo en ellas fuerzas proporcionales a la velocidad, con amortiguamiento constante
<math display="inline">
<mrow>
<mi mathvariant="italic">b</mi>
</mrow>
</math>
. La muestra de sensores
<math display="inline">
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">r</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</math>
Y
<math display="inline">
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">r</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
</mrow>
</math>
, los desplazamientos de las masas, en
<math display="inline">
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">F</mi>
</mrow>
<mrow>
<mi mathvariant="normal">s</mi>
</mrow>
</msub>
<mo stretchy="false">=</mo>
<mn>50</mn>
</mrow>
</math>
Hz.

Genere 30.000 muestras de tiempo, equivalentes a 600 segundos. Defina el intervalo de muestreo

<math display="inline">
<mrow>
<mi>Δ</mi>
<mi mathvariant="italic">t</mi>
<mo stretchy="false">=</mo>
<mrow>
<mrow>
<mn>1</mn>
</mrow>
<mo stretchy="false">/</mo>
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">F</mi>
</mrow>
<mrow>
<mi mathvariant="normal">s</mi>
</mrow>
</msub>
</mrow>
</mrow>
</mrow>
</math>
.

Fs = 50; dt = 1/Fs; N = 30000; t = dt*(0:N-1);

El sistema puede describirse mediante el modelo de espacio de estado

<math display="block">
<mrow>
<mtable>
<mtr>
<mtd>
<mrow>
<mi>x</mi>
<mo stretchy="false">(</mo>
<mi>k</mi>
<mo>+</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mi>A</mi>
<mi>x</mi>
<mo stretchy="false">(</mo>
<mi>k</mi>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mi>B</mi>
<mi>u</mi>
<mo stretchy="false">(</mo>
<mi>k</mi>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>y</mi>
<mo stretchy="false">(</mo>
<mi>k</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mi>C</mi>
<mi>x</mi>
<mo stretchy="false">(</mo>
<mi>k</mi>
<mo stretchy="false">)</mo>
<mo>+</mo>
<mi>D</mi>
<mi>u</mi>
<mo stretchy="false">(</mo>
<mi>k</mi>
<mo stretchy="false">)</mo>
<mo>,</mo>
</mrow>
</mtd>
</mtr>
</mtable>
</mrow>
</math>

Dónde

<math display="block">
<mrow>
<mi>x</mi>
<mo>=</mo>
<msup>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mrow>
<mi>r</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mrow>
<mi>v</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mrow>
<mi>r</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mrow>
<mi>v</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mrow>
<mi>T</mi>
</mrow>
</msup>
</mrow>
</math>
es el vector del estado,
<math display="block">
<mrow>
<msub>
<mrow>
<mi>r</mi>
</mrow>
<mrow>
<mi>i</mi>
</mrow>
</msub>
</mrow>
</math>
Y
<math display="block">
<mrow>
<msub>
<mrow>
<mi>v</mi>
</mrow>
<mrow>
<mi>i</mi>
</mrow>
</msub>
</mrow>
</math>
son respectivamente la ubicación y la velocidad de la
<math display="block">
<mrow>
<mi>i</mi>
</mrow>
</math>
TH Mass,
<math display="block">
<mrow>
<mi>u</mi>
<mo>=</mo>
<msup>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mrow>
<mi>u</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mrow>
<mi>u</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mrow>
<mi>T</mi>
</mrow>
</msup>
</mrow>
</math>
es el vector de las fuerzas impulsoras de entrada, y
<math display="block">
<mrow>
<mi>y</mi>
<mo>=</mo>
<msup>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mrow>
<mi>r</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mrow>
<mi>r</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mrow>
<mi>T</mi>
</mrow>
</msup>
</mrow>
</math>
es el vector de salida. Las matrices de espacio de estado se

<math display="block">
<mrow>
<mi>A</mi>
<mo>=</mo>
<mi mathvariant="normal">exp</mi>
<mo stretchy="false">(</mo>
<msub>
<mrow>
<mi>A</mi>
</mrow>
<mrow>
<mstyle mathvariant="normal">
<mrow>
<mi>c</mi>
</mrow>
</mstyle>
</mrow>
</msub>
<mi>Δ</mi>
<mi>t</mi>
<mo stretchy="false">)</mo>
<mo>,</mo>
<mspace width="1em"></mspace>
<mi>B</mi>
<mo>=</mo>
<msubsup>
<mrow>
<mi>A</mi>
</mrow>
<mrow>
<mstyle mathvariant="normal">
<mrow>
<mi>c</mi>
</mrow>
</mstyle>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mo stretchy="false">(</mo>
<mi>A</mi>
<mo>-</mo>
<mi>I</mi>
<mo stretchy="false">)</mo>
<msub>
<mrow>
<mi>B</mi>
</mrow>
<mrow>
<mstyle mathvariant="normal">
<mrow>
<mi>c</mi>
</mrow>
</mstyle>
</mrow>
</msub>
<mo>,</mo>
<mspace width="1em"></mspace>
<mi>C</mi>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd>
<mrow>
<mn>1</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>1</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mo>,</mo>
<mspace width="1em"></mspace>
<mi>D</mi>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mo>,</mo>
</mrow>
</math>

<math display="inline">
<mrow>
<mi mathvariant="italic">I</mi>
</mrow>
</math>
es el
<math display="inline">
<mrow>
<mn>4</mn>
<mo stretchy="false">×</mo>
<mn>4</mn>
</mrow>
</math>
identidad y las matrices de espacio de estado de tiempo continuo se

<math display="block">
<mrow>
<msub>
<mrow>
<mi>A</mi>
</mrow>
<mrow>
<mstyle mathvariant="normal">
<mrow>
<mi>c</mi>
</mrow>
</mstyle>
</mrow>
</msub>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>1</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo>-</mo>
<mn>2</mn>
<mi>k</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<mn>2</mn>
<mi>b</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>k</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>b</mi>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>1</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>k</mi>
<mo>/</mo>
<mi>μ</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>b</mi>
<mo>/</mo>
<mi>μ</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<mn>2</mn>
<mi>k</mi>
<mo>/</mo>
<mi>μ</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mo>-</mo>
<mn>2</mn>
<mi>b</mi>
<mo>/</mo>
<mi>μ</mi>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mo>,</mo>
<mspace width="1em"></mspace>
<msub>
<mrow>
<mi>B</mi>
</mrow>
<mrow>
<mstyle mathvariant="normal">
<mrow>
<mi>c</mi>
</mrow>
</mstyle>
</mrow>
</msub>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mn>1</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mn>0</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<mn>1</mn>
<mo>/</mo>
<mi>μ</mi>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mo>.</mo>
</mrow>
</math>

Me

<math display="inline">
<mrow>
<mi mathvariant="italic">k</mi>
<mo>=</mo>
<mn>400</mn>
</mrow>
</math>
,
<math display="inline">
<mrow>
<mi mathvariant="italic">b</mi>
<mo stretchy="false">=</mo>
<mn>0</mn>
<mo stretchy="false">.</mo>
<mn>1</mn>
</mrow>
</math>
Y
<math display="inline">
<mrow>
<mi>μ</mi>
<mo>=</mo>
<mrow>
<mrow>
<mn>1</mn>
</mrow>
<mo>/</mo>
<mrow>
<mn>10</mn>
</mrow>
</mrow>
</mrow>
</math>
.

k = 400; b = 0.1; m = 1/10;  Ac = [0 1 0 0;-2*k -2*b k b;0 0 0 1;k/m b/m -2*k/m -2*b/m]; A = expm(Ac*dt); Bc = [0 0;1 0;0 0;0 1/m]; B = Ac\(A-eye(4))*Bc; C = [1 0 0 0;0 0 1 0]; D = zeros(2);

Las masas son impulsadas por la entrada aleatoria a lo largo de la medición. Utilice el modelo de espacio de estado para calcular la evolución del tiempo del sistema a partir de un estado inicial de cero.

rng default u = randn(2,N);  y = [0;0]; x = [0;0;0;0]; for kk = 1:N     y(:,kk) = C*x + D*u(:,kk);     x = A*x + B*u(:,kk); end

Utilice los datos de entrada y salida para estimar la función de transferencia del sistema en función de la frecuencia. Utilice una ventana Hann de 15000 muestras con 9000 muestras de superposición entre segmentos adyacentes. Especifique que las salidas medidas sean desplazamientos.

wind = hann(15000); nove = 9000; [FRF,f] = modalfrf(u',y',Fs,wind,nove,'Sensor','dis');

Calcule la función de transferencia teórica como la transformación Z de la función de transferencia de dominio de tiempo, evaluada en el círculo de la unidad.

nfs = 2048; fz = 0:1/nfs:1/2-1/nfs; z = exp(2j*pi*fz);  [b1,a1] = ss2tf(A,B,C,D,1); [b2,a2] = ss2tf(A,B,C,D,2);  frf(1,:,1) = polyval(b1(1,:),z)./polyval(a1,z); frf(1,:,2) = polyval(b1(2,:),z)./polyval(a1,z); frf(2,:,1) = polyval(b2(1,:),z)./polyval(a2,z); frf(2,:,2) = polyval(b2(2,:),z)./polyval(a2,z);

Trace las estimaciones y superponga las predicciones teóricas.

for jk = 1:2     for kj = 1:2         subplot(2,2,2*(jk-1)+kj)         plot(f,20*log10(abs(FRF(:,jk,kj))))         hold on         plot(fz*Fs,20*log10(abs(frf(jk,:,kj))))         hold off         axis([0 Fs/2 -100 0])         title(sprintf('Input %d, Output %d',jk,kj))     end end

Trace las estimaciones utilizando la sintaxis de sin argumentos de salida.modalfrf

figure modalfrf(u',y',Fs,wind,nove,'Sensor','dis')

Calcule las frecuencias naturales, las proporciones de amortiguación y las formas de modo del sistema. Utilice el método de selección de picos para el cálculo.

[fn,dr,ms] = modalfit(FRF,f,Fs,2,'FitMethod','pp'); fn
fn =  fn(:,:,1) =      3.8466    3.8466     3.8495    3.8495   fn(:,:,2) =      3.8492    3.8490     3.8552   14.4684  

Compare las frecuencias naturales con las predicciones teóricas para el sistema sin fecha.

undamped = sqrt(eig([2*k -k;-k/m 2*k/m]))/2/pi
undamped = 2×1

    3.8470
   14.4259

Calcule las frecuencias naturales, las proporciones de amortiguación y las formas de modo para un sistema de dos entradas/tres salidas excitado por varias ráfagas de ruido aleatorio. Cada ráfaga dura 1 segundo, y hay 2 segundos entre el final de cada ráfaga y el inicio de la siguiente. Los datos se muestrean a 4 kHz.

Cargue el archivo de datos. Trace las señales de entrada y las señales de salida.

load modaldata  subplot(2,1,1) plot(Xburst) title('Input Signals') subplot(2,1,2) plot(Yburst) title('Output Signals')

Calcule las funciones de frecuencia-respuesta. Especifique una ventana rectangular con una longitud igual al período de ráfaga y sin solapamiento entre los segmentos adyacentes.

burstLen = 12000; [frf,f] = modalfrf(Xburst,Yburst,fs,burstLen);

Visualice un diagrama de estabilización y devuelva las frecuencias naturales estables. Especifique un orden de modelo máximo de 30 modos.

figure modalsd(frf,f,fs,'MaxModes',30);

Amplíe la trama. La función de respuesta promediada tiene máximos a 373 Hz, 852 Hz y 1371 Hz, que corresponden a las frecuencias físicas del sistema. Guarde el maxima en una variable.

phfr = [373 852 1371];

Calcule los parámetros modales utilizando el algoritmo exponencial complejo de mínimos cuadrados (LSCE). Especifique un orden de modelo de 6 modos y especifique las frecuencias físicas para los 3 modos determinados a partir del diagrama de estabilización. La función genera un conjunto de frecuencias naturales y proporciones de amortiguación para cada referencia de entrada.

[fn,dr,ms,ofrf] = modalfit(frf,f,fs,6,'PhysFreq',phfr);

Trace las funciones de respuesta de frecuencia reconstruido y compártelos con los originales.

for k = 1:2     for m = 1:3         subplot(2,3,m+3*(k-1))         plot(f/1000,10*log10(abs(frf(:,m,k))))         hold on         plot(f/1000,10*log10(abs(ofrf(:,m,k))))         hold off         text(1,-50,[['Output ';' Input '] num2str([m k]')])         ylim([-100 -40])     end end subplot(2,3,2) title('Frequency-Response Functions')

Argumentos de entrada

contraer todo

Funciones de respuesta de frecuencia, especificadas como un vector, matriz o array 3-D. tiene el tamaño por-por-, donde está el número de bins de frecuencia, es el número de señales de respuesta, y es el número de señales de excitación utilizadas para estimar la función de transferencia.frfpmnpmn

Ejemplo: aproxima la respuesta de frecuencia de un oscilador.tfestimate(randn(1,1000),sin(2*pi*(1:1000)/4)+randn(1,1000)/10)

Tipos de datos: single | double
Soporte de números complejos:

Frecuencias, especificadas como vector. El número de elementos de debe ser igual al número de filas de.ffrf

Tipos de datos: single | double

Frecuencia de muestreo de los datos de medición, especificados como un escalar positivo expresado en hercios.

Tipos de datos: single | double

Número de modos, especificado como un entero positivo.

Tipos de datos: single | double

Sistema identificado, especificado como modelo con parámetros identificados. Utilice comandos de estimación como, o para crear a partir de una función de frecuencia-respuesta medida o de señales de entrada y salida de dominio de tiempo.ssestn4sidtfestsys Vea por un ejemplo.Análisis modal de modelos identificados Debe tener una licencia para usar este argumento de entrada.System Identification Toolbox

Ejemplo: genera un modelo de espacio-estado identificado correspondiente a una masa unitaria unida a un muro por un resorte de constante elástica unitaria y un amortiguador con constante 0,01.idss([0.5418 0.8373;-0.8373 0.5334],[0.4852;0.8373],[1 0],0,[0;0],[0;0],1) El desplazamiento de la masa se muestrea a 1 Hz.

Ejemplo: genera un modelo de función de transferencia identificado correspondiente a una masa unitaria unida a una pared por un resorte de constante elástica unitaria y un amortiguador con constante 0,01.idtf([0 0.4582 0.4566],[1 -1.0752 0.99],1) El desplazamiento de la masa se muestrea a 1 Hz.

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

Ejemplo: utiliza el método de selección de picos para realizar el ajuste y restringe el rango de frecuencias a entre 0 y 500 Hz.'FitMethod','pp','FreqRange',[0 500]

Presencia de alimentación en la función de transferencia estimada, especificada como el par separado por comas consistente en un valor lógico.'Feedthrough' Este argumento solo está disponible si se especifica como.'FitMethod''lsrf'

Tipos de datos: logical

Algoritmo de ajuste, especificado como el par separado por comas que consta de y, o.'FitMethod''lsce''lsrf''pp'

Intervalo de frecuencias, especificado como el par separado por comas que consta de un vector de dos elementos de aumento de los valores positivos contenidos dentro del intervalo especificado en.'FreqRange'f

Tipos de datos: single | double

Las frecuencias naturales para los modos físicos que se incluirán en el análisis, especificadas como el par separado por comas que consta de y un vector de valores de frecuencia dentro del rango extendido por.'PhysFreq'f La función incluye en el análisis aquellos modos con frecuencias naturales más cercanas a los valores especificados en el vector. Si el vector contiene valores de frecuencia, y tiene filas cada uno, y tiene columnas.mfndrmmsm Si no especifica este argumento, la función utiliza todo el rango de frecuencias en.f

Tipos de datos: single | double

Índices de la función de frecuencia-respuesta de punto de conducción, especificado como el par separado por comas que consta de un vector de dos elementos de enteros positivos.'DriveIndex' El primer elemento del vector debe ser menor o igual que el número de respuestas del sistema. El segundo elemento del vector debe ser menor o igual que el número de excitaciones del sistema. Formas de modo se normalizan a unidad modal basado en el punto de conducción.

Ejemplo: Especifica que la función de frecuencia-respuesta de punto de conducción es.'DriveIndex',[2 3]frf(:,2,3)

Tipos de datos: single | double

Argumentos de salida

contraer todo

Frecuencias naturales, devueltas como matriz o array 3-D. El tamaño depende de la elección del algoritmo de ajuste especificado con:fn'FitMethod'

  • Si especifica o, a continuación, es un vector con elementos, independientemente del tamaño de.'lsce''lsrf'fnmnumfrf Si el sistema tiene más de modos oscilatorios, entonces el método devuelve los primeros modos menos amortiguados ordenados en orden de aumento de la frecuencia natural.mnum'lsrf'mnum

  • Si especifica, entonces es una matriz de tamaño por-por-con una estimación de y una estimación de por.'pp'fnmnummnfndrfrf

Relaciones de amortiguamiento para las frecuencias naturales en, devueltas como una matriz o una matriz 3D del mismo tamaño que.fnfn

Vectores de forma de modo, devueltos como una matriz. tiene columnas, cada una de las cuales contiene un vector de longitud de forma de modo, donde es el mayor número de canales de excitación y el número de canales de respuesta.msmnumqq

Funciones de respuesta de frecuencia reconstruidas, devueltas como un array Vector, Matrix o 3-D con el mismo tamaño que.frf

Algoritmos

contraer todo

El método exponencial complejo de mínimos cuadrados

El método exponencial complejo de mínimos cuadrados computa la respuesta de impulso correspondiente a cada función de frecuencia-respuesta y se adapta a la respuesta de un conjunto de sinusoides amortiguados complejos utilizando el método de Prony.

Una sinusoide amortiguada muestreada se puede convertir en la forma

si(n)=Aiebin/fscos(2πfin/fs+ϕi)=12Aiejϕiexp((bi/fsj2πfi/fs)n)+12Aiejϕiexp((bi/fs+j2πfi/fs)n)ai+xi+n+aixin,

Dónde:

  • fs es la frecuencia de muestreo.

  • fi es la frecuencia sinusoide.

  • bi es el coeficiente de amortiguación.

  • Ai Y ϕi son la amplitud y la fase de la sinusoide.

el Uni se llaman y elamplitudes Xi se llaman.poles El método de Prony expresa una función muestreada h(n) como una superposición de N/2 modos (y por lo tanto N amplitudes y polos):

h(0)=a1x10+a2x20+aNxN0h(1)=a1x11+a2x21++aNxN1h(N1)=a1x1N1+a2x2N1++aNxNN1.

Los polos son las raíces de un polinomio con coeficientes c0c1, …, cN–1:

xiN+cN1xiN1++c1xi1+c0xi0=0.

Los coeficientes se encuentran utilizando un modelo autorregresivo de L = 2N muestras de:h

[h(0)h(1)h(N1)h(1)h(2)h(N)h(LN1)h(LN)h(L2)][c0c1cN1]=[h(N)h(N+1)h(L1)].

Para encontrar los polos, el algoritmo utiliza la función.roots Una vez que se conocen los polos, es posible determinar las frecuencias y los factores de amortiguación mediante la identificación de las partes imaginarias y reales de los logaritmos de polo. El último paso es resolver las amplitudes y reconstruir la respuesta de impulso utilizando

[h(0)h(N1)]=[x10xN0x1N1xNN1][a1aN].

La siguiente implementación ingenua resume el procedimiento: el sistema también se puede construir para contener muestras de múltiples funciones de respuesta de frecuencia y resuelto utilizando mínimos cuadrados.MATLAB®

N = 4; L = 2*N; h = rand(L,1); c = hankel(h(1:N),h(L-N:L-1))\-h(N+1:L); x = roots([1;c(N:-1:1)]).'; p = log(x); hrec = x.^((0:L-1)')*(x.^((0:L-1)')\h(1:L)); sum(h-hrec)
ans =     3.2613e-15 - 1.9297e-16i

Método de picking pico

El método de selección de picos asume que cada pico significativo en la función de frecuencia-respuesta corresponde exactamente a un modo natural. Cerca de un pico, se asume que el sistema se comporta como un oscilador armónico amortiguado de un grado de libertad:

H(f)=1(2π)21/mf2+j2ζrfrf+fr2H(f)fr2+j2ζrfrfH(f)1(2π)2m=f2H(f),

donde está la función de frecuencia-respuesta,Hfr es la frecuencia de resonancia sin amortiguación, ζr = b/(4mk)1/2 es la amortiguación relativa, es la constante de amortiguación, es la constante elástica y es la masa.bkm

Dado un pico situado en Fp, el procedimiento toma el pico y un número fijo de puntos a cada lado, reemplaza el término de masa con una variable ficticia y calcula los parámetros modales resolviendo el sistema de ecuacionesd

[H(fpk)j2fpkH(fpk)1H(fp)j2fpH(fp)1H(fp+k)j2fp+kH(fp+k)1][fr2ζrfrd]=[fpk2H(fpk)fp2H(fp)fp+k2H(fp+k)].

Referencias

[1] Allemang, Randall J., and David L. Brown. “Experimental Modal Analysis and Dynamic Component Synthesis, Vol. III: Modal Parameter Estimation.” Technical Report AFWAL-TR-87-3069. Air Force Wright Aeronautical Laboratories, Wright-Patterson Air Force Base, OH, December 1987.

[2] Brandt, Anders. Noise and Vibration Analysis: Signal Analysis and Experimental Procedures. Chichester, UK: John Wiley & Sons, 2011.

[3] Ozdemir, Ahmet Arda, and Suat Gumussoy. "Transfer Function Estimation in System Identification Toolbox via Vector Fitting." Proceedings of the 20th World Congress of the International Federation of Automatic Control, Toulouse, France, July 2017.

Consulte también

| | | |

Temas

Introducido en R2017a