HUAJIANGXIASHU 2023-06-08 17:45 采纳率: 33.3%
浏览 55
已结题

MATLAB,你们好我刚学习编程,很多地方都不太懂。希望请教一下,在一个3X3mm光感接收器上,有40X40的房间,房间大小75X75,有效接收面65X65,已知光落点坐标(x,y)

这是关于Mtlab的编程我写for语句,老是报错。下面的图是这个编程的示意图和我的编程。这个按我的理解应该是做一个编程然后判断房间是不是有光子落入,如果有可以计算里面的光子数。

img


img

img

img

img

img


这里是我的学长写的代码。讲道理后半部分结果有点没看懂。比如那个pd值,还有为什么要为1。


%%光子消减
clear all;clc;
% 重置
数据 = cell2mat(readcell("COUNTS1"));
%读取  数据
all_length = 3;gapd_length = 0.025;active_length = 0.015;inactive_length = 0.005% 单元格大小和活动区域设置
gapd_active_count = zeros([all_length/gapd_length all_length/gapd_length]);
%根据  单元格大小创建数组
对于我 = 1:大小(数据,1%重复进行到输入 PHOTON 的位置
     temp_x = floor(data(i,1)/gapd_length);temp_y = floor(data(i,2)/gapd_length);
     %用  PHOTON 检测细胞位置
     如果 ((data(i,1)-temp_x*gapd_length)>=inactive_length)&&((data(i,1)-temp_x*gapd_length)<=(inactive_length+active_length)) && ((data(i,2)- temp_y*gapd_length)>=inactive_length)&&((data(i,2)-temp_y*gapd_length)<=(inactive_length+active_length))
         % CELL 判断是否为活动区域,进行条件语句
         gapd_active_count(temp_y+1, temp_x+1) = gapd_active_count(temp_y+1, temp_x+1) + 0.563;
         %如果为真,则添加 0.563 的 PD 值
     end
gapd_active_count(gapd_active_count>1) = 1;
%由于值不能超过1,所以超过1就设置为1
总和(总和(gapd_active_count))
% 添加所有落入活动区域的值

  • 写回答

4条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-06-13 04:56
    关注
    获得4.05元问题酬金

    我需要帮助用 MATLAB 编程,通过光感接收器判断一个大小为 75X75 的房间内是否有光子落入,并计算光子数量。已知光落点的坐标为 (x, y),光感接收器面积为 3X3mm,房间大小为 40X40,有效接收面积为 65X65。 以下是我的学长提供的代码,但是我不理解后半部分的结果,比如 pd 的含义,为什么它等于 1 等问题。

    clear all;
    close all;
    clc;
    
    [length,width] = meshgrid(0.5:0.05:5);
    %length=5;
    %width=5;
    height=3;%墙面高度
    Aroom=length.width;%室内面积
    Arx=50;%the receiveing area
    d=3;
    psi=30;%入射角
    psic=70;%半功率角
    phi_half=pi/3;
    Tf=1%transmission coefficient
    g=6;%the concentrator gain 光集中器增益
    Ba=4.5E6;  %amplifier bandwidth
    amplifier_current = 0.01;%放大器电流
    Pn=3.35.84E-3; %the noise power of the ambient light背景光噪声功率
    q=1.602176487E-19;
    R=0.4;  %photodiode responsivity光电二极管的折射率
    nLED=4;%LED数量
    pLED=0.02;%单个LED功率
    Rf = 0.15;  %地面反射
    Rc = 0.8; %天花板反射
    Rw = 0.9; %墙面反射
    Af=Aroom;%地面面积
    Ac=Aroom;%天花板面积
    Aw=length*d;%墙面面积
    m=-log(2)./log(cos(phi_half));%the order of Lambertian emission
    Ro=real(((m+1)./(2*pi))cos(phi_half2)^m);%Lambertian radiant intensity
    %hlos = HLOS(Arx,d,psi,psic,Ro);
    %Hlos = ones(1,length(Ro));
    if ((psi >= 0) && (psic >= psi))
    Hlos = Arx/(d^2)Rocos(psi);
    elseif (psi>psic)
    Hlos = Hlos*0;
    end;
    Ptx=pLED*Ro;
    Prxlos=Ptx.HlosnLED;
    I2=0.562;  %the noise-bandwidth factor
    Rb=5120000;  %date rate
    

    回答:

    以上提供的代码并没有实现房间内光子的数量计算和光子是否落入的判断。该代码主要是定义了一些常量和变量。因此需要在代码中添加相关功能实现光子数量计算和判断是否落入光感接收器的逻辑。

    根据题目描述,我们可以利用以下步骤实现程序的功能:

    1. 定义房间的数据,包括大小,光感接收器坐标,房间中光子的分布数据等。
    2. 计算分布在房间内的光子是否和光感接收器相交。
    3. 如果光子和光感接收器相交,则统计光子数量。
    4. 输出光子数量。

    以下是一个简单的实现代码:

    % 定义房间数据,包括大小,光感接收器坐标和光子分布
    room_size = [40 40]; % 房间大小
    receiver_size = [3 3]; % 光感接收器面积
    receiver_pos = [19 19]; % 光感接收器坐标
    x = linspace(0, room_size(1), 100); % 房间横向坐标
    y = linspace(0, room_size(2), 100); % 房间纵向坐标
    [X,Y] = meshgrid(x,y);
    [x0, y0] = meshgrid(-1.5:0.1:1.5, -1.5:0.1:1.5); %光子分布坐标
    sigma = 0.4; % 光子标准差
    I0 = 1; % 光子强度
    I = I0*exp(-((x0).^2 + (y0).^2)/(sigma^2)); % 计算光子强度
    
    % 判断光子是否落入光感接收器
    dx = (X(1,2) - X(1,1));
    dy = (Y(2,1) - Y(1,1));
    total_photon_count = 0; % 统计光子数量
    for i = 1:size(x0,1)
        for j = 1:size(x0,2)
            % 计算光子的中心坐标
            photon_x = round(x0(i,j)/dx);
            photon_y = round(y0(i,j)/dy);
            % 判断光子是否和光感接收器相交
            if photon_x >= receiver_pos(1) && photon_x <= receiver_pos(1)+receiver_size(1) ...
                    && photon_y >= receiver_pos(2) && photon_y <= receiver_pos(2)+receiver_size(2)
                total_photon_count = total_photon_count + I(i,j);
            end
        end
    end
    
    disp(['光子数量:', num2str(total_photon_count)]);
    

    代码说明:

    1. 程序定义了房间和光感接收器的数据,并采用网格的形式生成了光子的中心坐标。
    2. 然后根据房间大小和光子中心坐标计算光子强度。
    3. 最后,遍历所有的光子中心坐标,判断当前坐标是否和光感接收器相交,如果相交,则将光子数量累加到总量中。

    对于该程序,需要注意以下几点:

    1. 光子强度的计算方式和光子分布的规律应根据问题具体情况指定。
    2. 光子强度应是传入进来的数据,或者使用一种随机生成方法。
    3. 可以通过调整 sigma 参数来控制光子的标准差大小,参数值越大,光子数量就越大,反之则光子数量越小。

    回答完毕。

    评论

报告相同问题?

问题事件

  • 系统已结题 6月16日
  • 创建了问题 6月8日

悬赏问题

  • ¥15 Hadoop实训论文成品! 任意标题 价格可私 急
  • ¥15 程序实在不会写,要秃了
  • ¥15 pycharm导入不了自己的包
  • ¥15 C#.net通过内网url地址获取文件并下载问题,浏览器postman可以正常下载,用程序不行
  • ¥15 本人本科机械,目前研一。没有深度学习基础,目前对研究生课题一片迷茫,请教各位!
  • ¥15 关于R语言单因素与多因素线性回归的平均值
  • ¥15 服务器清除BIOS之后引导不了
  • ¥15 CPLEX用OPL编写的混合整数线性优化问题。
  • ¥15 可以用EasyConnect连接实验室内网,但无法连接内网才能访问的服务器,为什么?
  • ¥15 前端预览docx文件,文件从后端传送过来。