用法:
cusignal.convolution.correlate.correlate(in1, in2, mode='full', method='auto')
Cross-correlate 兩個 N 維數組。
Cross-correlate
in1
和in2
,輸出大小由mode
參數確定。- in1:array_like
第一個輸入。
- in2:array_like
第二輸入。應該具有與
in1
相同的維度數。- mode:str {‘full’, ‘valid’, ‘same’},可選
指示輸出大小的字符串:
full
輸出是輸入的完全離散線性互相關。 (默認)
valid
輸出僅包含那些不依賴零填充的元素。在‘valid’ 模式中,
in1
或in2
在每個維度上必須至少與另一個一樣大。same
輸出與
in1
大小相同,以 ‘full’ 輸出為中心。
- method:str {‘auto’, ‘direct’, ‘fft’},可選
一個字符串,指示使用哪種方法來計算相關性。
direct
相關性由總和(相關性的定義)直接確定。
fft
快速傅立葉變換用於更快地執行相關(僅適用於數值數組。)
auto
根據更快的估計自動選擇直接或傅立葉方法(默認)。有關更多詳細信息,請參閱
convolve
注釋。
- correlate:數組
一個 N 維數組,包含
in1
與in2
的離散線性互相關的子集。
參數:
返回:
注意:
兩個d-dimensional 數組 x 和 y 的相關性 z 定義為:
z[...,k,...] = sum[..., i_l, ...] x[..., i_l,...] * conj(y[..., i_l - k,...])
這樣,如果 x 和 y 是一維數組並且
z = correlate(x, y, 'full')
那麽對於
其中
x
、 的長度,當 m 超出 y 範圍時, 為 0。 是method='fft'
僅適用於數值數組,因為它依賴於fftconvolve
。在某些情況下(即對象數組或舍入整數可能會丟失精度),始終使用method='direct'
。例子:
使用互相關實現匹配濾波器,以恢複通過噪聲通道的信號。
>>> import cusignal >>> import cupy as cp >>> sig = cp.repeat(cp.array([0., 1., 1., 0., 1., 0., 0., 1.]), 128) >>> sig_noise = sig + cp.random.randn(len(sig)) >>> corr = cusignal.correlate(sig_noise, cp.ones(128), mode='same') / 128
>>> import matplotlib.pyplot as plt >>> clock = cp.arange(64, len(sig), 128) >>> fig, (ax_orig, ax_noise, ax_corr) = plt.subplots(3, 1, sharex=True) >>> ax_orig.plot(cp.asnumpy(sig)) >>> ax_orig.plot(cp.asnumpy(clock), cp.asnumpy(sig[clock]), 'ro') >>> ax_orig.set_title('Original signal') >>> ax_noise.plot(cp.asnumpy(sig_noise)) >>> ax_noise.set_title('Signal with noise') >>> ax_corr.plot(cp.asnumpy(corr)) >>> ax_corr.plot(cp.asnumpy(clock), cp.asnumpy(corr[clock]), 'ro') >>> ax_corr.axhline(0.5, ls=':') >>> ax_corr.set_title('Cross-correlated with rectangular pulse') >>> ax_orig.margins(0, 0.1) >>> fig.tight_layout() >>> fig.show()
相關用法
- Python cusignal.convolution.convolve.convolve2d用法及代碼示例
- Python cusignal.convolution.convolve.fftconvolve用法及代碼示例
- Python cusignal.convolution.convolve.convolve1d3o用法及代碼示例
- Python cusignal.convolution.convolve.convolve1d2o用法及代碼示例
- Python cusignal.convolution.convolve.choose_conv_method用法及代碼示例
- Python cusignal.convolution.convolve.convolve用法及代碼示例
- Python cusignal.windows.windows.hann用法及代碼示例
- Python cusignal.windows.windows.general_gaussian用法及代碼示例
- Python cusignal.waveforms.waveforms.chirp用法及代碼示例
- Python cusignal.windows.windows.gaussian用法及代碼示例
- Python cusignal.windows.windows.hamming用法及代碼示例
- Python cusignal.windows.windows.get_window用法及代碼示例
- Python cusignal.waveforms.waveforms.gausspulse用法及代碼示例
- Python cusignal.peak_finding.peak_finding.argrelmin用法及代碼示例
- Python cusignal.windows.windows.bartlett用法及代碼示例
- Python cusignal.spectral_analysis.spectral.welch用法及代碼示例
- Python cusignal.windows.windows.chebwin用法及代碼示例
- Python cusignal.windows.windows.general_cosine用法及代碼示例
- Python cusignal.peak_finding.peak_finding.argrelextrema用法及代碼示例
- Python cusignal.filtering.resample.resample_poly用法及代碼示例
- Python cusignal.waveforms.waveforms.unit_impulse用法及代碼示例
- Python cusignal.spectral_analysis.spectral.spectrogram用法及代碼示例
- Python cusignal.windows.windows.tukey用法及代碼示例
- Python cusignal.waveforms.waveforms.square用法及代碼示例
- Python cusignal.windows.windows.blackman用法及代碼示例
注:本文由純淨天空篩選整理自rapids.ai大神的英文原創作品 cusignal.convolution.correlate.correlate。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。