概要
RでAM変調、復調やってみた。
復調は、直交復調です。
写真
サンプルコード
par(mfrow = c(3, 1))
lpf <- function(i, samplerate, freq, x) {
o <- (sin(2 * pi * 110 * x) + 0.5 * sin(2 * pi * 440 * x)) / 2
q <- 1
omega <- 2 * pi * freq / samplerate
alpha <- sin(omega) / (2 * q)
a0 <- 1 + alpha
a1 <- -2 * cos(omega)
a2 <- 1 - alpha
b0 <- (1 - cos(omega)) / 2
b1 <- 1 - cos(omega)
b2 <- (1 - cos(omega)) / 2
in2 <- 0
in1 <- 0
out2 <- 0
out1 <- 0
for (j in seq(length(i)))
{
o[j] <- b0 / a0 * i[j] + b1 / a0 * in1 + b2 / a0 * in2 - a1 / a0 * out1 - a2 / a0 * out2
in2 <- in1;
in1 <- i[j];
out2 <- out1;
out1 <- o[j];
}
return(o)
}
N <- 10000
t <- 1:N / N
C <- 1
fc <- 30
A <- 0.7
fs <- 3
fl <- 20
cutoff <- 15
Vin <- sin(2 * pi * fs * t)
plot(Vin)
Vam <- (A * sin(2 * pi * fs * t) + C) * sin(2 * pi * fc * t)
plot(Vam)
Q <- Vam * cos(2 * pi * fl * t)
I <- Vam * sin(2 * pi * fl * t)
Q2 <- lpf(Q, N, cutoff, t)
I2 <- lpf(I, N, cutoff, t)
Vdm <- sqrt(Q2 * Q2 + I2 * I2)
Vout <- lpf(Vdm, N, 10, t)
plot(Vout)