まず、方程式を次のようにベクトル化できます。
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)
、 のすべての整数値に対して 1 と評価されt
、変調後に入力信号は変更されません。使用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);