⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 run.m

📁 一个能根据心电图信号产生音乐的matlab程序
💻 M
字号:
clear
%% step 1: create or load ECGData
% Situation 1: From ECGSYN
sfecg=256;
N=20;
Anoise=0;
hrmean=50;
hrstd=5;
lfhfratio=0.5;
sfint=256;
ti=[-70 -15 0 15 100];
ai=[1.2 -5 30 -7.5 0.75];
bi=[0.25 0.1 0.1 0.1 0.4];
[s, ipeaks] = ecgsyn(sfecg,N,Anoise,hrmean,hrstd,lfhfratio,sfint,ti,ai,bi);
% Situation 2: From Database (PTB Database)
% [s,sfecg]=ReadECGData('s0050lre',3);
% s=s/1000;
plot(s);

% setp 2: create heart music
y=[];
frecord=5000;  %Hz
NumPerTone=25;
duration=1/sfecg*NumPerTone;  %sec
t=0:1/frecord:duration;
ListenTime=10; %sec
IterNum=min(floor(length(s)/NumPerTone),floor(ListenTime/duration));

tones=[48 50 52 53 55 57 59 60 62 64 65 67 69 71 72 74 76 77 79 81 83];
      %                                           .  .  .  .  .  .  .
      % 1  2  3  4  5  6  7  1  2  3  4  5  6  7  1  2  3  4  5  6  7
      % `  `  `  `  `  `  `  

for i=1:IterNum
    i
    semitone=mean(s((i-1)*10+1:i*10));
%     all semitones
    semitone=60+round(semitone/0.1);
    ftone=semitone2ftone(semitone);
%     only do re mi fa si da
%     semitone=8+round(semitone/0.1); % 0mv == do(1)
%     ftone=semitone2ftone(tones(semitone));
    y=[y sin(2*pi*ftone*t)+0.4*sin(8*pi*ftone*t)+0.2*sin(16*pi*ftone*t)+0.1*sin(32*pi*ftone*t)]; % with harmonies
end

% save
wavwrite(y,frecord,8,'test.wav');

% play
wavplay(y,frecord,'async');
% dos(['start ','test.wav'])



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -