You are on page 1of 1

function [sig_Out] = mzm_mod(Vsig, Vpi_dc, Vpi_rf, Vbias1, Vbias2, P_In)

mzm_bias = (Vbias2-Vbias1)/Vpi_dc;
null_rng = 0.1*Vpi_dc/pi ;
if sum(Vsig<0)>0
error('Input sequence must be positive for intensity modulation');
end

precompSig = precomp(Vsig);
% dual drive unbalanced mach-zehnder modulator function
sig_Out = P_In*(1 + cos( pi*( (Vbias1-Vbias2)/Vpi_dc + precompSig/Vpi_rf )))/2;

function [ precompSeq ] = precomp(sampleSeq_In)


if ( abs(abs(mzm_bias)-Vpi_dc) < null_rng ) % near nulll bias and
small signal swing
precompSeq = sqrt(sampleSeq_In);
else

end
end
end

You might also like