31信号处理

本章介绍Octave中可用的信号处理和快速傅立叶变换函数。使用计算快速傅立叶变换FFTWFFTPACK库,具体取决于Octave的构建方式。

 
: y = fft (x)
: y = fft (x, n)
: y = fft (x, n, dim)

计算的离散傅立叶变换x使用快速傅立叶变换(FFT)算法。

FFT是沿着数组的第一个非单例维度计算的。因此,如果x是矩阵,fft(x)计算的每列的FTx.

如果用两个自变量调用,n应为指定的元素数的整数x或一个emptymatrix来指定应忽略其值。如果n大于计算FFT的维度,则x调整大小并用零填充。否则,如果ni小于计算FFT的维度,则x被截断。

如果用三个自变量调用,dim是一个整数,指定执行FFT时所沿着的矩阵的尺寸。

详见: ifft, fft2, fftn, fftw.

 
: x = ifft (y)
: x = ifft (y, n)
: x = ifft (y, n, dim)

计算的离散傅立叶逆变换y使用快速傅立叶变换(FFT)算法。

逆FFT是沿着数组的第一个非单例维度计算的。因此,如果y是矩阵,ifft(y)计算每列的逆FFTy.

如果用两个自变量调用,n应为指定的元素数的整数y或一个emptymatrix来指定应忽略其值。如果n大于计算逆FFT的维度,则y调整大小并用零填充。否则,如果ni小于计算逆FFT的维度,则y被截断。

如果用三个自变量调用,dim是一个整数,指定执行逆FFT所沿的矩阵的维数。

详见: fft, ifft2, ifftn, fftw.

 
: B = fft2 (A)
: B = fft2 (A, m, n)

计算的二维离散傅立叶变换A使用快速傅立叶变换(FFT)算法。

可选参数mn可以用于指定的行数和列数A使用。如果其中任何一个大于的大小A, A调整大小并用零填充。

如果A是一个多维矩阵,每个二维子矩阵A单独处理。

详见: ifft2, fft, fftn, fftw.

 
: A = ifft2 (B)
: A = ifft2 (B, m, n)

计算的二维离散傅立叶逆变换B使用快速傅立叶变换(FFT)算法。

可选参数mn可以用于指定的行数和列数B使用。如果其中任何一个大于的大小B, B调整大小并用零填充。

如果B是一个多维矩阵,每个二维子矩阵B单独处理。

详见: fft2, ifft, ifftn, fftw.

 
: B = fftn (A)
: B = fftn (A, size)

计算的N维离散傅立叶变换A使用快速傅立叶变换(FFT)算法。

可选向量参数大小可以用于指定要使用的数组的维度。如果的元素大小小于的相应尺寸A,那么的尺寸A在执行FFT之前进行istuncated。否则,如果的元素大小大于相应的尺寸,则Aisresize并用零填充。

详见: ifftn, fft, fft2, fftw.

 
: A = ifftn (B)
: A = ifftn (B, size)

计算的逆N维离散傅立叶变换B使用快速傅立叶变换(FFT)算法。

可选向量参数大小可以用于指定要使用的数组的维度。如果的元素大小小于的相应尺寸B,那么的尺寸B在执行反向FFT之前进行istunculated。否则,如果的元素大小大于相应的尺寸,则Bisresize并用零填充。

详见: fftn, ifft, ifft2, fftw.

Octave使用FFTW库来执行FFT计算。当Octavestarts启动并初始化FFTW库,它们读取整个系统的文件(在Unix系统上,通常是/etc/fftw/wisdom)其中包含有助于加快FFT计算的信息。这些信息被称为智慧。整个系统的文件允许使用FFTW图书馆。

使用fftw返回和保存智慧的函数。使用与一起提供的工具FFTW库(fftw智慧在Unix系统上),您甚至可以将Octave生成的智慧添加到整个系统的智慧文件中。

 
: method = fftw ("planner")
: fftw ("planner", method)
: wisdom = fftw ("dwisdom")
: fftw ("dwisdom", wisdom)
: nthreads = fftw ("threads")
: fftw ("threads", nthreads)

管理FFTW智慧数据。

智慧数据可以用于显著加速FFT的计算,但在计算中意味着初始成本。当FFTW库被初始化,它们读取整个系统的智慧文件(通常在/etc/fftw/wisdom),允许智慧在应用程序之间共享,而不是Octave。或者fftw函数可以用来导入智慧。例如

智慧=fftw(“dwisdom”)

将保存Octave使用的现有智慧到字符串中智慧。然后可以将此字符串保存到文件中,并使用拯救加载命令。这种现有的智慧可以通过以下方式输入

fftw(“dwisdom”,智慧)

如果智慧是一根空的绳子,那么所用的智慧就被清除了。

在傅立叶变换的计算过程中,返回了进一步的智慧。这种智慧返回的方式也受到fftw作用有五种不同的治疗方式:

估计

指定不执行对特定计算的最佳方式的运行时测量,并使用简单的启发式方法来选择(可能是次优)计划。这种方法的优点是在生成计划时几乎没有开销,这适用于将计算一次的傅立叶变换。

测量

在这种情况下,会考虑执行转换的一系列算法,并根据它们的执行时间选择最佳算法。

病人

类似测量,但考虑了更广泛的算法。

详尽的

喜欢测量,但是考虑了可用于处理变换的所有可能的算法。

混合的

从于算法的运行时测量可能很昂贵,这是一个折衷方案,其中测量用于大小不超过8192的转换估计方法。

默认方法为估计。可以使用查询当前方法

方法=fftw(“规划师”)

或通过使用设置

fftw(“规划师”,方法)

请注意,重新启动Octave时,经过计算的智慧将丢失。但是,如果将智慧数据保存到如上所述的文件中,则可以重新加载智慧数据。保存的智慧文件不应在不同的平台上使用,因为它们不会有效率,并且失去了计算智慧的意义。

用于计算计划和执行转换的线程数可以通过设置

fftw(“线程”,NTHREADS)

请注意,Octave必须使用多线程编译FFTW支持此函数。默认情况下,当前进程可用的(逻辑)处理器数或3使用(以较小者为准)。

详见: fft, ifft, fft2, ifft2, fftn, ifftn.

 
: c = fftconv (x, y)
: c = fftconv (x, y, n)

使用FFT对两个向量进行卷积运算。

c=fftconv(x, y)返回长度等于的向量xy1.如果xy是两个多项式的系数向量,返回值是乘积多项式的有效向量。

计算通过调用函数使用FFTfftfilt.If可选参数n则使用N点FFT。

详见: 去卷积, 卷积和多项式相乘, 二维卷积.

 
: y = fftfilt (b, x)
: y = fftfilt (b, x, n)

滤器x带有FIR滤波器b使用FFT。

如果x是一个矩阵,过滤矩阵的每一列。

给定可选的第三自变量,n, fftfilt使用overlap-add方法进行筛选x具有b使用N点FFT。FFT大小必须是2的偶数幂,并且必须大于或等于的长度b。如果指定n如果不符合这些标准,则会自动调整为最接近的值。

详见: 滤器, 过滤器2.

 
: y = filter (b, a, x)
: [y, sf] = filter (b, a, x, si)
: [y, sf] = filter (b, a, x, [], dim)
: [y, sf] = filter (b, a, x, si, dim)

对数据应用一维数字滤波器x.

滤器返回以下线性不变时间微分方程的解:

N MSUM a(k+1)y(N-k)=总和b(k+1

其中N=长度(a)-1,M=长度(b)-1。结果是在的第一个非单体维度上计算的x或以上dim如果提供的话。

该方程的等效形式为:

N My(N)=-SUM c(k+1)y(N-k)+SUM d(k+1

其中c=a/a(1)和d=b/a(1。

如果第四个参数被提供时,它被视为系统的初始状态,最终状态返回为sf状态向量是长度等于最长系数向量的长度减1的列向量。如果则初始状态向量被设置为全零。

就Z变换而言,y是通过离散时间信号的结果x通过具有以下国家系统函数的系统:

M总和d(k+1)z^(-k)k=0H(z)=--------------------N 1+总和c(k+1

详见: 过滤器2, fftfilt, 数字滤波器频率响应.

 
: y = filter2 (b, x)
: y = filter2 (b, x, shape)

应用二维FIR滤波器bx.

如果参数形状如果指定了,则返回所需形状的数组。可能的值为:

满的

衬垫x滤波前所有边上都为零。

相同的

未加衬垫的x默认

有效的

修剪x过滤后,不包括边缘效果。

请注意,这只是卷积的一个变体,参数相反b旋转了180度。

详见: 二维卷积.

 
: [h, w] = freqz (b, a, n, "whole")
: [h, w] = freqz (b)
: [h, w] = freqz (b, a)
: [h, w] = freqz (b, a, n)
: h = freqz (b, a, w)
: [h, w] = freqz (…, Fs)
: freqz (…)

返回复频响应h的有理IIR滤波器,其分子和分母系数为ba分别地

响应评估在n角频率在0和2*pi之间。

输出值w是频率的向量。

如果a则假定分母为1(这对应于简单的FIR滤波器)。

如果n则假定值为512。对于最快的计算,n应该考虑到少量的小素数。

如果第四个参数,整体,则忽略在0和pi之间的频率下评估响应。

频率(b, a, w)

评估向量中特定频率下的响应w。的值w以弧度为单位测量。

[…]=freqz(…,Fs)

假设采样率,返回频率为Hz,而不是弧度Fs。如果您正在评估特定频率下的响应w,这些频率应以Hz而不是弧度为单位。

freqz(…)

绘制的幅度和相位响应h而不是归还它们。

详见: freqz_plot.

 
: freqz_plot (w, h)
: freqz_plot (w, h, freq_norm)

绘制的幅度和相位响应h.

如果可选频率_形式参数是正确的,频率向量w以归一化弧度为单位。如果频率_形式是假的,或者没有给出,那么w以赫兹为单位测量。

详见: 数字滤波器频率响应.

 
: y = sinc (x)

计算sinc函数。

返回值sin(pi*x)/(pi**x)。

 
: b = unwrap (x)
: b = unwrap (x, tol)
: b = unwrap (x, tol, dim)

通过适当地添加或减去2*pi的倍数来消除弧度相位,以消除大于tol.

tol默认为pi。

打开…的软件包将沿着维度工作dim如果dim未指定,则默认为第一个非单例维度。

打开…的软件包忽略所有非有限输入值(Inf、NaN、NA)。

 
: [a, b] = arch_fit (y, x, p, iter, gamma, a0, b0)

将ARCH回归模型拟合到时间序列y使用Engle原始ARCH论文中的scoringalgorithm。

型号为

y(t)=b(1)*x(t,1)+…+b(k)*x(t,k)+e(t),h(t)=a(1)+a(2)*e(t-1)^2+…+a(p+1)*e(t-p)^2

这里的e(t)N(0,h(t)),给定一个时间序列向量y最新t-1和(普通)回归矩阵x高达t。残差方差的回归顺序从</p>.

如果调用为arch_fit(y, k, </p>)带着积极的心态k,适合ARCH(k, </p>)过程,即用t-第行,共行x从给定

[1,y(t-1),…,y(t-k)]

可选地,可以指定迭代次数iter,更新因子伽玛,和初始值a0b0用于评分算法。

 
: y = arch_rnd (a, b, t)

模拟长度为ARCH的序列t具有AR系数b和CH系数a.

结果y(t)遵循模型

y(t)=b(1)+b(2)*y(t-1)+…+b(lb)*y(t-lb+1)+e(t),

这里的e(t)鉴于y最新t-1N(0,h(t))具有

h(t)=a(1)+a(2)*e(t-1)^2+…+a(la)*e(t-la+1)^2
 
: [pval, lm] = arch_test (y, x, p)

对于线性回归模型

y=x*b+e

针对CH的替代方案,对无条件异方差的零假设进行拉格朗日乘子(LM)检验(</p>).

也就是说,模型是

y(t)=b(1)*x(t,1)+…+b(k)*x(t,

鉴于y高达t-1x高达t,e(t) 是N(0,h(t))具有

h(t)=v+a(1)*e(t-1)^2+…+a(p)*e(t-p)^2,

而null为a(1)== … == a(p)== 0.

如果第二自变量是标量整数,k,在阶线性自回归模型中执行相同的测试k,即,与

[1,y(t-1),…,y(t-k)]

作为t-第行,共行x.

在零下,LM近似具有具有</p>自从度和pval是吗</p>-试验的值(1mus为LM处该分布的CDF)。

如果没有给出输出参数,则</p>-显示值。

 
: x = arma_rnd (a, b, v, t, n)

返回ARMA模型的仿真。

ARMA模型定义如下

x(n)=a(1)*x(n-1)+…+a(k)*x(n-k)+e(n)+b(1)*e(n-1)+…+b(l)*e(n-l)

这里的k是向量的长度a, l是向量的长度be是具有方差的高斯白噪声v。函数返回一个长度为的向量t.

可选参数n给出了假人的数量x()用于初始化,即长度序列t+n生成并且x(n1.t+n)返回。如果n省略,n使用=100。

 
: x = autoreg_matrix (y, k)

给定时间序列(向量)y,返回一个在第一列和第一列中包含1的矩阵k的滞后值y在其他列中。

换句话说,对于t> k,1.y(t1.y(t-k)]是结果的第六行。

所得到的矩阵可以用作自回归中的回归矩阵。

 
: c = bartlett (m)

返回长度为Bartlett(三角形)窗口的滤波器系数m.

关于Bartlett窗口的定义,参见例如a.V.Oppenheim&R.W.Schafer,离散时间信号处理.

 
: c = blackman (m)
: c = blackman (m, "periodic")
: c = blackman (m, "symmetric")

返回长度为的Blackman窗口的滤波器系数m.

如果可选参数周期性则返回窗口的周期形式。这相当于窗口的长度m+1,去掉最后一个系数。可选参数对称相当于不指定第二个参数。

关于Blackman窗口的定义,参见例如a.V.Oppenheim&R.W.Schafer,离散时间信号处理.

 
: y = detrend (x, p)

如果x是向量,去趋势(x, </p>)去除阶多项式的最佳拟合</p>根据数据x.

如果x是矩阵,去趋势(x, </p>)对中的每列执行相同操作x.

第二个参数</p>是可选的。如果未指定,则假定值为1。这对应于去除线性趋势。

多项式的阶数也可以作为字符串给出,在这种情况下</p>必须是其中之一常数(对应于</p>=0线性的(对应于</p>1.).

详见: 拟合.

 
: [d, dd] = diffpara (x, a, b)

返回估计器d对于积分时间序列的差分参数。

来自的频率[2*pi*a/t,2*pi*b/t]用于估计。如果b省略,间隔[2*pi/T,2*pi*a/T]使用。如果两者都有ba则省略a=0.5*sqrt(T)b=1.5*sqrt(T)使用,其中T是样本大小。如果x是一个矩阵,估计每列的差分参数。

上述区间中所有频率的估计量在dd.

的值d只是的意思dd.

参考资料:P.J.Brockwell&R.A.Davis。时间序列:理论与方法.施普林格1987年。

 
: [newphi, newv] = durbinlevinson (c, oldphi, oldv)

执行Durbin-Levinson算法的一个步骤。

向量c指定自协方差[gamma_0,…,gamma_t]从滞后0到t, oldphi指定基于的系数c(t-1) 以及oldv指定相应的错误。

如果oldphioldv省略了从1到的所有步骤t执行了算法的。

 
: y = fftshift (x)
: y = fftshift (x, dim)

执行向量的移位x,用于fftifft函数,以便将频率0移动到向量或矩阵的中心。

如果x是的向量N元素对应于N时间采样间隔dt然后fft(x))对应于频率

f=[-(ceil((N-1)/2):-1:1),0,(1:楼板((N-1)/2))]*df

这里的df=1/(N*dt).

如果x是一个矩阵,行和列也是如此。如果x是一个数组,那么沿着每个维度都是一样的。

可选dim自变量可以用来限制排列发生的维度。

详见: ifftshift.

 
: x = ifftshift (y)
: x = ifftshift (y, dim)

撤消的操作fftshift作用

长度均匀x, fftshift它本身是相反的,但奇怪的长度略有不同。

详见: fftshift.

 
: fd = fractdiff (x, d)

计算分数差(1-L)^d x这里的L表示滞后运算符,并且d大于-1。

 
: c = hamming (m)
: c = hamming (m, "periodic")
: c = hamming (m, "symmetric")

返回长度为的Hamming窗口的滤波器系数m.

如果可选参数周期性则返回窗口的周期形式。这相当于窗口的长度m+1,去掉最后一个系数。可选参数对称相当于不指定第二个参数。

关于Hamming窗口的定义,参见例如a.V.Oppenheim&R.W.Schafer,离散时间信号处理.

 
: c = hanning (m)
: c = hanning (m, "periodic")
: c = hanning (m, "symmetric")

返回长度为Hanning窗口的滤波器系数m.

如果可选参数周期性则返回窗口的周期形式。这相当于窗口的长度m+1,去掉最后一个系数。可选参数对称相当于不指定第二个参数。

关于Hanning窗口的定义,参见例如a.V.Oppenheim&R.W.Schafer,离散时间信号处理.

 
: H = hurst (x)

样本赫斯特参数的估计x通过重新缩放的范围统计。

如果x是一个矩阵,参数是为每列估计的。

 
: pp = pchip (x, y)
: yi = pchip (x, y, xi)

返回点的分段三次Hermite插值多项式(pchip)xy.

如果使用两个参数调用,则返回分段多项式pp可以与一起使用ppval以在特定点处多项式求值。

当用第三输入自变量调用时,pchip在点处多项式求值xi。第三种调用形式等效于ppval(pchip(x, y), xi).

变量x必须是长度的严格单调向量(递增或递减)n.

y可以是向量或数组。如果y是一个向量,那么它的长度必须相同nx如果y是一个大小等于的数组y必须具有表单[s1, s2, …, sk, n]数组内部被重塑为矩阵,其中前导维度从s1 * s2* … * sk然后将该矩阵的每一行分别处理。注意,这与完全相反interp1但已经结束了MATLAB兼容性。

详见: 样条曲线, ppval, mkpp, unmkpp.

 
: [Pxx, w] = periodogram (x)
: [Pxx, w] = periodogram (x, win)
: [Pxx, w] = periodogram (x, win, nfft)
: [Pxx, f] = periodogram (x, win, nfft, Fs)
: [Pxx, f] = periodogram (…, "range")
: periodogram (…)

返回的周期图(功率谱密度)x.

可能的输入包括:

x

数据向量。如果x是实值的,则估计单边频谱。如果x是复值的,或者范围指定两面性,估计了全谱。

窗口权重数据。若窗口为空或未指定,则使用默认的矩形窗口。否则,窗口将应用于信号(x .* )在计算周期图之前。windowdata必须是长度与相同的向量x.

非规则采样快速傅里叶变换

频率仓的数量。默认值为256,或比的长度大2的次幂x(max(256,2.^ nextpow2(长度(x)))). 如果非规则采样快速傅里叶变换大于输入的长度,则x将被零填充到的长度非规则采样快速傅里叶变换.

Fs

采样率。默认值为1。

范围

光谱范围。单面从[0:nfft/2+1]计算光谱。两面性根据[0:nft-1]计算光谱。

可选的第二个输出w是归一化的角频率。对于单侧计算w在[0,pi]范围内,如果非规则采样快速傅里叶变换是偶数并且[0,pi)如果非规则采样快速傅里叶变换很奇怪。类似地,对于双侧计算w在[0,2*pi]或[0,2*pi的范围内),取决于非规则采样快速傅里叶变换.

如果指定了采样频率,Fs,然后输出频率f将在[0,Fs/2] 或者[0,Fs/2) 用于单侧计算。对于双侧计算,范围将是[0,Fs).

当调用时没有输出,周期图立即绘制在当前图形窗口中。

详见: fft.

 
: y = sinetone (freq, rate, sec, ampl)

返回频率的正弦freq长度为采样率下的秒数速度和振幅ampl.

参数freqampl可以是共同大小的向量。

默认值为速度= 8000, =1,以及ampl= 64.

详见: 正弦波.

 
: y = sinewave (m, n, d)

返回m-元素向量-第th个元素从给定sin(2*pi*(+d1.n).

的默认值d为0,为的默认值nm.

详见: 肌腱.

 
: sde = spectral_adf (c)
: sde = spectral_adf (c, win)
: sde = spectral_adf (c, win, b)

返回给定自协方差向量的谱密度估计器c,窗口名称,和带宽,b.

窗口名称(例如。,三角形长方形用于搜索名为的函数_lw.

如果则使用三角形窗口。

如果b省略,1/sqrt(长度(x))使用。

详见: spectral-xdf.

 
: sde = spectral_xdf (x)
: sde = spectral_xdf (x, win)
: sde = spectral_xdf (x, win, b)

返回给定数据向量的谱密度估计器x,窗口名称,和带宽,b.

窗口名称(例如。,三角形长方形用于搜索名为_sw.

如果则使用三角形窗口。

如果b省略,1/sqrt(长度(x))使用。

详见: spectral_adf.

 
: savg = spencer (x)

返回Spencer每列的15点移动平均值x.

 
: y = stft (x)
: y = stft (x, win_size)
: y = stft (x, win_size, inc)
: y = stft (x, win_size, inc, num_coef)
: y = stft (x, win_size, inc, num_coef, win_type)
: [y, c] = stft (…)

计算向量的短时傅立叶变换x具有num_coef通过应用的窗口win_size数据点和增量股份有限公司点。

在计算傅立叶变换之前,将应用以下窗口之一:

汉宁

win_type=1

hamming

win_type=2

长方形

win_type=3

窗口名称可以作为字符串传递,也可以通过win_type数字

以下默认值用于未指定的参数:win_size= 80, 股份有限公司= 24, num_coef=64,以及win_type1.

y=stft(x, …)根据返回傅立叶系数的绝对值num_coef正频率。

[y, c]=stft(x, …)返回整个STFT矩阵y和一个3元素向量c包含窗口大小、增量和窗口类型,这是合成作用

详见: 合成.

 
: x = synthesis (y, c)

根据信号的短时傅立叶变换计算信号y和a3元素向量c指定窗口大小、增量和窗口类型。

yc可以通过导出

[y, c]=stft(x, ...)

详见: stft.

 
: [a, v] = yulewalker (c)

在给定向量的情况下,用Yule-Worker估计拟合AR(p)-模型c自协变量[gamma_0,…,gamma_p].

返回AR系数,a,以及白噪声的方差,v.


版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号