weixin_47696437 2022-06-04 20:46 采纳率: 85.3%
浏览 201
已结题

布拉格光栅MATLAB反射谱仿真不会修改代码

问题遇到的现象和发生背景

matlab7.0

问题相关代码,请勿粘贴截图

function FBG_TransferMatix(n_eff,L,lambda_Brag)

%-------------变量定义-------------------------------
 
    % n_eff ----------------光栅有效折射率
    % L     ----------------光栅长度
    % lambda_Brag ----------光栅中心波长
    % kappa ----------------光波模式互耦合系数
    % delta ----------------模间失谐量
 
%----------------------------------------------------
disp('输入的参数如下');
disp('光栅有效折射率为:');disp(n_eff);
disp('布拉格光栅的中心波长为');disp(lambda_Brag);
disp('布拉格光栅的长度为:');disp(L)
lambda=1e-9*linspace(1308,1312,500);
kappa_L=5;
kappa=kappa_L/L;%交流耦合系数
F=[1 0;0 1];
for num=1:500
    f=tansmit_fiber(L,kappa,num,n_eff,lambda,lambda_Brag);
    f=f*F;
    r3(num)=f(2,1)/f(1,1);
    R3(num)=(abs(-r3(num)))^2;%反射率
end
subplot(2,1,1)
plot(lambda*1e9,R3,'r');
hold on
subplot(2,1,2)
plot(lambda*1e9,1-R3,'b')
hold on

end

?%传输矩阵的功能函数
function [f] =tansmit_fiber(L,kappa,num,n_eff,lambda,lambda_Brag)
?
delta(num)=2pi n_eff *(1./lambda(num)-1./lambda_Brag);
s(num)=sqrt(kappa.^2-delta(num).^2);
?
s11(num)=cosh(s(num)L)-i(delta(num)/s(num))*sinh(s(num)L);%w传输矩阵元
s12(num)=-i
(kappa/s(num))*sinh(s(num)L);
s21(num)=i
(kappa/s(num))*sinh(s(num)*L);
s22(num)=cosh(s(num)L)+i(delta(num)/s(num))*sinh(s(num)*L);
f=[s11(num) s12(num);s21(num) s22(num)];

end

运行结果及报错内容

要求出现

img

img

img

参考网址
https://www.renrendoc.com/paper/200567888.html
https://blog.csdn.net/qq_59747472/article/details/123156666

我的解答思路和尝试过的方法

不会修改

我想要达到的结果

运行

  • 写回答

1条回答 默认 最新

  • 胸毛男 2022-06-04 21:12
    关注

    函数说,有些地方要用1i表示复数 函数应该改为

    function [f] =tansmit_fiber(L,kappa,num,n_eff,lambda,lambda_Brag)
    
    delta(num)=2*pi*n_eff *(1./lambda(num)-1./lambda_Brag);
    s(num)=sqrt(kappa.^2-delta(num).^2);
    
    s11(num)=cosh(s(num)*L)-1i*(delta(num)/s(num))*sinh(s(num)*L);%w传输矩阵元
    s12(num)=-1i*(kappa/s(num))*sinh(s(num)*L);
    s21(num)=1i*(kappa/s(num))*sinh(s(num)*L);
    s22(num)=cosh(s(num)*L)+1i*(delta(num)/s(num))*sinh(s(num)*L);
    f=[s11(num) s12(num);s21(num) s22(num)];
    
    end
    
    

    这里折射率没有定义啊,随便定义一些值,中心波长550吧,长度4mm

    %-------------变量定义-------------------------------
     
        % n_eff ----------------光栅有效折射率
        % L     ----------------光栅长度
        % lambda_Brag ----------光栅中心波长
        % kappa ----------------光波模式互耦合系数
        % delta ----------------模间失谐量
     
    %----------------------------------------------------
    n_eff = 1.34;
    lambda_Brag=550;
    L=4;
    disp('输入的参数如下');
    disp('光栅有效折射率为:');disp(n_eff);
    disp('布拉格光栅的中心波长为');disp(lambda_Brag);
    disp('布拉格光栅的长度为:');disp(L);
    lambda=1e-9*linspace(1308,1312,500);
    kappa_L=5;
    kappa=kappa_L/L;%交流耦合系数
    F=[1 0;0 1];
    for num=1:500
        f=tansmit_fiber(L,kappa,num,n_eff,lambda,lambda_Brag);
        f=f*F;
        r3(num)=f(2,1)/f(1,1);
        R3(num)=(abs(-r3(num)))^2;%反射率
    end
    subplot(2,1,1)
    plot(lambda*1e9,R3,'r');
    hold on
    subplot(2,1,2)
    plot(lambda*1e9,1-R3,'b')
    hold on
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏

报告相同问题?

问题事件

  • 系统已结题 6月13日
  • 已采纳回答 6月5日
  • 创建了问题 6月4日

悬赏问题

  • ¥15 C++ 菜单窗口独立出来,可以随意移动放大缩小。
  • ¥15 java代码写在记事本上后在cmd上运行时无报错但又没生成文件
  • ¥15 关于#python#的问题:在跑ldsc数据整理的时候一直抱这种错误,要么--out识别不了参数,要么--merge-alleles识别不了参数(操作系统-linux)
  • ¥15 PPOCRLabel
  • ¥15 混合键合键合机对准标识
  • ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
  • ¥15 目标跟踪,计算机视觉
  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
  • ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?
  • ¥200 C++表格文件处理-悬赏