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.

modalfrf

Funciones de respuesta de frecuencia para el análisis modal

Descripción

ejemplo

frf = modalfrf(x,y,fs,window) estima una matriz de funciones de respuesta de frecuencia, , a partir de las señales de excitación, y las señales de respuesta, , todas muestreadas a una velocidad .frfxyfs La salida, , es unfrf H1 calcular utilizando el método de Welch con para adelanto de las señales. y debe tener el mismo número de filas.windowxy Si o es una matriz, cada columna representa una señal.xy La matriz de funciones de respuesta de frecuencia, , se calcula en términos de flexibilidad dinámica, y la respuesta del sistema, , contiene mediciones de aceleración.frfy

frf = modalfrf(x,y,fs,window,noverlap) especifica muestras de superposición entre segmentos adyacentes.noverlap

ejemplo

frf = modalfrf(___,Name,Value) especifica las opciones mediante argumentos de par nombre-valor, utilizando cualquier combinación de entradas de sintaxis anteriores. Las opciones incluyen el estimador, la configuración de medición y el tipo de sensor que mide la respuesta del sistema.

ejemplo

[frf,f,coh] = modalfrf(___) también devuelve el vector de frecuencia correspondiente a cada función de respuesta de frecuencia, así como la matriz de coherencia múltiple.

[frf,f] = modalfrf(sys) calcula la función de respuesta de frecuencia del modelo identificado.sys Utilice comandos de estimación como , , o para crear a partir de señales de entrada y salida de dominio de tiempo.ssestn4sidtfestsys Esta sintaxis permite utilizar solo el argumento de par nombre-valor.'Sensor' Debe tener una licencia para utilizar esta sintaxis.System Identification Toolbox™

frf = modalfrf(sys,f) especifica las frecuencias en las que se va a calcular .frf Esta sintaxis permite utilizar solo el argumento de par nombre-valor.'Sensor' Debe tener una licencia para utilizar esta sintaxis.System Identification Toolbox

ejemplo

modalfrf(___) sin argumentos de salida traza las funciones de respuesta de frecuencia en la figura actual. Las tramas se limitan a las primeras cuatro excitaciones y cuatro respuestas.

Ejemplos

contraer todo

Visualice la función de respuesta de frecuencia de una excitación de martillo de una sola entrada/salida única.

Cargue un archivo de datos que contenga:

  • Xhammer

    <math display="block">
    <mrow>
    <mrow>
    <mtext></mtext>
    </mrow>
    </mrow>
    </math>
    Una señal de excitación de entrada que consta de cinco golpes de martillo entregados periódicamente.

  • Yhammer

    <math display="block">
    <mrow>
    <mrow>
    <mtext></mtext>
    </mrow>
    </mrow>
    </math>
    La respuesta de un sistema a la entrada. se mide como un desplazamiento.Yhammer

Las señales se muestrean a 4 kHz. Trazar las señales de excitación y salida.

load modaldata  subplot(2,1,1) plot(thammer,Xhammer(:)) ylabel('Force (N)') subplot(2,1,2) plot(thammer,Yhammer(:)) ylabel('Displacement (m)') xlabel('Time (s)')

Calcular y mostrar la función de respuesta de frecuencia. Ventana de las señales utilizando una ventana rectangular. Especifique que la ventana cubre el período entre golpes de martillo.

clf winlen = size(Xhammer,1); modalfrf(Xhammer(:),Yhammer(:),fs,winlen,'Sensor','dis')

Calcular las funciones de respuesta de frecuencia para un sistema de dos entradas/dos salidas excitado por ruido aleatorio.

Cargue un archivo de datos que contenga , la señal de excitación de entrada y , la respuesta del sistema.XrandYrand Calcular las funciones de respuesta de frecuencia mediante una ventana Hann de 5000 muestras y una superposición del 50% entre segmentos de datos adyacentes. Especifique que las medidas de salida son desplazamientos.

load modaldata winlen = 5000;  frf = modalfrf(Xrand,Yrand,fs,hann(winlen),0.5*winlen,'Sensor','dis');

Utilice la funcionalidad de trazado de para visualizar las respuestas.modalfrf

modalfrf(Xrand,Yrand,fs,hann(winlen),0.5*winlen,'Sensor','dis')

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 

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 la función de respuesta de frecuencia de un conjunto de datos de dos entradas/seis salidas correspondiente a un bastidor de acero.

Cargue una estructura que contenga las excitaciones de entrada y las mediciones del acelerómetro de salida. El sistema se muestrea a 1024 Hz durante unos 3,9 segundos.

load modaldata SteelFrame X = SteelFrame.Input; Y = SteelFrame.Output; fs = SteelFrame.Fs;

Utilice el método subespacial para calcular las funciones de respuesta de frecuencia. Divida las señales de entrada y salida en segmentos de 1000 muestras no superpuestos. Ventana de cada segmento mediante una ventana rectangular. Especifique un orden de modelo de 36.

[frf,f] = modalfrf(X,Y,fs,1000,'Estimator','subspace','Order',36);

Visualice el diagrama de estabilización para el sistema. Identifique hasta 15 modos físicos.

modalsd(frf,f,fs,'MaxModes',15)

Argumentos de entrada

contraer todo

Señales de excitación, especificadas como vector o matriz.

Tipos de datos: single | double

Señales de respuesta, especificadas como vector o matriz.

Tipos de datos: single | double

Frecuencia de muestreo, especificada como un escalar positivo expresado en hercios.

Tipos de datos: single | double

Ventana, especificada como un entero o como un vector de fila o columna. Se utiliza para dividir la señal en segmentos:window

  • Si es un entero, divide y en segmentos de longitud y ventanas cada segmento con una ventana rectangular de esa longitud.windowmodalfrfxywindow

  • Si es un vector, se divide y se divide en segmentos de la misma longitud que el vector y windows cada segmento utilizando .windowmodalfrfxywindow

  • Si se especifica como , a continuación, omite la forma de y utiliza su longitud para determinar el número de puntos de frecuencia en la función de respuesta de frecuencia devuelta.'Estimator''subspace'modalfrfwindow

Si la longitud de y no se puede dividir exactamente en un número entero de segmentos con muestras superpuestas, entonces las señales se truncan en consecuencia.xynoverlap

Para obtener una lista de las ventanas disponibles, consulte .Windows

Ejemplo: y ambos especifican una ventana De Naden de longitud + 1.hann(N+1)(1-cos(2*pi*(0:N)'/N))/2N

Tipos de datos: single | double

Número de muestras superpuestas, especificada como un entero positivo.

  • Si es un escalar, debe ser menor que .windownoverlapwindow

  • Si es un vector, debe ser menor que la longitud de .windownoverlapwindow

Tipos de datos: double | single

Sistema identificado, especificado como un modelo con parámetros identificados. Utilice comandos de estimación como , , o para crear a partir de señales de entrada y salida de dominio de tiempo.ssestn4sidtfestsys Vea un ejemplo.Análisis modal de modelos identificados Las sintaxis que suelen requerir menos datos que las sintaxis que utilizan métodos no paramétricos.sys 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.

Frecuencias, especificadas como vector expresado en Hz.

Tipos de datos: single | double

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: especifica que la señal de respuesta consiste en mediciones de velocidad y que el estimador de elección es H1.'Sensor','vel','Est','H1'

Estimador, especificado como el par separado por comas que consta de y , , , o .'Estimator''H1''H2''Hv''subspace' Consulte para obtener más información sobre elFunción de transferencia H1 Y H2 Estimadores.

  • Utilícelo cuando el ruido no esté correlacionado con las señales de excitación.'H1'

  • Utilícelo cuando el ruido no esté correlacionado con las señales de respuesta.'H2' En este caso, el número de señales de excitación debe ser igual al número de señales de respuesta.

  • Se utiliza para minimizar la discrepancia entre los datos de respuesta modelados y los estimados minimizando el seguimiento de la matriz de errores.'Hv' Hv es la media geométrica de H1 Y H2: Hv = (H1H2)1/2

    La medida debe ser de entrada única/salida única (SISO).

  • Se utiliza para calcular las funciones de respuesta de frecuencia mediante un modelo de espacio de estado.'subspace' En este caso, se omite el argumento.noverlap Este método normalmente requiere menos datos que los enfoques no paramétricos. Consulte para obtener más información.n4sid

Presencia de avance en el modelo de espacio de estado, especificado como el par separado por comas que consta de y un valor lógico.'Feedthrough' Este argumento solo está disponible si se especifica como .'Estimator''subspace'

Tipos de datos: logical

Configuración de medición para números iguales de canales de excitación y respuesta, especificados como el par separado por comas que consta de y , , o .'Measurement''fixed''rovinginput''rovingoutput'

  • Utilícelo cuando haya fuentes de excitación y sensores en ubicaciones fijas del sistema.'fixed' Cada excitación contribuye a cada respuesta.

  • Utilícelo cuando las mediciones resulten de una prueba de excitación itinerante (o ).'rovinginput'martillo itinerante Un solo sensor se mantiene en una ubicación fija del sistema. Una sola fuente de excitación se coloca en varias ubicaciones y produce una respuesta del sensor por ubicación. La salida de función .frf(:,:,i) = modalfrf(x(:,i),y(:,i))

  • Utilícelo cuando las mediciones resulten de una prueba.'rovingoutput'sensor itinerante Una sola fuente de excitación se mantiene en una ubicación fija del sistema. Un solo sensor se coloca en varias ubicaciones y responde a una excitación por ubicación. La salida de función .frf(:,i) = modalfrf(x(:,i),y(:,i))

Orden del modelo de espacio de estado, especificado como el par separado por comas que consta de un vector entero o de fila de enteros.'Order' Si especifica un vector de enteros, la función selecciona un valor de orden óptimo del intervalo especificado. Este argumento solo está disponible si se especifica como .'Estimator''subspace'

Tipos de datos: single | double

Tipo de sensor, especificado como el par separado por comas que consta de y , , o .'Sensor''acc''dis''vel'

  • — La tensión de la señal de respuesta es proporcional a la aceleración.'acc'

  • — La tensión de la señal de respuesta es proporcional al desplazamiento.'dis'

  • — La tensión de la señal de respuesta es proporcional a la velocidad.'vel'

Argumentos de salida

contraer todo

Funciones de respuesta de frecuencia, devueltas 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 respuestas, y es el número de señales de excitación.frfpmnpmn

Frecuencias, devueltas como vector.

Matriz de coherencia múltiple, devuelta como matriz. tiene una columna para cada señal de respuesta.coh

Referencias

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

[2] Vold, Håvard, John Crowley, and G. Thomas Rocklin. “New Ways of Estimating Frequency Response Functions.” Sound and Vibration. Vol. 18, November 1984, pp. 34–38.

Consulte también

| | |

Temas

Introducido en R2017a