成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡單的模擬膝關節振動信號(VAG)分析(MATLAB)

發布于 2025-4-11 00:52
瀏覽
0收藏

目標:

  • 區分正常與病理性膝關節VAG信號:通過模擬信號生成、濾波、峰值檢測與時頻分析,判斷信號是否異常。
  • 關鍵指標:基于濾波后信號的峰值數量(>30則判定為異常)。

模塊:

(1) 信號生成

  • 正常信號:vag_normal = sin(2*pi*50*t) + 0.2*randn(size(t))
  • 設計意圖:50Hz正弦波模擬正常關節振動,疊加弱噪聲(標準差0.2)。
  • 病理性信號:vag_pathology = sin(2*pi*50*t) + 1.0*sin(2*pi*120*t) + 0.7*randn(size(t))
  • 設計意圖:在50Hz基礎上添加120Hz高頻成分(幅度1.0)和強噪聲(標準差0.7),模擬病理特征。

(2) 濾波設計

  • 濾波器類型:3階巴特沃斯帶通濾波器(20-250Hz)。
  • 作用:保留VAG信號主要頻段(20-250Hz),抑制低頻肌電干擾和高頻噪聲。
  • 實現:butter(3, [20 250]/(fs/2), 'bandpass') + filtfilt(零相位濾波)。
  • 優點:filtfilt消除相位失真,確保峰值時間對齊。

(3) 峰值檢測

  • 正常信號參數:MinPeakHeight=0.5, MinPeakDistance=fs/20(50ms間隔)。
  • 病理性信號參數:MinPeakHeight=0.3, MinPeakDistance=fs/50(20ms間隔)。
  • 設計意圖:病理性信號預期有更多密集高頻峰值,降低高度閾值和最小間隔以捕獲更多峰值。

(4) 異常判斷

  • 閾值:peak_threshold = 30(總峰值數 >30 判定為異常)。
  • 邏輯驗證:正常信號預期峰值較少,病理性信號因高頻成分和噪聲導致峰值增多。

% Define Sampling Frequency and Time Vector
fs = 1000; % Sampling frequency in Hz
duration = 5; % Duration of signal in seconds
t = 0:1/fs:duration-1/fs; % Time vector

% Simulate Normal and Pathological VAG Signals
vag_normal = sin(2*pi*50*t) + 0.2*randn(size(t)); % Normal VAG: 50 Hz with noise
vag_pathology = sin(2*pi*50*t) + 1.0*sin(2*pi*120*t) + 0.7*randn(size(t)); % Pathological: 50 Hz + 120 Hz with increased amplitude


% Bandpass Filter Design (20-250 Hz)
[b, a] = butter(3, [20 250]/(fs/2), 'bandpass'); % 3rd order Butterworth bandpass filter

% Apply Bandpass Filter
vag_normal_filtered = filtfilt(b, a, vag_normal); % Filter normal signal
vag_pathology_filtered = filtfilt(b, a, vag_pathology); % Filter pathological signal


% Detect Peaks in Filtered Signals
% Adjust parameters to detect more peaks in pathological signal
[peaks_normal, locs_normal] = findpeaks(vag_normal_filtered, 'MinPeakHeight', 0.5, 'MinPeakDistance', fs/20);
[peaks_pathology, locs_pathology] = findpeaks(vag_pathology_filtered, 'MinPeakHeight', 0.3, 'MinPeakDistance', fs/50); % Lower height, closer peaks

% Define Abnormality Detection Threshold
peak_threshold = 30; % Number of peaks threshold for abnormal detection


% Abnormality Detection Logic (Based on Filtered Signals)
is_abnormal_normal = length(peaks_normal) > peak_threshold; % True if abnormal
is_abnormal_pathology = length(peaks_pathology) > peak_threshold; % True if abnormal


% Generate Abnormality Status Strings
normal_status = 'No Detection'; % Default for normal signal
if is_abnormal_normal
    normal_status = 'Yes Detection';
end


pathological_status = 'No Detection'; % Default for pathological signal
if is_abnormal_pathology
    pathological_status = 'Yes Detection';
end


% Visualization
figure('Name', 'Knee Joint VAG Signal Analysis', 'NumberTitle', 'off');


% Plot 1: Original Normal Signal
subplot(4, 2, 1);
plot(t, vag_normal);
xlabel('Time (s)');
ylabel('Amplitude');
title('Original Normal VAG Signal');
grid on;


% Plot 2: Original Pathological Signal
subplot(4, 2, 2);
plot(t, vag_pathology);
xlabel('Time (s)');
ylabel('Amplitude');
title('Original Pathological VAG Signal');
grid on;


% Plot 3: Filtered Normal Signal with Detected Peaks
subplot(4, 2, 3);
plot(t, vag_normal_filtered);
hold on;
plot(locs_normal/fs, peaks_normal, 'ro'); % Mark peaks
xlabel('Time (s)');
ylabel('Amplitude');
title('Filtered Normal VAG Signal with Peaks');
grid on;


% Plot 4: Filtered Pathological Signal with Detected Peaks
subplot(4, 2, 4);
plot(t, vag_pathology_filtered);
hold on;
plot(locs_pathology/fs, peaks_pathology, 'ro'); % Mark peaks
xlabel('Time (s)');
ylabel('Amplitude');
title('Filtered Pathological VAG Signal with Peaks');
grid on;


% Plot 5: Spectrogram of Filtered Normal Signal
subplot(4, 2, 5);
spectrogram(vag_normal_filtered, 256, 200, 512, fs, 'yaxis');
title('Spectrogram of Filtered Normal VAG Signal');
xlabel('Time (s)');
ylabel('Frequency (Hz)');
colorbar;


% Plot 6: Spectrogram of Filtered Pathological Signal
subplot(4, 2, 6);
spectrogram(vag_pathology_filtered, 256, 200, 512, fs, 'yaxis');
title('Spectrogram of Filtered Pathological VAG Signal');
xlabel('Time (s)');
ylabel('Frequency (Hz)');
colorbar;


% Plot 7: Normal Signal Analysis Summary
subplot(4, 2, 7);
text(0.1, 0.5, {
    'Normal VAG Signal Analysis Summary:', ...
    ['Number of Peaks Detected: ', num2str(length(peaks_normal))], ...
    ['Abnormal Detection: ', normal_status]}, ...
    'FontSize', 10);
axis off;


% Plot 8: Pathological Signal Analysis Summary
subplot(4, 2, 8);
text(0.1, 0.5, {
    'Pathological VAG Signal Analysis Summary:', ...
    ['Number of Peaks Detected: ', num2str(length(peaks_pathology))], ...
    ['Abnormal Detection: ', pathological_status]}, ...
    'FontSize', 10);
axis off;


% Display Summary in Command Window
disp('---- VAG Signal Analysis Summary ----');
disp(['Normal Signal - Peaks Detected: ', num2str(length(peaks_normal)), ' -> Abnormal Detection: ', normal_status]);
disp(['Pathological Signal - Peaks Detected: ', num2str(length(peaks_pathology)), ' -> Abnormal Detection: ', pathological_status]);

Normal Signal - Peaks Detected: 72 -> Abnormal Detection: Yes Detection

Pathological Signal - Peaks Detected: 153 -> Abnormal Detection: Yes Detection

簡單的模擬膝關節振動信號(VAG)分析(MATLAB)-AI.x社區圖片

? 本文轉載自??高斯的手稿??

收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 国产成人综合在线 | 99精品欧美一区二区三区综合在线 | 日本一道本视频 | 精品久久久久久久 | 亚洲男人天堂 | 一级黄色播放 | 小草久久久久久久久爱六 | 国产一区不卡 | 欧美日韩在线免费观看 | 欧美日韩国产一区二区三区 | 亚洲精品在线看 | 午夜精品久久久久久不卡欧美一级 | 黄色电影在线免费观看 | 国产一区二区精品在线 | 成人av片在线观看 | 日日噜噜夜夜爽爽狠狠 | 久久久久精 | 日日操夜夜操天天操 | 国产在线一区二区三区 | 神马久久av| 欧美亚洲高清 | 欧美日韩a | 日日久 | 日韩精品1区2区3区 爱爱综合网 | 免费成人在线网站 | 日韩视频在线一区二区 | 欧美二区在线 | 国内自拍偷拍视频 | 精品国产一级 | 亚洲国产精品久久久 | 羞视频在线观看 | 欧美中文字幕在线观看 | 亚洲欧美在线视频 | 国产成人99久久亚洲综合精品 | 91久久久久久久久久久 | 中文字幕一区二区三区在线观看 | 日韩欧美一级精品久久 | 午夜亚洲 | 国产乱码精品一区二区三区五月婷 | 久久机热 | 国产精品综合 |