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.

tfestimate

Estimación de la función de transferencia

Descripción

txy = tfestimate(x,y) encuentra una estimación de la función de transferencia, , dada una señal de entrada, , y una señal de salida, .txyxy

  • Si y son ambos vectores, deben tener la misma longitud.xy

  • Si una de las señales es una matriz y la otra es un vector, entonces la longitud del vector debe ser igual al número de filas de la matriz. La función expande el vector y devuelve una matriz de estimaciones de la función de transferencia columna por columna.

  • Si y son matrices con el mismo número de filas pero diferentes números de columnas, entonces es una función de transferencia de entrada múltiple /multisalida (MIMO) que combina todas las señales de entrada y salida. es una matriz tridimensional.xytxytxy Si tiene columnas y tiene columnas, tiene columnas y páginas.xmyntxynm Consulte para obtener más información.Función de transferencia

  • Si y son matrices de igual tamaño, entonces opera columna: .xytfestimatetxy(:,n) = tfestimate(x(:,n),y(:,n)) Para obtener una estimación MIMO, anexe a la lista de argumentos.'mimo'

ejemplo

txy = tfestimate(x,y,window) se utiliza para dividir y en segmentos y realizar ventanas.windowxy

txy = tfestimate(x,y,window,noverlap) utiliza muestras de superposición entre segmentos adyacentes.noverlap

txy = tfestimate(x,y,window,noverlap,nfft) utiliza puntos de muestreo para calcular la transformación discreta de Fourier.nfft

txy = tfestimate(___,'mimo') calcula una función de transferencia MIMO para las entradas de matriz. Esta sintaxis puede incluir cualquier combinación de argumentos de entrada de sintaxis anteriores.

[txy,w] = tfestimate(___) devuelve un vector de frecuencias normalizadas, en el que se estima la función de transferencia.w

ejemplo

[txy,f] = tfestimate(___,fs) devuelve un vector de frecuencias, , expresado en términos de la frecuencia de muestreo, , en el que se estima la función de transferencia. debe ser la sexta entrada numérica para .ffsfstfestimate Para introducir una frecuencia de muestreo y seguir utilizando los valores predeterminados de los argumentos opcionales anteriores, especifique estos argumentos como vacíos, .[]

[txy,w] = tfestimate(x,y,window,noverlap,w) devuelve la estimación de la función de transferencia a las frecuencias normalizadas especificadas en .w

[txy,f] = tfestimate(x,y,window,noverlap,f,fs) devuelve la estimación de la función de transferencia a las frecuencias especificadas en .f

[___] = tfestimate(x,y,___,freqrange) devuelve la estimación de la función de transferencia en el rango de frecuencia especificado por .freqrange Las opciones válidas para son , , y .freqrange'onesided''twosided''centered'

ejemplo

[___] = tfestimate(___,'Estimator',est) estima las funciones de transferencia utilizando el estimador.est Las opciones válidas para son y .est'H1''H2'

tfestimate(___) sin argumentos de salida traza la estimación de la función de transferencia en la ventana de figura actual.

Ejemplos

contraer todo

Calcular y trazar la estimación de la función de transferencia entre dos secuencias y .xy La secuencia consiste en ruido gaussiano blanco. resulta del filtrado con un filtro de paso bajo de 30o orden con frecuencia de corte normalizadaxyx

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>2</mn>
<mi>π</mi>
</mrow>
</math>
rad/muestra. Utilice una ventana rectangular para diseñar el filtro. Especifique una frecuencia de muestreo de 500 Hz y una ventana Hamming de longitud 1024 para la estimación de la función de transferencia.

h = fir1(30,0.2,rectwin(31)); x = randn(16384,1); y = filter(h,1,x);  fs = 500; tfestimate(x,y,1024,[],[],fs)

Se utiliza para comprobar que la función de transferencia se aproxima a la respuesta de frecuencia del filtro.fvtool

fvtool(h,1,'Fs',fs)

Obtenga el mismo resultado devolviendo la estimación de la función de transferencia en una variable y trazando su valor absoluto en decibelios.

[Txy,f] = tfestimate(x,y,1024,[],[],fs);  plot(f,mag2db(abs(Txy)))

Calcule la función de transferencia 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 mediante un muelle de constante elástica de unidad. Un sensor toma muestras de la aceleración,
<math display="inline">
<mrow>
<mi mathvariant="italic">a</mi>
</mrow>
</math>
, de la masa en
<math display="inline">
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">F</mi>
</mrow>
<mrow>
<mi mathvariant="italic">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 2000 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 = 2000; 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 la posición 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>=</mo>
<mi mathvariant="italic">a</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>
<mi>c</mi>
</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>
<mi>c</mi>
</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>
<mi>c</mi>
</mrow>
</msub>
<mo>,</mo>
<mspace width="1em"></mspace>
<mi>C</mi>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mtable>
<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>
<mi>D</mi>
<mo>=</mo>
<mn>1</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>
<mi>c</mi>
</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>
<mi>c</mi>
</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(size(A)))*Bc;  C = [-1 -b]; D = 1;

La masa es impulsada por la entrada aleatoria durante la mitad del intervalo de 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. Trazar la aceleración de la masa en función del tiempo.

rng default  u = zeros(1,N); u(1:N/2) = randn(1,N/2);  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 transferencia del sistema en función de la frecuencia. Utilice 2048 puntos DFT y especifique una ventana Kaiser con un factor de forma de 15. Utilice el valor predeterminado de superposición entre segmentos adyacentes.

nfs = 2048; wind = kaiser(N,15);  [txy,ft] = tfestimate(u,y,wind,[],nfs,Fs);

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. Compruebe que la estimación calculada por coincide con esta definición.tfestimate

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

Trazar la estimación utilizando la funcionalidad integrada de .tfestimate

tfestimate(u,y,wind,[],nfs,Fs)

Calcule la función de transferencia para 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">a</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</math>
Y
<math display="inline">
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">a</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
</mrow>
</math>
, las aceleraciones de las masas, en
<math display="inline">
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">F</mi>
</mrow>
<mrow>
<mi mathvariant="italic">s</mi>
</mrow>
</msub>
<mo>=</mo>
<mn>50</mn>
</mrow>
</math>
Hz.

Generar 30000 muestras de tiempo, equivalentes a 600 segundos. 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 = 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>a</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mrow>
<mi>a</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>
<mi>c</mi>
</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>
<mi>c</mi>
</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>
<mi>c</mi>
</mrow>
</msub>
<mo>,</mo>
<mspace width="1em"></mspace>
<mi>C</mi>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mtable>
<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>
<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>
<mi>D</mi>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mtable>
<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>1</mn>
<mo>/</mo>
<mi>μ</mi>
</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>
<mi>c</mi>
</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>
<mi>c</mi>
</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>
</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; 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 = [-2*k -2*b k b;k/m b/m -2*k/m -2*b/m]; D = [1 0;0 1/m];

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);  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. Especifique la opción para producir las cuatro funciones de transferencia.'mimo' Utilice una ventana Hann de 5000 muestras para dividir las señales en segmentos. Especifique 2500 muestras de superposición entre segmentos adyacentes y

<math display="inline">
<mrow>
<msup>
<mrow>
<mn>2</mn>
</mrow>
<mrow>
<mn>14</mn>
</mrow>
</msup>
</mrow>
</math>
Puntos DFT. Traza las estimaciones.

wind = hann(5000); nov = 2500;  [q,fq] = tfestimate(u',y',wind,nov,2^14,Fs,'mimo');

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 = 2^14;  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 funciones de transferencia teórica y sus estimaciones correspondientes.

for jk = 1:2     for kj = 1:2         subplot(2,2,2*(jk-1)+kj)         plot(fq,20*log10(abs(q(:,jk,kj))))         hold on         plot(fz*Fs,20*log10(abs(frf(jk,:,kj))))         hold off         grid         title(['Input ' int2str(kj) ', Output ' int2str(jk)])         axis([0 Fs/2 -50 100])     end end

Las funciones de transferencia tienen máximas en los valores esperados,

<math display="inline">
<mrow>
<mrow>
<mrow>
<msub>
<mrow>
<mi>ω</mi>
</mrow>
<mrow>
<mn>1</mn>
<mo>,</mo>
<mn>2</mn>
</mrow>
</msub>
</mrow>
<mo>/</mo>
<mrow>
<mn>2</mn>
<mi>π</mi>
</mrow>
</mrow>
</mrow>
</math>
, donde el
<math display="inline">
<mrow>
<mi>ω</mi>
</mrow>
</math>
son los valores propios de la matriz modal.

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

    3.8470
   14.4259

Añadir amortiguación al sistema mediante la configuración

<math display="inline">
<mrow>
<mi mathvariant="italic">b</mi>
<mo>=</mo>
<mn>0</mn>
<mo>.</mo>
<mn>1</mn>
</mrow>
</math>
. Calcular la evolución del tiempo del sistema amortiguado con las mismas fuerzas motrices. Calcular el
<math display="inline">
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">H</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
</mrow>
</math>
estimación de la función de transferencia MIMO utilizando la misma ventana y superposición. Trazar las estimaciones utilizando la funcionalidad.tfestimate

b = 0.1;  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); B = Ac\(A-eye(4))*Bc; C = [-2*k -2*b k b;k/m b/m -2*k/m -2*b/m];  x = [0;0;0;0]; for kk = 1:N     y(:,kk) = C*x + D*u(:,kk);     x = A*x + B*u(:,kk); end  clf tfestimate(u',y',wind,nov,[],Fs,'mimo','Estimator','H2') legend('I1, O1','I1, O2','I2, O1','I2, O2')

yl = ylim;

Compare las estimaciones con las predicciones teóricas.

[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);  plot(fz*Fs,20*log10(abs(reshape(permute(frf,[2 1 3]),[nfs/2 4])))) legend('I1, O1','I1, O2','I2, O1','I2, O2') ylim(yl) grid

Argumentos de entrada

contraer todo

Señal de entrada, especificada como vector o matriz.

Ejemplo: especifica un sinusoides incrustado en el ruido gaussiano blanco.cos(pi/4*(0:159))+randn(1,160)

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

Señal de salida, especificada como vector o matriz.

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

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 Hamming de esa longitud.windowtfestimatexywindow

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

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

Si especifica como vacío, utilice una ventana Hamming de forma que y se dividan en ocho segmentos con muestras superpuestas.windowtfestimatexynoverlap

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 escalar, debe ser menor que .windownoverlapwindow

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

Si especifica como vacío, utiliza un número que produce una superposición del 50% entre segmentos.noverlaptfestimate Si la longitud del segmento no está especificada, la función se establece en /4.5 , donde está la longitud de las señales de entrada y salida.noverlapNN

Tipos de datos: double | single

Número de puntos DFT, especificado como un entero positivo. Si especifica como vacío, establece este argumento ennffttfestimate max(256,2p)Dónde p = ⌈log2 N para señales de entrada de longitud .N

Tipos de datos: single | double

Frecuencia de muestreo, especificada como escalar positiva. La frecuencia de muestreo es el número de muestras por unidad de tiempo. Si la unidad de tiempo es segundos, entonces la frecuencia de muestreo tiene unidades de Hz.

Frecuencias normalizadas, especificadas como un vector de fila o columna con al menos dos elementos. Las frecuencias normalizadas están en rad/muestra.

Ejemplo: w = [pi/4 pi/2]

Tipos de datos: double

Frecuencias, especificadas como un vector de fila o columna con al menos dos elementos. Las frecuencias están en ciclos por unidad de tiempo. El tiempo unitario se especifica mediante la frecuencia de muestreo, .fs Si tiene unidades de muestras/segundo, entonces tiene unidades de Hz.fsf

Ejemplo: fs = 1000; f = [100 200]

Tipos de datos: double

Rango de frecuencia para la estimación de la función de transferencia, especificado como uno de , , o .'onesided''twosided''centered' El valor predeterminado es para las señales de valor real y para las señales de valor complejo.'onesided''twosided'

  • — Devuelve la estimación unilateral de la función de transferencia entre dos señales de entrada de valor real y .'onesided'xy Si es par, tiene /2 + 1 filas y se calcula en el intervalonffttxynfft [0,π] rad/muestra. Si es impar, tiene ( + 1)/2 filas y el intervalo esnffttxynfft [0,π) rad/muestra. Si especifica , los intervalos correspondientes son [0, /2] ciclos/tiempo unitario para ciclos pares y [0, /2) ciclos/tiempo unitario para impares .fsfsnfftfsnfft

  • — Devuelve la estimación a dos lados de la función de transferencia entre dos señales de entrada de valor real o de valores complejos, y .'twosided'xy En este caso, tiene filas y se calcula a lo largo del intervalotxynfft [0,2π) rad/muestra. Si especifica , el intervalo es [0, ) ciclos/tiempo unitario.fsfs

  • — Devuelve la estimación de dos lados centrada de la función de transferencia entre dos señales de entrada de valor real o de valores complejos, y .'centered'xy En este caso, tiene filas y se calcula a lo largo del intervalotxynfft (–π,π] rad/muestra para par ynfft (–π,π) rad/muestra para odd .nfft Si especifica , los intervalos correspondientes son (– /2, /2] ciclos/tiempo unitario para ciclos pares y (– /2, /2) ciclos/tiempo de unidad para impares .fsfsfsnfftfsfsnfft

Estimador de función de transferencia, especificado como o .'H1''H2'

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

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

Consulte para obtener más información.Función de transferencia

Argumentos de salida

contraer todo

Estimación de la función de transferencia, devuelta como vector, matriz o matriz tridimensional.

Frecuencias normalizadas, devueltas como un vector de columna de valor real.

Frecuencias cíclicas, devueltas como un vector de columna de valor real.

Más acerca de

contraer todo

Función de transferencia

La relación entre la entrada y la salida se modela mediante el lineal, invariable en el tiempo.xyfunción de transferenciatxy En el dominio de frecuencia, Y(f) = H(f)X(f).

  • Para un sistema de entrada única/salida única, el H1 estimación de la función de transferencia se da por

    H1(f)=Pyx(f)Pxx(f),

    Dónde Pyx es la densidad espectral de potencia cruzada de y , yxy Pxx es la densidad espectral de potencia de .x Esta estimación supone que el ruido no está correlacionado con la entrada del sistema.

    Para sistemas de entrada múltiple/salida múltiple (MIMO), el H1 estimador se convierte en

    H1(f)=PYX(f)PXX1(f)=[Py1x1(f)Py1x2(f)Py1xm(f)Py2x1(f)Py2x2(f)Py2xm(f)Pynx1(f)Pynx2(f)Pynxm(f)][Px1x1(f)Px1x2(f)Px1xm(f)Px2x1(f)Px2x2(f)Px2xm(f)Pxmx1(f)Pxmx2(f)Pxmxm(f)]1

    para entradas y salidas, donde:mn

    • Pyixk es la densidad espectral de potencia cruzada de la entrada y la salida.ki

    • Pxixk es la densidad espectral de potencia cruzada de las entradas th y th.ki

    Para dos entradas y dos salidas, el estimador es la matriz

    H1(f)=[Py1x1(f)Px2x2(f)Py1x2(f)Px2x1(f)Py1x2(f)Px1x1(f)Py1x1(f)Px1x2(f)Py2x1(f)Px2x2(f)Py2x2(f)Px2x1(f)Py2x2(f)Px1x1(f)Py2x1(f)Px1x2(f)]Px1x1(f)Px2x2(f)Px1x2(f)Px2x1(f).

  • Para un sistema de entrada única/salida única, el H2 estimación de la función de transferencia se da por

    H2(f)=Pyy(f)Pxy(f),

    Dónde Pyy es la densidad espectral de potencia de yy Pxy = P*yx es el conjugado complejo de la densidad espectral de potencia cruzada de y .xy Esta estimación supone que el ruido no está correlacionado con la salida del sistema.

    Para los sistemas MIMO, el H2 estimador está bien definido sólo para el mismo número de entradas y salidas: n = m. El estimador se convierte en

    H2(f)=PYY(f)PXY1(f)=[Py1y1(f)Py1y2(f)Py1yn(f)Py2y1(f)Py2y2(f)Py2yn(f)Pyny1(f)Pyny2(f)Pynyn(f)][Px1y1(f)Px1y2(f)Px1yn(f)Px2y1(f)Px2y2(f)Px2yn(f)Pxny1(f)Pxny2(f)Pxnyn(f)]1,

    Dónde:

    • Pyiyk es la densidad espectral de potencia cruzada de las salidas th y th.ki

    • Pxiyk es el conjugado complejo de la densidad espectral de potencia cruzada de la entrada y la salida.ik

Algoritmos

utiliza el método de periodograma promediado de Welch.tfestimate Consulte para obtener más información.pwelch

Referencias

[1] 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

| | |

Introducido antes de R2006a