我有一个simulink块,它从matlab获取一个函数,并将其输出作为“To Audio Device”图的输入。我得到的错误是Port Audio:无效的通道数。所以我添加了变量H来用DSP.AudioRecorder录制音频,但我无法将其设置为输出H = fcn()..所以主要问题是这是最简单的方法,因为我现在很迷茫。谢谢!
我的以下代码是:
function y = fcn()
%#codegen
Fs = 125; %# Samples per second
toneFreq = 50; %# Tone frequency, in Hertz
nSeconds = 2; %# Duration of the sound
y = sin(linspace(0, nSeconds*toneFreq*2*pi, round(nSeconds*Fs)));
coder.extrinsic('sound');
coder.extrinsic('audiowrite');
H = dsp.AudioRecorder('DeviceName','Default', 'SampleRate', 48000, 'BufferSizeSource', 'Property', 'BufferSize', 512, 'NumChannels', 2);
step(H);
sound(y, Fs); %# Play sound at sampling rate Fs
audiowrite(y, Fs, 8, 'tone_50Hz.wav'); %# Save as an 8-bit, 1 kHz signal
答案 0 :(得分:0)
“To Audio Device”块将每列视为一个频道。您应该在返回fcn的输出之前转置数据y。
目前您收到的错误是因为您的行向量为y,并且此行向量中的每个样本都被视为一个单独的通道。