I have a scenario where I have two OQPSK modulated signals and I need to increase the power of one signal by 3 dBm while keeping the other signal at the same power level. Could someone guide me on how to achieve this in Matlab.
2 Answers
To increase the power of x by 3 dB:
x .*= 10^(3/20)
-
5$\begingroup$ hey Olli, someone downvoted your accurate and sincere answer. welcome to Stack Exchange. (maybe they downvoted you because they tried it verbatim and you left off the semicolon. and they were sending their console output to a paper printer and
length(x)
is like $2^{16}$.) $\endgroup$ Apr 7, 2017 at 5:45
For example both signal $x_1$ and $x_2$ has the same value (amplitude), then we want to amplify the second signal to be 3 dB more than $x_1$ (I call it SNR, signal to noise ratio, the noise is signal itself).
% demoDB: add 3 dB to signal Fs=2000; % Sampling Frequency Fc=10; % Carrier Frequency t=0:1/Fs:1; % define evaluation time signal=sin(2*pi*Fc*t); % Sample signal waveform SNR=3; % SNR 3 dB will be added to signal scaledSignal = std(signal)/std(signal)*(sqrt(10^(SNR/10)))*signal; figure(1) subplot(211); plot (signal) subplot(212); plot(scaledSignal) % alternatively you can what Olli want to suggest x2= signal.* 10^(3/20); figure(2) plot(x2)
Both plot and method give the same result
-
$\begingroup$ Isn't this part
std(signal)/std(signal)
redundant? $\endgroup$– VassJun 16, 2020 at 15:17 -
$\begingroup$ and shouldn't the
10^(SNR/10)
be10^(SNR/20)
? $\endgroup$– VassJun 16, 2020 at 16:23 -
$\begingroup$ Yes, the use of
std
is redundant, but10^(SNR/10)
is correct. I don't know why. $\endgroup$– sugabJun 17, 2020 at 1:52