主要内容

opticalCoating

Create optical coating for optical system surfaces

Since R2026a

    Description

    Add-On Required: This feature requires the Optical Design and Simulation Library for Image Processing Toolbox add-on.

    An opticalCoating object creates a custom optical coating. Using the object properties, you can specify optical coating features such as incident light angles, wavelength spectrum range, substrate, coating layer thicknesses, and coating materials.

    To apply the optical coating to an individual surface in your optical system, specify it to the Coating property of the corresponding Surface component. To apply the coating at the creation of a lens or mirror component, specify it to the Coating name-value argument of the addRefractiveSurface or addMirror object function, respectively. To apply the coating to all lens surfaces in an optical system, use the addCoating object function of the opticalSystem object.

    To evaluate the performance of the optical coating, you can use the fresnelCoefficients object function to compute its Fresnel coefficients.

    To create a custom app that enables you to edit and visualize coatings, use the OpticalCoatingEditor object.

    Creation

    Description

    oc = opticalCoating creates an optical coating oc with default properties.

    oc = opticalCoating(PropertyName=Value) sets writable properties using one or more name-value arguments. For example, ThicknessUnit="nm" sets the units of thickness for the layers of the optical coating to nanometers.

    example

    Properties

    expand all

    Name of the optical coating, specified as a string scalar or character vector.

    Incident light angle range, in degrees, specified as a 2-element numeric vector. The first and second elements of the vector are the minimum and maximum incident light angles, respectively, for which the coating has been designed to perform.

    Unit of thickness, specified as one of these options:

    • "quarterWavelength" – Layer thicknesses are in quarter-wavelengths (λ0/4), where λ0 is the primary wavelength of the coating material. For example, given a coating material with a primary wavelength of 200 nm, a layer with a thickness of one quarter-wavelength in the material is 200/(4Nd) thick, where Nd is the refractive index of the coating material. If Nd = 2, the thickness would be 25 nm.

    • "halfWavelength" – Layer thicknesses are in half-wavelengths (λ0/2), where λ0 is the primary wavelength of the coating material.

    • "wavelength" – Layer thicknesses are in the primary wavelength λ0 of the coating material.

    • "nm" – Layer thicknesses are in nanometers.

    Ambient material, specified as an opticalMaterial object. This material represents the incident medium from which light approaches the coating. By default, the ambient material is vacuum.

    Substrate on which the coating layers are deposited, specified as an opticalMaterial object. By default, the substrate is a glass material with a refractive index, Nd, of 1.5 and Abbe number, Vd, of 50, represented as opticalMaterial(Name="Glass",RefractiveIndexParameter=[1.5 50]).

    Coating material, specified as one of these options:

    • M-by-1 vector of opticalMaterial objects – The elements of this vector define the material of each coating layer. M is the number of layers in the optical coating.

    • M-element vector of strings – The elements of this vector define the name of the material of each coating layer. M is the number of layers in the optical coating. If string values are provided, the opticalCoating object resolves the strings into opticalMaterial objects.

    Primary design wavelength, specified as a positive scalar. For ThicknessUnit property values of "quarterWavelength", "halfWavelength", or "wavelength", the PrimaryWavelength property specifies the primary wavelength value λ0 used to calculate the thickness units of the optical coating layers. Units are in nanometers.

    Wavelength range at which the material can be used, specified as a 2-element numeric row vector. Units are in nanometers.

    Layer material index, specified as an M-element row vector. M is the number of layers in the optical coating. Each element of the vector is an index that corresponds to the material used for the corresponding layer of the coating. The first element corresponds to the layer adjacent to the substrate, and the last element corresponds to the layer adjacent to the medium.

    Layer thickness, specified as an M-element row vector. M is the number of layers in the optical coating, and each element of the vector specifies the thickness of the corresponding layer. The first element corresponds to the layer adjacent to the substrate, and the last element corresponds to the layer adjacent to the medium. The units of thickness are set by the ThicknessUnit property.

    This property is read-only.

    Number of coating layers, represented as a nonnegative integer.

    This property is read-only.

    Total optical coating thickness, represented as a nonnegative integer. Units are in nanometers. This value is the sum of the thicknesses of all the individual layers.

    Object Functions

    fresnelCoefficientsCompute Fresnel coefficients for optical coating

    Examples

    collapse all

    Create a broadband anti-reflective (AR) optical coating that consists of two alternating TiO2/SiO2 material layer stacks.

    ocBBAR = opticalCoating(Name="BBAR_4l", ...
    CoatingMaterial = ["TiO2" "SiO2"], ...
    LayerMaterialIndex = [1 2 1 2], ...
    ThicknessUnit = "nm", ...
    LayerThickness = [14.6 36.5 129.1 95.5])
    ocBBAR = 
      opticalCoating with properties:
    
                      Name: "BBAR_4l"
        IncidentAngleRange: [0 15]
           WavelengthRange: [300 800]
         PrimaryWavelength: 587.5618
                    Medium: [1×1 opticalMaterial]
                 Substrate: [1×1 opticalMaterial]
          CoatingMaterials: [2×1 opticalMaterial]
        LayerMaterialIndex: [1 2 1 2]
            LayerThickness: [14.6000 36.5000 129.1000 95.5000]
             ThicknessUnit: "nm"
                 NumLayers: 4
            TotalThickness: 275.7000
    
    

    Create an optical system containing an uncoated double Gauss lens by using the createDoubleGauss helper function, attached to this example as a supporting file. View the optical system in 2-D using the view2d function.

    opsys = createDoubleGauss;
    view2d(opsys);

    Figure contains an object of type optics.ui.opticalsystemviewer2d. The chart of type optics.ui.opticalsystemviewer2d has title 55-mm F/1.2 for 35-mm SLR.

    Apply the broadband AR coating you created to all lens surfaces of the optical system using the addCoating function.

    addCoating(opsys,ocBBAR)

    Create a broadband anti-reflective optical coating that contains two alternating TiO2/SiO2 layer stacks.

    ocBBAR = opticalCoating(Name="BBAR_4l", ...
    CoatingMaterial = ["TiO2", "SiO2"], ...
    LayerMaterialIndex = [1 2 1 2], ...
    ThicknessUnit = "nm", ...
    LayerThickness = [14.6 36.5 129.1 95.5]);

    Plot Spectral Response for Fixed Incident Angle

    Compute the amplitude and power response coefficients for the optical coating at the incident angle of 33 degrees.

    coeffs = fresnelCoefficients(ocBBAR,IncidentAngles=33);

    Define the wavelength range.

    lambda = ocBBAR.WavelengthRange(1):ocBBAR.WavelengthRange(2);

    Plot the spectral dependence of reflectance, R, transmittance, T, and absorbance, A, for s- and p-polarized light, and their averages, at an incidence angle of 33 degrees.

    figure;
    hold on;
    plot(lambda,coeffs.Rs,"r-",LineWidth=2);
    plot(lambda,coeffs.Rp,"r--",LineWidth=2);
    plot(lambda,coeffs.Ra,"r:",LineWidth=2);
    plot(lambda,coeffs.As,"k-",LineWidth=2);
    plot(lambda,coeffs.Ap,"k--",LineWidth=2);
    plot(lambda,coeffs.Ta,"b:",LineWidth=2);
    plot(lambda,coeffs.Ts,"b-",LineWidth=2);
    plot(lambda,coeffs.Tp,"b--",LineWidth=2);
    
    xlabel("\lambda");
    ylabel("T/R/A");
    text(550,0.8,"\theta_{incident}=33\circ",FontSize=14);
    
    legend({"Rs","Rp","Ra","As","Ap","Ta","Ts","Tp"}, ...
        Orientation="horizontal",Location="southoutside");
    
    xlim([min(lambda),max(lambda)]);
    ylim([0 1]);
    hold off;
    set(gca,FontSize=11);

    Figure contains an axes object. The axes object with xlabel lambda, ylabel T/R/A contains 9 objects of type line, text. These objects represent Rs, Rp, Ra, As, Ap, Ta, Ts, Tp.

    Plot Spectral Response for Fixed Wavelength

    Compute the amplitude and power response coefficients for the optical coating at the incident light wavelength of 421 nm.

    coeffs = fresnelCoefficients(ocBBAR,Wavelengths=421);
    theta = ocBBAR.IncidentAngleRange(1):ocBBAR.IncidentAngleRange(2);

    Plot the incident angle-dependent spectral dependence of reflectance, R, transmittance, T, and absorbance, A, for s- and p-polarized light, and their averages, at an incident light wavelength of 421 nm.

    figure; hold on;
    plot(theta,coeffs.Rs,"r-",LineWidth=2);
    plot(theta,coeffs.Rp,"r--",LineWidth=2);
    plot(theta,coeffs.Ra,"r:",LineWidth=2);
    plot(theta,coeffs.As,"k-",LineWidth=2);
    plot(theta,coeffs.Ap,"k--",LineWidth=2);
    plot(theta,coeffs.Ta,"b:",LineWidth=2);
    plot(theta,coeffs.Ts,"b-",LineWidth=2);
    plot(theta,coeffs.Tp,"b--",LineWidth=2);
    
    xlabel("\theta");
    ylabel("T/R/A");
    ylim([0 1]);
    xlim([min(theta), max(theta)]);
    
    text(0.6*max(theta),0.7,"\lambda=421 nm",FontSize=13);
    legend({"Ts","Tp","Ta","Rs","Rp","Ra","As","Ap"},Location="northeastoutside");
    
    set(gca,FontSize=11);
    box on;
    hold off;

    Figure contains an axes object. The axes object with xlabel theta, ylabel T/R/A contains 9 objects of type line, text. These objects represent Ts, Tp, Ta, Rs, Rp, Ra, As, Ap.

    Version History

    Introduced in R2026a