【问题标题】:Matlab indexing errorMatlab索引错误
【发布时间】:2018-03-20 17:22:36
【问题描述】:

所以我有这个 DSP 代码:

    frameLength = 256;
fileReader = dsp.AudioFileReader(...
    'sound.mp3',...
    'SamplesPerFrame',frameLength);
deviceWriter = audioDeviceWriter(...
    'SampleRate',fileReader.SampleRate);
scope = dsp.TimeScope(...
    'SampleRate',fileReader.SampleRate,...
    'TimeSpan',16,...
    'BufferLength',1.5e6,...
    'YLimits',[-1 1]);
dRG = noiseGate(...
    'SampleRate',fileReader.SampleRate,...
    'Threshold',-25,...
    'AttackTime',10e-3,...
    'ReleaseTime',20e-3,...
    'HoldTime',0);

visualize(dRG);

configureMIDI(dRG);

while ~isDone(fileReader)
    signal = fileReader();
    noisySignal = signal + 0.0025*randn(frameLength,1);
    processedSignal = dRG(noisySignal);
    deviceWriter(processedSignal);
    scope([noisySignal,processedSignal]);

end

release(fileReader);
release(deviceWriter);
release(scope);
release(dRG);

它给了我这个错误,我试图以各种方式索引它,也用单元格,但它似乎不起作用。错误是:

不允许使用类 'dsp.AudioFileReader' 的对象形成数组和括号式索引。使用对象 类 'dsp.AudioFileReader' 仅作为标量或使用元胞数组。

工作台出错(第 25 行) 信号 = fileReader();

【问题讨论】:

    标签: matlab signal-processing


    【解决方案1】:

    问题是dsp.AudioFileReader的用法不正确。

    你先做了:

    fileReader = dsp.AudioFileReader(...
        'sound.mp3',...
        'SamplesPerFrame',frameLength);
    

    然后:

    signal = fileReader();
    

    我认为最后一行是问题...您对 dsp.AudioFileReader System 对象的使用不正确。正如错误消息所说,fileReader 后面的括号没有意义。

    根据你想做什么,你应该调用正确的方法(正确方法列表here)。

    例如,如果你想使用方法step,你应该这样做:

    signal = step(fileReader);
    

    【讨论】:

      猜你喜欢
      • 2013-01-01
      • 2016-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多