Audio 如何解决在倍频程中执行调频解调时的错误?

Audio 如何解决在倍频程中执行调频解调时的错误?,audio,signals,octave,telecommunication,Audio,Signals,Octave,Telecommunication,我正试图解调一个调频调制信号。正如您在下面的代码中所看到的,我使用fmmod来调制FM信号,但是当我使用fmdemod或ADEMODE时,它们都不会返回与原始信号类似的任何内容。对于fmdemod,我认为您不能像在fmmod中一样输入freqdev,因此它不会执行相反的操作。对于ademodce,我不知道为什么这不起作用。是否有其他倍频程函数可以用来再次获得原始信号,或者如何正确使用这两个函数中的任何一个来实现 请参见下面的示例代码: [sound2,fs]=audioread('sou

我正试图解调一个调频调制信号。正如您在下面的代码中所看到的,我使用fmmod来调制FM信号,但是当我使用fmdemod或ADEMODE时,它们都不会返回与原始信号类似的任何内容。对于fmdemod,我认为您不能像在fmmod中一样输入freqdev,因此它不会执行相反的操作。对于ademodce,我不知道为什么这不起作用。是否有其他倍频程函数可以用来再次获得原始信号,或者如何正确使用这两个函数中的任何一个来实现

请参见下面的示例代码:

    [sound2,fs]=audioread('sound2.wav');
    
    fc=7500;
    freqdev=100;
    dt=1/fs;
    len=length(sound2)*dt;
    
    t=0:dt:len;
    t=t(1:end-1);
    t1=t(1:end-1);
    
    FMmod=fmmod(sound2.',fc,fs,freqdev);
    FMDemod=ademodce(FMmod,fs,"fm",freqdev); %Or fmdemod(FMmod.',fc,fs) Neither is working.
    
    sound(sound2,fs)
    sound(FMDemod,fs)
    
    
    subplot(2,2,1),plot(t,sound2),title('Original Sound');
    
    subplot(2,2,2),plot(t,FMmod,'r'),title('FM Modulated');
    
    subplot(2,2,3),plot(t,FMDemod,'g'),title('FM De-Modulated');
    
    subplot(2,2,4),plot(t,FMmod-sound2.'), title('Carrier Signal');

我不想这么说,但尽管我非常喜欢Octave项目,但你发现的所有东西似乎都是通信包中的bug。如果你看一下软件包,很明显,这些特定的功能,至少,自2007年以来没有得到太多的喜爱。。。我对调频调制/解调知之甚少,但是我已经说过,如果你看一下相关的源代码,除了数学上的正确性之外,这些似乎都是相当简单的实现。我强烈建议你在倍频程错误跟踪器中提出所有这些错误。这些文件中也提到了原作者的名字,也许你可以鼓励他(或者在你的bug报告中敦促Octave的人这么做)回来,再次对这些函数倾注一些爱心(此时可能有额外13年专业经验的优势!)。如果您知道并理解调制/解调背后的数学原理,您甚至可以决定编辑这些函数并纠正任何不一致之处(如我所说,代码本身似乎非常简单)。再次感谢您的帮助。不幸的是,我现在没有时间做这个项目,但是在接下来的几周里,我将学习调频调制,一旦我对它有了更好的理解,我也许能够正确地编码它。我将在这里和倍频程错误跟踪器上进行相应的更新。