当前位置: 首页 > news >正文

怎样建设营销型网站潍坊网站制作江门公司

怎样建设营销型网站,潍坊网站制作江门公司,简易网站建设,商业网站基于IMAGE法的房间回响模型创建、C代码实现、matlab仿真1.模型简介 \qquad在处理声音信号时#xff0c;我们要对信号先进行采集。那么我们就必须要有#xff0c;一个发出声音的声源#xff0c;一个进行声音采集的传感器。并且这两者一般都位于房间之中#xff0c;处于房间内…基于IMAGE法的房间回响模型创建、C代码实现、matlab仿真 1.模型简介 \qquad在处理声音信号时我们要对信号先进行采集。那么我们就必须要有一个发出声音的声源一个进行声音采集的传感器。并且这两者一般都位于房间之中处于房间内就不可避免的会有声音的回响那么声源发出的信号和传感器实际接受的信号就会有一定差别。我们就利用计算机建立这么一个房间模型来模拟传感器在一个会有声音回响的房间中接收声源信号的情景。 \qquad基于IMAGE法的房间回响模型的建立有两个假设条件一是我们假设房间是具有规则的几何特征二是声音在墙面的反射符合镜面反射原理。 \qquad这里我们不对IMAGE法的原理做介绍有需要的小伙伴可以参考梁瑞宇老师的《语音信号处理 C版》的273面。 2.C代码实现 运行环境windows10Visual Studio 2019 函数功能返回房间回响模型的单位脉冲信号响应 参数说明fs为采样率mic为传感器位置n为虚拟声源个数r为反射系数rm为房间大小src为声源位置 \qquad下面代码是源文件内容我们设计一个长6米宽3米高3米的房间房间长为x轴宽为y轴高为z轴整个房间处于三维坐标系的第一卦限则房间大小rm{6,3,3}声源位置src{ 4,1,1.5 }传感器位置mic { 1,1.5,1 }墙壁的发射系数为r0.4传感器的采样频率fs44100虚拟源个数为n5。以上的数据都是可在源文件的主函数中改动。主函数如下 #includeiostream #includevector #include stdio.h #includefstream #includef1.h using namespace std;int main() {int i;//fs为采样率mic为传感器位置n为虚拟声源个数r为反射系数rm为房间大小src为声源位置int fs 44100;vectordoublemic { 1,1.5,1 };int n 5;double r 0.4;vectordoublerm { 6,3,3 };vectordoublesrc { 4,1,1.5 };//函数返回回响模型的模拟传感器的脉冲信号vectordoubleh;h rir(fs, mic, n, r, rm, src);ofstream file;file.open(demo.csv);for (i 0; i h.size(); i){file h[i] endl;}file.close();return 0; } 头文件中f1.h的代码如下 #includeiostream #includevector using namespace std;//函数返回回响模型的模拟传感器的脉冲信号 //fs为采样率mic为传感器位置n为虚拟声源个数r为反射系数rm为房间大小src为声源位置 vectordoublerir(int fs, vectordoublemic, int n, double r,vectordoublerm, vectordoublesrc);头文件中“f1.cpp”的代码如下 #includeiostream #includevector #includecmath #includealgorithm #includestring using namespace std;vectordoublerir(int fs, vectordoublemic, int n, double r, vectordoublerm, vectordoublesrc) {vectorintnn;int i;for (i -n; i n; i){nn.push_back(i);}vectordoublerms, srcs, xi, yj, zk;for (i 0; i nn.size(); i){rms.push_back(nn[i] 0.5 - 0.5 * pow(-1, nn[i]));srcs.push_back(pow(-1, nn[i]));}for (i 0; i nn.size(); i){xi.push_back(srcs[i] * src[0] rms[i] * rm[0] - mic[0]);yj.push_back(srcs[i] * src[1] rms[i] * rm[1] - mic[1]);zk.push_back(srcs[i] * src[2] rms[i] * rm[2] - mic[2]);}typedef vectorvectorvectordouble vector3;vector3 d(nn.size(), vectorvectordouble(nn.size(), vectordouble(nn.size(), 0)));vector3 li(nn.size(), vectorvectordouble(nn.size(), vectordouble(nn.size(), 0)));vector3 lj(nn.size(), vectorvectordouble(nn.size(), vectordouble(nn.size(), 0)));vector3 lk(nn.size(), vectorvectordouble(nn.size(), vectordouble(nn.size(), 0)));vector3 time(nn.size(), vectorvectordouble(nn.size(), vectordouble(nn.size(), 0)));vector3 c(nn.size(), vectorvectordouble(nn.size(), vectordouble(nn.size(), 0)));vector3 e(nn.size(), vectorvectordouble(nn.size(), vectordouble(nn.size(), 0)));int j, k;for(i0;inn.size();i)for (j 0; j nn.size(); j)for (k 0; k nn.size(); k){li[i][j][k] xi[i];lj[i][j][k] yj[j];lk[i][j][k] zk[k];}for (i 0; i nn.size(); i)for (j 0; j nn.size(); j)for (k 0; k nn.size(); k){d[i][j][k] sqrt(li[i][j][k]* li[i][j][k] lj[i][j][k]* lj[i][j][k] lk[i][j][k]* lk[i][j][k]);double tem fs * d[i][j][k] / 343;int temi;if (tem - int(tem) 0.5)temi int(tem) 1;else temi int(tem);time[i][j][k] temi 1;c[i][j][k] pow(r, abs(i) abs(j) abs(k));e[i][j][k] c[i][j][k] / d[i][j][k];}vectorint tempT;for (i 0; i nn.size(); i)for (j 0; j nn.size(); j)for (k 0; k nn.size(); k){tempT.push_back(time[i][j][k]);}int maxLength *max_element(tempT.begin(), tempT.end());vectordoubleh(maxLength, 0);for (i 0; i nn.size(); i)for (j 0; j nn.size(); j)for (k 0; k nn.size(); k){h[time[i][j][k] - 1] e[i][j][k];}return h; }\qquad在设定好参数运行之后我们会得到一个“demo.csv”的文件这就是传感器在混响的房间中接收到的信号也就是房间回响模型的单位脉冲响应。全部的代码和运行得到的文件可以参考我的GitHub链接Room-Impulse-Response 3.matlab仿真 \qquad在得到房间的脉冲响应之后假设声源出播放的是另外的声音那么我们仅仅是对上一步的脉冲响应和这段声音信号进行卷积注意它们两者的采样率要相同我们利用matlab进行实现。 运行环境windows10matlab2020a [y,fs] audioread(song.wav);%脉冲响应波形图 subplot(321); x1 ((0:1:length(h)-1)/fs); y1 h; plot(x1,y1); xlabel(时间/s); ylabel(幅值); title(脉冲响应波形图); grid on;%脉冲响应幅频图 subplot(322); x2 ((0:1:length(h)-1)*fs/length(h)); y2 fft(h); y2_m abs(y2); plot(x2,y2_m); xlabel(频率/HZ); ylabel(幅值); title(脉冲响应幅频图); grid on;%原始信号波形图 subplot(323); x3 ((0:1:length(y)-1)/fs); y3 y; plot(x3,y3); xlabel(时间/s); ylabel(幅值); title(原始信号波形图); grid on;%原始信号幅频图 subplot(324); x4 ((0:1:length(y)-1)*fs/length(y)); y4 fft(y); y4_m abs(y4); plot(x4,y4_m); xlabel(频率/HZ); ylabel(幅值); title(原始信号幅频图); grid on;%卷积信号波形图 subplot(325); y5 conv(y,h); x5 ((0:1:length(y5)-1)/fs); plot(x5,y5); xlabel(时间/s); ylabel(幅值); title(卷积信号波形图); grid on;%卷积信号幅频图 subplot(326); x6 ((0:1:length(y5)-1)*fs/length(y5)); y6 fft(y5); y6_m abs(y6); plot(x6,y6_m); xlabel(频率/HZ); ylabel(幅值); title(卷积信号幅频图); grid on;%播放原始信号声音 sound(y,fs);pause(10);%播放在房间中采集到的信号 sound(y5,fs);运行程序我们可以得到 全部的matlab仿真文件可以查看我的GitHub链接Room-Impulse-Response-matlab
http://www.sadfv.cn/news/144574/

相关文章:

  • 做网站自己上传电影要多大服务器百度怎样建立一个网站
  • 上海网站建设排名公司北京制作网站多少钱
  • 网站导航背景 蓝色wordpress+屏蔽ip插件
  • 企业电子商务网站建设规划方案大气集团网站
  • 有哪些做封面的网站网站开发对比特点
  • 网站设置了权限个人网站如何制作教程
  • 友情链接添加在网站中有什么用农林牧渔行业网站建设
  • 实训课建设网站步骤网页升级维护
  • 做网站费乐平市网站建设
  • 如何给网站做高质量外链中国旺旺(00151) 股吧
  • 矿区网站建设纹绣培训班一般价格多少
  • 域名备案网站服务内容建设网站哪个比较好
  • 临沂网站建设报价设计的很好的网站
  • ps做网站页面步骤专业网站建设分类标准
  • 折扣网站怎么做设计制作图片
  • 做网站前提需要什么有个新网站能提供
  • 东莞培训网站建设建站平台外贸
  • 凡科建站是不是关闭企业网站wordpress装修模板
  • 网站icp备案号查询八百客crm系统登录入口
  • 漳州平台网站建设西部数码WordPress开启伪静态
  • 怎么看网站哪个公司做的国家高新技术企业有什么好处
  • 哪个网站收录排名好网站建设海报图片
  • 网站搭建谷歌seo铜陵建设行业培训学校网站
  • 云南网站开发网络公司前10合肥网站设计品牌
  • 网站开发的职业分析工作室建设基础
  • 网站在百度无法验证码怎么办网站建设教学视频教程
  • 黄陂网站建设wordpress 页面模板 怎么用
  • 网站策划方案范文wordpress插件申请软著
  • 做网站用什么软件做阿里万网怎么做网站
  • 惠州网站建设乐云seo在线制作网站经营许可备案号