我正在编写一个Matlab程序来执行两个信号的复数和。我首先开始创建一个简单的正弦信号和一个载波信号。我弄乱了两个并创造了复杂的信号。您可以看到我的(x)轴在时域中指定。为清楚起见,我的代码和我的情节的屏幕截图如下所示。
我的代码:
注意:此程序不使用.wav文件,而是使用简单的正弦信号。
mySignalFreq = 1E3;
%T = 1/f;
T = 1/mySignalFreq;
tmin = 0;
tmax = 5*T;%i want to graph 5 time periods
dt = T/60;%used 60 to specify spaceing of time domain
t = tmin:dt:tmax;
myCarrierFreq = 560E3;
Bandwidth = 10E3;
omega_mySignal = 2*pi*mySignalFreq;%determine angular frequency
omega_myCarrier = 2*pi*myCarrierFreq;%determine angular frequency
modIndex = 0.8;%modulation index
myCarrierAmp = 4.0;%amplitude of carrier signal
ys = sin(omega_mySignal*t);
yc = sin(omega_myCarrier*t);
convSum = myCarrierAmp*(1+modIndex.*ys).*yc;%Convolution Sum
%create txt file with Write permissions
convolutionData.txt = fopen('convolutionData.txt','w');
%7.5 specifies 7digits and 5digits to the right of decimal
%have to use \r\n for readability
%array of values need to be in [x;y1;y2;y3] format
%comma in the function denotes the seperator
fprintf(convolutionData.txt,'%7.5f,%7.5f,%7.5f,%7.5f\r\n',[t;ys;yc;convSum]);
%close out file
fclose(convolutionData.txt);
%creating a basic plot of all three signals
plot(t,ys,'r',t,yc,'g',t,convSum,'b');
title('Convoluted Signal');
xlabel('Time Periods');
ylabel('Amplitude (Volts)');
grid on;
这是上图的图片。您可以看到我使用变量't'作为我的x轴数据。
我终于找到了一些代码,用于绘制我用录音机创建的.wav文件。但是,它是在频域中绘制的。正如您在代码中看到的那样,我正在将.wav文件中的数据读入我理解的数组中。不太了解这一部分,所以如果有人可以解释更多关于这一点作为一个很好的旁注。
我的主要问题是如何将我的.wav文件中的数据合并到我上面的原始代码中,以便可以在时域中绘制,如上图所示?只是无法弄清楚那部分因为下面的代码只是在频域中进行。
以下是.wav文件的代码和图表
[wave,fs]=audioread('myvoice1.wav');
t=0:1/fs:(length(wave)-1)/fs;
subplot(2,1,1);
plot(t,wave);
n=length(wave)-1;
f=0:fs/n:fs;
wavefft=abs(fft(wave));
subplot(2,1,2);
plot(f,wavefft);
答案 0 :(得分:0)
最后一个图中的上部子图已经是正确的信号,因此t
和wave
是正确的变量。
只有最后一个图中的第二个子图是频域(以wavefft变量表示)。
只需使用wave
变量即可,您应该拥有自己想要的内容。