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

Parámetros modales de las funciones de respuesta de frecuencia

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 medidadefinidas a 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 relaciones de amortiguación y los vectores de forma de modo correspondientes a cada frecuencia natural en , 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 , y nombre-valor.'DriveIndex''FreqRange''PhysFreq' Normalmente requiere menos datos que las sintaxis que utilizan métodos no paramétricos. Debe tener una licencia para utilizar esta sintaxis.System Identification Toolbox™

Ejemplos

contraer todo

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

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

<math display="inline">
<mrow>
<mi mathvariant="italic">m</mi>
</mrow>
</math>
, unido 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 toma muestras del 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 sobre ella una fuerza proporcional a la velocidad, con una constante de amortiguación
<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>
.

Generar 3000 muestras de tiempo. Definir 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 ser descrito por el modelo de espacio-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 de 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 motriz, 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-estado son

<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 son

<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 es impulsada por la entrada aleatoria durante los primeros 2000 segundos y luego se deja volver al reposo. Utilice el modelo de espacio de estado para calcular la evolución temporal 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 respuesta de frecuencia modal del sistema. Utilice una ventana 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 transformación Z de la función de transferencia de dominio de tiempo del sistema, evaluada en el círculo de unidades. 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])

Estimar 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 amortiguación.

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

Calcular los parámetros modales de un módulo de la Estación Espacial a partir de su matriz de función de respuesta de frecuencia (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

Calcule la función de respuesta de frecuencia y los parámetros modales de un sistema simple de entrada múltiple/salida múltiple.

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 paredes. 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 está unida 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 muelle idéntico conecta las dos masas. Tres amortiguadores impiden el movimiento de las masas ejerciendo sobre ellas fuerzas proporcionales a la velocidad, con amortiguación constante
<math display="inline">
<mrow>
<mi mathvariant="italic">b</mi>
</mrow>
</math>
. 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.

Genera 30.000 muestras de tiempo, equivalentes a 600 segundos. Definir 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 ser descrito por el modelo de espacio-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 de 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>
miel,
<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 motrices 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-estado son

<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 son

<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>

Establecer

<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 temporal 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 son desplazamientos.

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

Calcular 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 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);

Trazar las estimaciones y superponer 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

Trazar 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 relaciones 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 amortiguación.

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

    3.8470
   14.4259

Calcular las frecuencias naturales, las relaciones 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 comienzo de la siguiente. Los datos se muestrean a 4 kHz.

Cargue el archivo de datos. Trazar 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')

Calcular las funciones de respuesta de frecuencia. Especifique una ventana rectangular con una longitud igual al período de ráfaga y ninguna superposición 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 mediada tiene un máximo de 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];

Calcular los parámetros modales utilizando el algoritmo exponencial complejo de mínimos cuadrados (LSCE). Especifique un orden de modelo de 6 modos y especifique 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 relaciones de amortiguación para cada referencia de entrada.

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

Trazar las funciones de respuesta de frecuencia reconstruidas y compararlas con las 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 vector, matriz o matriz 3D. 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: se aproxima a 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, especificada 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 un modelo con parámetros identificados. 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.ssestn4sidtfestsys Vea un ejemplo.Análisis modal de modelos identificados Debe tener una licencia para utilizar este argumento de entrada.System Identification Toolbox

Ejemplo: genera un modelo de espacio de estado identificado correspondiente a una masa unitaria unida a una pared mediante un muelle de constante elástica de unidad 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 mediante un muelle de constante elástica de unidad 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 opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.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 frecuencia entre 0 y 500 Hz.'FitMethod','pp','FreqRange',[0 500]

Presencia de avance en la función de transferencia estimada, especificada como el par separado por comas que consta de un valor lógico y 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'

  • — .'lsce'Método exponencial complejo de menos cuadrados Si especifica , entonces es un vector con elementos, independientemente del tamaño de .'lsce'fnmnumfrf

  • — Método de estimación racional de la función de los mínimos cuadrados.'lsrf' Si especifica , entonces es un vector con elementos, independientemente del tamaño de .'lsrf'fnmnumfrf El método se describe en .[3] Consulte para obtener más información.Continuous-Time Transfer Function Estimation Using Continuous-Time Frequency-Domain Data (System Identification Toolbox) Este algoritmo normalmente requiere menos datos que los enfoques no paramétricos y es el único que funciona para los no uniformes.f

  • — .'pp'Método Peak-Picking Para un calculado a partir de señales de excitación y señales de respuesta, es una matriz -por- por- con una estimación y una estimación de por .frfnmfnmnummnfndrfrf

Rango de frecuencia, especificado como el par separado por comas que consta de y un vector de dos elementos de aumento de valores positivos contenidos dentro del rango especificado en .'FreqRange'f

Tipos de datos: single | double

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 abarcado 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, entonces y tiene filas cada uno, y tiene columnas.mfndrmmsm Si no especifica este argumento, la función utiliza todo el intervalo de frecuencias en .f

Tipos de datos: single | double

Indices de la función de respuesta de frecuencia de punto de conducción, especificado según el par separado por comas que consta de y 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. Las formas de modo se normalizan al modal de unidad en función del punto de conducción.

Ejemplo: especifica que la función de respuesta de frecuencia 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 matriz 3D. El tamaño de depende de la elección del algoritmo de ajuste especificado con:fn'FitMethod'

  • Si especifica o , entonces es un vector con elementos, independientemente del tamaño de .'lsce''lsrf'fnmnumfrf Si el sistema tiene más que 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 y una estimación de por .'pp'fnmnummnfndrfrf

Relaciones de amortiguación para las frecuencias naturales en , devuelto como una matriz o matriz 3D del mismo tamaño que .fnfn

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

Funciones de respuesta de frecuencia reconstruidas, devueltas como vector, matriz o matriz 3D con el mismo tamaño que .frf

Algoritmos

contraer todo

Método exponencial complejo de menos cuadrados

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

Un sinusoides humedecido muestreado se puede lanzar 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 sinusoides.

  • bi es el coeficiente de amortiguación.

  • Ai Y ϕi son la amplitud y la fase del sinusoides.

el Uni se llaman y elAmplitudes Xi se llaman .Postes 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 autoregresivo 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 logarritmos 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 resolverse 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 Peak-Picking

El método de selección de picos supone que cada pico significativo en la función de respuesta de frecuencia corresponde exactamente a un modo natural. Cerca de un pico, se supone 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 respuesta de frecuencia,Hfr es la frecuencia de resonancia no amortiguada, ζ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 ubicado 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