调制MatLab信号
我试图在MatLab中通过将一些信号与载波信号相乘来调制信号。载波信号是cos(2*pi*fc*t),这是到目前为止我的代码调制MatLab信号,matlab,signals,modulation,Matlab,Signals,Modulation,我试图在MatLab中通过将一些信号与载波信号相乘来调制信号。载波信号是cos(2*pi*fc*t),这是到目前为止我的代码 for t = 1:length(input); m(t) = (Ac + input(t)).*cos(2*pi.*fc.*t); end xam = m; 输入、Ac和fc是使用该功能时需要输入的参数。当我使用任何输入信号运行此代码时(我一直使用cos(t)和t=0:0.001:10),输出总是相同的信号。但是,如果在fc前面使用./而不是.*,则会
for t = 1:length(input);
m(t) = (Ac + input(t)).*cos(2*pi.*fc.*t);
end
xam = m;
输入、Ac和fc是使用该功能时需要输入的参数。当我使用任何输入信号运行此代码时(我一直使用
cos(t)
和t=0:0.001:10
),输出总是相同的信号。但是,如果在fc前面使用./而不是.*,则会对输出进行调制。为什么使用.*fc而不是./fc不起作用?对于初学者,您可以像这样对方程进行矢量化:
t = 0:0.001:10;
input = cos(t);
xam = (Ac + input).*cos(2*pi*fc*(1:length(t)));
我怀疑您每次看到完全相同的输出曲线的原因是您的fc
值是一个整数。如果fc
是整数,cos(2*pi*fc*t)
对t
的所有整数值计算为1,调制后保持输入信号不变。当您使用1/fc
时,会得到一个非整数值,并对输出进行调制
我相信你想做的是:
t = 0:0.001:10; % Time in seconds
f = 1; % Frequency of input signal in rad/s
fc = 3; % Frequency of carrier wave in rad/s
input = cos(2*pi*f*t); % Input signal
xam = (Ac + input).*cos(2*pi*fc*t); % Amplitude modulated signal
注释显示了每个参数的含义。如果只想将采样率fs
传递到函数中,则解决方案如下所示:
N = 1001;
fs = 1000;
t = (0:1:N)*(1/fs);
f = 1;
fc = 3;
input = cos(2*pi*f*t);
您的函数如下所示:
function xam = modulate(input, fs, fc, Ac)
t = (0:1:length(input))*(1/fs);
xam = (Ac + input).*cos(2*pi*fc*t);
给您带来麻烦的
fc
值是什么?在循环之前如何声明mm=zero(1,长度(输入))
?因为我试图保持函数的通用性,如何使用size函数使t等于正确的数组?比如说输入sin(x),x=0:0.01:20。如何使t=0:0.01:20?您所说的“写入数组”是什么意思?我的编辑提供了一种解决问题的方法。请确保您理解fc
和t
参数的含义。抱歉,响应过快,我编辑了上述注释。有关每个值的解释,请参阅我的最新编辑。该函数应同时包含输入信号和描述信号时域的t
矢量。我知道每一行的作用,但我想知道如何根据输入数组设置t。如果我想调节sin(x),但我不知道x的尺寸,那么使用t=0:0.001:10将不起作用,因为尺寸可能不同。那么如何根据输入设置t呢?输入并不总是cos(2*pi*t)。如果不要求t作为函数的输入,就无法得到t吗?