0

我正在尝试从用户指定的位置 X 到 Y 的 .wav 文件中读取数据。代码编译文件,但由于某种原因,wavread 函数未从指定位置读取。它在y向量中返回零。如果我不喜欢[y,fs]=wavread('Kalimba.wav', [StartingTime EndingTime]);,那么代码可以正常工作并返回非零数据。

为什么会发生这种情况,我该如何解决?

这是代码:

 function PlayFromXtoY(StartingTime,EndingTime)

% converting the startingTime and EndingTime to minutes

if StartingTime == 0
    disp('Zero')
    StartingTime=1;

elseif StartingTime < 1
         disp('Start <1')
         StartingTime=StartingTime*10;

    elseif StartingTime >= 1
            disp('Start >=1');
            StartingTime=StartingTime*60;
end

if EndingTime < 1
    disp('End <1');
    EndingTime=EndingTime*10;

elseif EndingTime >= 1
        disp('End >=1');
        EndingTime=EndingTime*60;
end

[y,fs]=wavread('Kalimba.wav', [StartingTime EndingTime]); % returning 0 in y for some reason

wavplay(y,fs);

问候

4

1 回答 1

0

您的第一个问题是您在调用之前对开始时间和停止时间进行了非常奇怪的修改wavreaddisp如果这些真的有意义的话,它可以在通话之前的那些时候有所帮助。

然而,最重要的是,您将这些限制视为时间,而wavread实际上并非如此。根据他的文档,您通过的限制应该是样本数。

于 2013-01-17T17:54:26.153 回答