资源简介
对于做室内声信号处理很相关很通用的工具包,可实现室内信号脉冲响应的模拟
代码片段和文件信息
function [timeHH]=roomsimove(room_sensor_configsource_configfs)
% ROOMSIMOVE Compute shoebox room filters for a moving source described
% by its position at discrete instants obtained from a configuration file
%
% [timeHH]=roomsimove(room_sensor_configsource_configfs)
%
% Input:
% room_sensor_config: room/sensor configuration file
% source_config: source movements configuration file
% fs: sampling frequency in Hz
%
% Output:
% time: n_samples x 1 vector listing the sampling instants
% HH: H_length x channels x n_samples matrix containing the associated filters
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright 2008 Emmanuel Vincent
% This software is distributed under the terms of the GNU Public License
% version 3 (http://www.gnu.org/licenses/gpl.txt)
% If you find it useful please cite the following reference:
% Roomsimove http://www.irisa.fr/metiss/members/evincent/Roomsimove.zip
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Configuration data %%%
% Maximum distance in m between the sampled points
sample_dist=1e-2*16000/fs;
% When the true source moves a certain distance the variation of distance
% between the image sources and the sensors is at most equal to this
% distance. Hence it is sufficient to check that this distance corresponds
% to a small enough delay to ensure that the movement is accurately sampled
% for all image sources.
% Distance Delay L2 error on a pure delay filter integrated over the path (worst case with delay close to zero)
% 1mm 0.05 sample 33 dB without interpolation
% 61 dB with maximum interpolation (interp_factor >= 26)
% 4mm 0.2 sample 21 dB without interpolation
% 37 dB with maximum interpolation (interp_factor >= 7)
% 1cm 0.5 sample 13 dB without interpolation
% 22 dB with maximum interpolation (interp_factor >= 3)
% Reading all data into variables
[paramvalue]=textread(source_config‘%9s%[^\n]‘‘commentstyle‘‘matlab‘);
q = strrep(‘ ‘‘ ‘‘ ‘‘‘);
for p=1:length(param)
eval([param{p} ‘=[‘ value{p} ‘]‘ q ‘;‘]);
end
clear param value p;
source_xyz=[px py pz]‘;
n_breaks=size(source_xyz2);
%%% Spatial sampling %%%
% First breakpoint
time=ptime(1);
HH=roomsimove_single(room_sensor_configsource_xyz(:1));
% Subsequent breakpoints
for b=1:n_breaks-1
breakdist=norm(source_xyz(:b+1)-source_xyz(:b)2);
if breakdist > 0
n_samples=ceil(breakdist/sample_dist);
for s=1:n_samples
time(end+1)=((n_samples-s)*ptime(b)+s*ptime(b+1))/n_samples;
HH(::end+1)=roomsimove_single(room_sensor_config((n_samples-s)*source_xyz(:b)+s*source_xyz(:b+1))/n_samples);
end
else
time(end+1)=ptime(b+1);
HH(::end+1)=HH(::end);
end
end
return;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-06-29 15:42 Roomsimove\
文件 33112 2010-03-10 09:11 Roomsimove\omnidirectional.mat
文件 1207 2010-04-01 03:56 Roomsimove\RT60toA.m
文件 13296 2010-07-04 05:46 Roomsimove\roomsimove_single.m
文件 2945 2010-03-10 09:11 Roomsimove\roomsimove.m
文件 2029 2014-06-29 15:42 Roomsimove\roomsimove_apply.m
文件 3286 2014-06-29 14:31 Roomsimove\README
文件 49303 2010-03-10 09:11 Roomsimove\cardioid.mat
文件 870 2010-03-10 09:11 Roomsimove\room_sensor_config.txt
文件 154 2010-03-10 09:11 Roomsimove\source_config.txt
评论
共有 条评论