# Increase power of signal in Matlab

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.

• You don't need to specify the reference when you talk of a difference in dB scale. The letter m in dBm specifies a 0 dB reference of 1 mW. Nov 13 '15 at 10:41

To increase the power of x by 3 dB:

x .*= 10^(3/20)

• 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}$.) Apr 7 '17 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

• Isn't this part std(signal)/std(signal) redundant?
– Vass
Jun 16 '20 at 15:17
• and shouldn't the 10^(SNR/10) be 10^(SNR/20)?
– Vass
Jun 16 '20 at 16:23
• Yes, the use of std is redundant, but 10^(SNR/10) is correct. I don't know why. Jun 17 '20 at 1:52