## Non-linear axis plotting

Background: Many years ago when plotting reciever error rate against input power I used graphpaper that was designed to give a straight line if the performance followed theory. That made it easy to spot problems (like hitting a noise floor) as plot would diverge from a straight line. Some years later it became harder to find this special paper, so I wrote a simple plotter in Java to do this.

Question: How do I do this in MATLAB? The y-axis is non-linear would ned to use the inverse complimentary error function (so y in linear space = log10(erfcInv(BER)). This question is not about how to write erfcinv(), but how about how to get the plot’s y-axis to do this.

Example: – On the left: My old Java plot application, on the right a MATLAB plot using semilogy(power, BER) using the same data for reference. Not that my old BER plot grids very in size.

Here my MATLAB code that made the sample plot on the right on the picture:

function sample()

data = [

-38, 1e-3;

-37, 3.8e-4;

-36 1.2e-4;

-35 3.4e-5;

-34 7e-6;

-33 1.35e-6;

-32 1.8e-7;

-31 1.8e-8;

-30 1e-9;

];

power = data(:,1);

BER = data(:,2);

semilogy(power,BER)

grid on

endBackground: Many years ago when plotting reciever error rate against input power I used graphpaper that was designed to give a straight line if the performance followed theory. That made it easy to spot problems (like hitting a noise floor) as plot would diverge from a straight line. Some years later it became harder to find this special paper, so I wrote a simple plotter in Java to do this.

Question: How do I do this in MATLAB? The y-axis is non-linear would ned to use the inverse complimentary error function (so y in linear space = log10(erfcInv(BER)). This question is not about how to write erfcinv(), but how about how to get the plot’s y-axis to do this.

Example: – On the left: My old Java plot application, on the right a MATLAB plot using semilogy(power, BER) using the same data for reference. Not that my old BER plot grids very in size.

Here my MATLAB code that made the sample plot on the right on the picture:

function sample()

data = [

-38, 1e-3;

-37, 3.8e-4;

-36 1.2e-4;

-35 3.4e-5;

-34 7e-6;

-33 1.35e-6;

-32 1.8e-7;

-31 1.8e-8;

-30 1e-9;

];

power = data(:,1);

BER = data(:,2);

semilogy(power,BER)

grid on

end Background: Many years ago when plotting reciever error rate against input power I used graphpaper that was designed to give a straight line if the performance followed theory. That made it easy to spot problems (like hitting a noise floor) as plot would diverge from a straight line. Some years later it became harder to find this special paper, so I wrote a simple plotter in Java to do this.

Question: How do I do this in MATLAB? The y-axis is non-linear would ned to use the inverse complimentary error function (so y in linear space = log10(erfcInv(BER)). This question is not about how to write erfcinv(), but how about how to get the plot’s y-axis to do this.

Example: – On the left: My old Java plot application, on the right a MATLAB plot using semilogy(power, BER) using the same data for reference. Not that my old BER plot grids very in size.

Here my MATLAB code that made the sample plot on the right on the picture:

function sample()

data = [

-38, 1e-3;

-37, 3.8e-4;

-36 1.2e-4;

-35 3.4e-5;

-34 7e-6;

-33 1.35e-6;

-32 1.8e-7;

-31 1.8e-8;

-30 1e-9;

];

power = data(:,1);

BER = data(:,2);

semilogy(power,BER)

grid on

end plotting, axis, non-linear-axis, ber plotting MATLAB Answers — New Questions