我正在做一個需要超聲波脈衝速度(UPV)的論文。 UPV很容易通過機器獲得,但我們獲得的數據沒有UPV,所以我們有責任手動獲取。獲取超聲波脈衝速度的延遲/滯後matlab
本質上在數據中我們有2個通道,一個用於發射器換能器,另一個用於接收器換能器。
我們需要從發射器發出的波形發出的時間以及到達接收器的時間。
使用matlab,我試過finddelay
和xcorr
,但不完全得到正確的結果。
這是我想得到的觀點的圖片。情節是
所以我想找到的圖片,但用MATLAB的幫助下,兩個點的發射器(藍色)和接收器(紅色)。這兩者將確定時間,並進一步確定UPV。 我是一個相對較新的MATLAB用戶,所以你的幫助將非常有幫助。
這是我曾嘗試
[cc, lags] = xcorr(signal1,signal2);
d2 = -(lags(cc == max(cc)))/Fs;
@xenoclast您好代碼!到目前爲止,我使用的代碼是這些。
close all
clc
Fs = input('input Fs = ');
T = 1/Fs;
L = input('input L = ');
t = (0:L-1)*T;
time = transpose(t);
i = input('input number of steploads = ');
% construct test sequences
%dataupv is the signal1 & datathesis is the signal2
for m=1:i
y1 = (dataupv(:,m) - mean(dataupv(:,m)))/std(dataupv(:,m));
y2 = (datathesis(:,m) - mean(datathesis(:,m)))/std(datathesis(:,m));
offset = 166;
tt = time;
% correlate the two sequences
[cc, lags] = xcorr(y2, y1,);
% find the in4dex of the maximum
[maxval, maxI] = max(cc);
[minval, minI] = min(cc);
% use that index to obtain the lag in samples
lagsamples(m,1) = lags(maxI);
lagsamples2(m,1) = lags(minI);
% plot again without timebase to verify visually
end
由此產生的數值與我目視檢查海浪時的70個樣本相比較。滯後導致了244,但在視覺上它應該是176這裏是數據(也有19套的數據,但我只用了1列)https://www.dropbox.com/s/ng5uq8f7oyap0tq/datatrans-dec-2014.xlsx?dl=0https://www.dropbox.com/s/1x7en0x7elnbg42/datarec-dec-2014.xlsx?dl=0
本質上,我只是試圖找到信號開始時的點。 – ronster
歡迎來到本站!如果在您的問題中添加您迄今爲止已嘗試的代碼和結果,將會有所幫助 - 這有助於確定答案。對於我的錢來說,儘管'xcorr'是要走的路 - 這兩個信號將會很好地相關 - 所以問題可能在於實現。相關輸出中峯值的指數點需要被兩個輸入序列的長度相關的量所抵消,如果您還沒有對此進行更正,那麼很可能您的結果是令人滿意的。 – xenoclast
感謝您的關注! 我一直在調查此代碼: [cc,lags] = xcorr(signal1,signal2); (滯後(cc == max(cc)))/ Fs; 雖然我不確定上面的代碼是否正確 ,但結果卻比預期的要大,所以即時猜測是錯誤的。 這將是偉大的,如果你能指導我的步驟:) – ronster