我想使用Matlab同时播放纯音并从默认麦克风录音。
%% Main code
frequency = 500;
time = 5;
tic
parfor ii = 1:2
if ii==1
recording = test_record(time);
elseif ii==2
test_play(frequency,time);
end
end
toc
size(recording)
除了在parfor循环结束后记录变量不可用之外,这一切都正常工作,我需要它进行进一步分析。我很欣赏如何在parforloop之后提供记录样本的建议,甚至更好 - 我很乐意了解更好的设计是否更合适。
谢谢!
以下是用于运行上述代码的两个附加函数:
%% Play the given frequency
function test_play(frequency,recording_time)
fs = 8000; % Samples per second
t = 0:(1/fs):recording_time;
y = sin(2*pi*frequency*t);
sound(y, fs);
end
%% Record from the microphone for given number of seconds
function recording = test_record(recording_time)
recObj = audiorecorder;
recordblocking(recObj, recording_time);
recording = getaudiodata(recObj);
end
注意 - related question's答案会重定向到某些程序( Sox ),这些程序似乎就是我搜索的内容,但是我想自己编写Matlab代码。
答案 0 :(得分:2)
在您的情况下,录制是一个保留在工作人员身上的局部变量。此代码创建一个切片的单元格数组,应该修复它:
%% Main code
frequency = 500;
time = 5;
recording=cell(2,1)
parfor ii = 1:2
if ii==1
recording{ii} = test_record(time);
elseif ii==2
test_play(frequency,time);
end
end
显然,您的数据正在录制{1}