当前位置: 首页 > news >正文

matlab 模拟 闪烁体探测器全能峰

clc;clear;close all
%% 参数设置
num_events = 1e5;      % 模拟事件数
E = 662e3;             % γ射线能量(eV)
Y = 38000;             % 光产额(photon/MeV,NaI(Tl))
eta = 0.2;             % 量子效率
G = 1e6;               % PMT增益
F = 1.5;               % 法诺因子
C = 100e-12;           % 电容(F)
e = 1.6e-19;           % 电子电荷量(C)
sigma_noise_e = 5000;  % 电子学噪声(电子数RMS)%% 各环节模拟
% 1. 光子生成(泊松涨落)
mean_photon = Y * E / 1e6; % 转换为MeV计算
N_photon = poissrnd(mean_photon, [num_events, 1]);% 2. 光电子转换(二项涨落)
N_pe = arrayfun(@(n) binornd(n, eta), N_photon);% 3. PMT倍增(法诺涨落,高斯近似)
Q_pmt = normrnd(N_pe*G*e, sqrt(N_pe*G^2*F)*e);% 4. 电子学噪声(高斯噪声)
Q_noise = normrnd(0, sigma_noise_e*e, [num_events, 1]);
Q_total = Q_pmt + Q_noise;% 5. 电压转换
V = Q_total / C;%% 结果可视化
% 直方图与高斯拟合
figure
h = histogram(V, 100, 'Normalization', 'pdf');
hold on% 计算理论高斯参数
mu_V = mean(V);
sigma_V = std(V);
x = linspace(min(V), max(V), 500);
y = normpdf(x, mu_V, sigma_V);
plot(x, y, 'r', 'LineWidth', 2)% 图像标注
xlabel('Pulse Amplitude (V)')
ylabel('Probability Density')
title(['Simulated Spectrum @ ', num2str(E/1e3), ' keV'])
legend('Simulation', 'Gaussian Fit')
grid on% 显示能量分辨率
fwhm = 2.355 * sigma_V;
resolution = fwhm/mu_V;
text(0.05, 0.9, sprintf('Resolution: %.1f%%', resolution*100),...'Units', 'normalized', 'FontSize', 12)%% 关键参数输出
disp('===== 关键参数 =====')
fprintf('理论脉冲幅度: %.2e V\n', Y*eta*G*e*E/(1e6*C))
fprintf('实测脉冲幅度: %.2e V\n', mu_V)
fprintf('实测能量分辨率: %.1f%%\n', resolution*100)

运行结果如下
在这里插入图片描述
考虑康普顿沉积的话

clc; clear; close all;%% 参数设置
num_events = 1e5;      % 模拟事件数
E_MeV = 0.662;         % γ射线能量(MeV)
E = E_MeV * 1e6;       % 转换为eV
Y = 38000;             % 光产额(photon/MeV,NaI(Tl))
eta = 0.2;             % 量子效率
G = 1e6;               % PMT增益
F = 1.5;               % 法诺因子
C = 100e-12;           % 电容(F)
e = 1.6e-19;           % 电子电荷量(C)
sigma_noise_e = 5000;  % 电子学噪声(电子数RMS)% 相互作用概率(示例值,需根据实际能量计算)
mu_photo = 0.6;   % 光电效应占比
mu_compton = 0.3; % 康普顿散射占比
mu_pair = 0.0;    % 电子对效应(E < 1.022 MeV时为0)
total_mu = mu_photo + mu_compton + mu_pair;
prob = [mu_photo, mu_compton, mu_pair] / total_mu;%% 蒙特卡洛模拟能量沉积
deposited_energy = zeros(num_events, 1);
for i = 1:num_eventsE_remaining = E;while E_remaining > 0interaction = string(randsample({'photo', 'compton', 'pair'}, 1, true, prob));switch interactioncase 'photo'% 光电效应 + X射线逃逸if rand() < 0.2E_X = 30e3;  % 碘的X射线能量deposited_energy(i) = deposited_energy(i) + (E_remaining - E_X);elsedeposited_energy(i) = deposited_energy(i) + E_remaining;endE_remaining = 0;case 'compton'% 康普顿散射cos_theta = 2*rand() - 1;E_deposit = E_remaining * (1 - 1/(1 + (E_remaining/511e3)*(1 - cos_theta)));deposited_energy(i) = deposited_energy(i) + E_deposit;E_remaining = E_remaining - E_deposit;if rand() < 0.5  % 50%概率逃逸E_remaining = 0;endendend
end%% 探测过程模拟
% 1. 光子生成(基于实际沉积能量)
mean_photon = Y * deposited_energy / 1e6;  % deposited_energy单位为eV
N_photon = poissrnd(mean_photon);% 2-5. 后续步骤与原代码相同
N_pe = arrayfun(@(n) binornd(n, eta), N_photon);
Q_pmt = normrnd(N_pe*G*e, sqrt(N_pe*G^2*F)*e);
Q_noise = normrnd(0, sigma_noise_e*e, [num_events, 1]);
Q_total = Q_pmt + Q_noise;
V = Q_total / C;%% 结果可视化
figure;
histogram(V, 1024, 'BinLimits', [0, 1.2*max(V)], 'EdgeColor', 'none');
xlabel('Pulse Amplitude (V)');
ylabel('Counts');
title(sprintf('Simulated Spectrum with Compton Edge @ %.1f MeV', E_MeV));
grid on;% 标注特征峰
hold on;
% 光电峰
line([Y*eta*G*e*E/(1e6*C), Y*eta*G*e*E/(1e6*C)], ylim, 'Color', 'r', 'LineStyle', '--');
% 康普顿边缘
E_compton_edge = E_MeV * (1 - 1/(1 + 2*E_MeV/0.511));  % 康普顿最大能量沉积
V_compton = Y*eta*G*e*(E_compton_edge*1e6)/(1e6*C);
line([V_compton, V_compton], ylim, 'Color', 'g', 'LineStyle', '--');
legend('Simulated', 'Photopeak', 'Compton Edge');

在这里插入图片描述

模拟Co、Ba、Cs三种放射性核素的能谱,其活度比例为1:2:3,并包含各核素的特征γ射线能量:

clc; clear; close all;%% 参数设置
num_events_total = 6e4;        % 总事件数(1+2+3=6份)
e = 1.6e-19;                   % 电子电荷量(C)% 定义探测器参数(与闪烁体相关)
Y = 38000;                     % 光产额(photon/MeV,NaI(Tl))
eta = 0.2;                     % 量子效率
G = 1e6;                       % PMT增益
F = 1.5;                       % 法诺因子
C = 100e-12;                   % 电容(F)
sigma_noise_e = 5000;          % 电子学噪声(电子数RMS)% 定义放射源特性(核素名称、能量[MeV]、分支比、活度权重)
sources = struct(...'name', {'Co60', 'Ba133', 'Cs137'},...'energy', {[1.173, 1.332], 0.356, 0.662},...  % γ射线能量(MeV)'branch', {[0.5, 0.5], 1.0, 1.0},...          % 分支比(概率和=1)'activity', {1, 2, 3}...                      % 活度比例
);%% 生成各核素事件
all_E = [];  % 存储所有事件的能量% 遍历每个放射源
for i = 1:length(sources)% 计算该核素的事件数 (按活度比例分配)num_events = round(num_events_total * sources(i).activity / sum([sources.activity]));% 生成该核素的γ射线能量抽样if length(sources(i).energy) > 1% 多能峰:按分支比随机选择能量E_choices = sources(i).energy;probs = sources(i).branch;% 累积概率法cum_probs = cumsum(probs) / sum(probs);  % 确保分支比总和为1rand_vals = rand(num_events, 1);         % 生成随机数selected_E = zeros(num_events, 1);for k = 1:length(E_choices)if k == 1selected_E(rand_vals <= cum_probs(k)) = E_choices(k);elseselected_E((rand_vals > cum_probs(k-1)) & (rand_vals <= cum_probs(k))) = E_choices(k);endendelse% 单能峰:直接重复能量selected_E = repmat(sources(i).energy, num_events, 1);end% 转换为eV并存储all_E = [all_E; selected_E * 1e6];  % 转换为eV
end% 定义本底参数
background_intensity = 0.1; % 本底强度(相对于总事件数的比例)
num_background_events = round(num_events_total * background_intensity); % 本底事件数% 生成本底能量分布(假设为均匀分布,范围覆盖所有核素能量)
E_min = min([sources.energy]); % 最小能量 (MeV)
E_max = max([sources.energy]); % 最大能量 (MeV)
background_E = E_min + (E_max - E_min) * rand(num_background_events, 1); % 本底能量 (MeV)
background_E = background_E * 1e6; % 转换为 eV% 合并本底事件与核素事件
all_E = [all_E; background_E]; % 将本底能量添加到总事件中
%% 模拟探测过程(向量化计算)
% 1. 光子生成(泊松涨落)
N_photon = poissrnd(Y * all_E / 1e6);  % 输入能量已为eV,/1e6转换为MeV% % 2. 光电子转换(二项涨落)
% N_pe = binornd(N_photon, eta);% 使用正态分布近似二项分布
mu = N_photon * eta;                     % 均值
sigma = sqrt(N_photon * eta * (1 - eta)); % 标准差
N_pe = normrnd(mu, sigma);% 3. PMT倍增(法诺涨落,高斯近似)
Q_pmt = normrnd(N_pe*G*e, sqrt(N_pe*G^2*F)*e);% 4. 电子学噪声(高斯噪声)
Q_noise = normrnd(0, sigma_noise_e*e, size(Q_pmt));
Q_total = Q_pmt + Q_noise;% 5. 电压转换
V = Q_total / C;%% 模拟本底探测过程
% 1. 光子生成(泊松涨落)
N_photon_background = poissrnd(Y * background_E / 1e6); % 计算本底光子数% 使用正态分布近似二项分布
mu_background = N_photon_background * eta;                     % 均值
sigma_background = sqrt(N_photon_background * eta * (1 - eta)); % 标准差
N_pe_background = normrnd(mu_background, sigma_background);% 2. PMT倍增(法诺涨落,高斯近似)
Q_pmt_background = normrnd(N_pe_background * G * e, sqrt(N_pe_background * G^2 * F) * e);% 3. 电子学噪声(高斯噪声)
Q_noise_background = normrnd(0, sigma_noise_e * e, size(Q_pmt_background));
Q_total_background = Q_pmt_background + Q_noise_background;% 4. 电压转换
V_background = Q_total_background / C;% 合并本底信号与核素信号
V = [V; V_background];%% 结果可视化
figure;
hold on;% 绘制总谱线
histogram(V, 2048, 'DisplayName', 'Total Spectrum', 'EdgeColor', 'none');% 绘制本底谱线
histogram(V_background, 2048, 'FaceColor', [0.8, 0.8, 0.8], 'FaceAlpha', 0.5,...'DisplayName', 'Background Spectrum');% % 单独绘制各核素谱线(透明叠加)
colors = lines(length(sources));
% for i = 1:length(sources)
%     % 提取该核素对应的事件范围
%     start_idx = sum([sources(1:i-1).activity])/sum([sources.activity]) * num_events_total + 1;
%     end_idx = sum([sources(1:i).activity])/sum([sources.activity]) * num_events_total;
%     range = round(start_idx):round(end_idx);
%     
%     histogram(V(range), 500,...
%         'FaceColor', colors(i,:), 'FaceAlpha', 0.5,...
%         'DisplayName', sources(i).name);
% end% 理论峰位标注
for i = 1:length(sources)for j = 1:length(sources(i).energy)E_MeV = sources(i).energy(j);mu_V = Y * eta * G * e * (E_MeV*1e6) / (1e6 * C);line([mu_V, mu_V], ylim, 'Color', colors(i,:),...'LineStyle', '--', 'LineWidth', 1.5,...'DisplayName', sprintf('%s %.3f MeV', sources(i).name, E_MeV));end
end% 图形修饰
xlabel('Pulse Amplitude (V)');
ylabel('Counts');
title('Simulated Gamma Spectrum (Co:Ba:Cs = 1:2:3)');
legend('show', 'Location', 'northwest');
grid on;
% set(gca, 'YScale', 'log');  % 对数坐标更好展示低计数区域%% 关键参数输出
disp('===== 模拟参数 =====');
fprintf('总事件数: %d\n', num_events_total);
fprintf('本底事件数: %d\n', num_background_events);
disp('各核素理论峰位:');
for i = 1:length(sources)for j = 1:length(sources(i).energy)E_MeV = sources(i).energy(j);mu_V = Y * eta * G * e * (E_MeV * 1e6) / (1e6 * C);fprintf('%s %.3f MeV → %.2e V\n',...sources(i).name, E_MeV, mu_V);end
end

运行结果

相关文章:

matlab 模拟 闪烁体探测器全能峰

clc;clear;close all %% 参数设置 num_events 1e5; % 模拟事件数 E 662e3; % γ射线能量&#xff08;eV&#xff09; Y 38000; % 光产额&#xff08;photon/MeV&#xff0c;NaI(Tl)&#xff09; eta 0.2; % 量子效率 G 1e6; …...

【leetcode hot 100 74】搜索二维矩阵

解法一&#xff1a;双重二分查找 class Solution {public boolean searchMatrix(int[][] matrix, int target) {int nmatrix.length, mmatrix[0].length;int row10, row2n-1, col10, col2m-1;int row_mid, col_mid;while(row1<row2){row_mid (row1row2)/2;while(col1<c…...

Maven 中 maven.test.skip 与skipTests 区别

在 Maven 中&#xff0c;maven.test.skip 和 skipTests 都用于控制测试的跳过行为&#xff0c;但它们的作用范围和底层机制有显著区别。以下是详细对比&#xff1a; 1. maven.test.skip 定义 maven.test.skip 是一个用户自定义属性&#xff08;需在 pom.xml 的 <propertie…...

LLM - R1 强化学习 DRPO 策略优化 DAPO 与 Dr. GRPO 算法 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/146533892 在强化学习算法中&#xff0c;DAPO (Decoupled Clip and Dynamic Sampling Policy Optimization)&#xff0c;通过解耦裁剪和动态采样策…...

element-plus中,Loading 加载组件的使用

一.基本使用 给一个组件&#xff0c;如&#xff1a;table表格&#xff0c;加上v-loading"true"即可。 举例&#xff1a;复制如下代码。 <template><el-table v-loading"loading" :data"tableData" style"width: 100%"><…...

部署完dify:localhost/install 页面不停转圈圈,报错CROS error

解决办法 docker/.env 文件中&#xff0c;需要配置如下&#xff1a; NGINX_HTTPS_ENABLEDtrue NGINX_ENABLE_CERTBOT_CHALLENGEtrue 把Nginx的跨域请求打开...

UE4学习笔记 FPS游戏制作17 让机器人持枪 销毁机器人时也销毁机器人的枪 让机器人射击

添加武器插槽 打开机器人的Idle动画&#xff0c;方便查看武器位置 在动画面板里打开骨骼树&#xff0c;找到右手的武器节点&#xff0c;右键添加一个插槽&#xff0c;重命名为RightWeapon&#xff0c;右键插槽&#xff0c;添加一个预览资产&#xff0c;选择Rifle&#xff0c;根…...

【网络丢包】原因排查及优化

在流式响应中&#xff0c;丢包现象可能由多种因素引起&#xff0c;详细的原因分析、排查方法及优化策略&#xff1a; 一、丢包原因分析 网络拥塞 当网络带宽不足或流量突增时&#xff0c;路由器/交换机可能丢弃超出处理能力的数据包。 硬件问题 网卡、路由器、交换机等设备故…...

Spring Boot 实战:MD5 密码加密应用全解析

Spring Boot 实战&#xff1a;MD5 密码加密应用全解析 1. 引言 在应用开发中&#xff0c;密码安全是用户隐私保护的核心环节。直接存储明文密码存在极大的安全风险&#xff08;如数据库泄露导致用户信息被盗&#xff09;。MD5 加密作为一种广泛使用的哈希算法&#xff0c;可将…...

Android 底部EditView输入时悬浮到软键盘上方

1. 修改 Activity 的 Manifest 配置 确保你的 Activity 在 AndroidManifest.xml 中有以下配置&#xff1a; <activityandroid:name".YourActivity"android:windowSoftInputMode"adjustResize|stateHidden" /> 关键点&#xff1a; adjustResize 是…...

【deepseek 学c++】weakptr引用场景

std::weak_ptr 是 C 中与 std::shared_ptr 配合使用的智能指针&#xff0c;它本身不拥有资源的所有权&#xff0c;仅观察资源的状态&#xff0c;主要用于解决 shared_ptr 的循环引用问题和临时访问共享资源的需求。以下是 weak_ptr 的典型应用场景和核心价值&#xff1a;![ 为…...

从技术架构和生态考虑,不是单纯的配置优化,还有哪些方式可以提高spark的计算性能

从技术架构和生态系统层面提升Spark的计算性能&#xff0c;可采取以下核心策略&#xff1a; 一、计算模型重构与执行引擎升级 1. 弹性分布式数据集&#xff08;RDD&#xff09;的血统优化 通过RDD的Lineage&#xff08;血统&#xff09;机制实现容错时&#xff0c;采用增量式…...

怎样进行服务器的日常安全监控和审计?

服务器的日常安全监控和审计是保障服务器安全运行的重要措施&#xff0c;以下是一些常见的方法和工具&#xff1a; 系统日志监控 启用日志功能&#xff1a;确保服务器操作系统、应用程序和数据库等都启用了详细的日志记录功能。例如&#xff0c;Linux 系统中的 syslog&#x…...

Java 集合框架面经

1、说说有哪些常见的集合框架&#xff1f; 集合框架可以分为两条大的支线&#xff1a; Map 接口&#xff1a;表示键值对的集合&#xff0c;一个键映射到一个值。键不能重复&#xff0c;每个键只能对应一个值。Map 接口的实现类包括 HashMap、LinkedHashMap、TreeMap 等。Colle…...

【已解决】Git:为什么 .gitignore 不生效?如何停止跟踪已提交文件并阻止推送?

你可能遇到的问题 你已经提交了某个文件夹&#xff08;如 dataset&#xff09;到 Git 仓库&#xff0c;之后修改了它&#xff0c;但发现修改内容被 Git 持续跟踪&#xff0c;无法通过 .gitignore 忽略。尝试在 .gitignore 中添加规则后&#xff0c;修改的文件仍然显示为"…...

MOSN(Modular Open Smart Network)-04-TLS 安全链路

前言 大家好&#xff0c;我是老马。 sofastack 其实出来很久了&#xff0c;第一次应该是在 2022 年左右开始关注&#xff0c;但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFAStack-00-sofa 技术栈概览 MOSN&#xff08;Modular O…...

SICAR 标准 KUKA 机器人标准功能块说明手册

功能块名称:LSicar_Robot_KUKA_PrD 目录 1. 概述 2. 功能说明 2.1 程序控制 2.2 状态监控 2.3 报警与故障处理 2.4 驱动控制 3. 关键参数说明 4. 操作步骤指南 4.1 初始化配置 4.2 运行控制 4.3 状态监控 5. 常见故障处理 6. 注意事项 附录1:程序段索引 附录…...

QT三 自定义控件,自定义控件的事件处理自定义事件过滤,原始事件过滤

一 自定义控件 现在的需求是这样&#xff1a; 假设我们要在QWidget 上做定制&#xff0c;这个定制包括了关于 一些事件处理&#xff0c;意味着要重写QWidget的一些代码&#xff0c;这是不实际的&#xff0c;因此我们需要自己写一个MyWidget继承QWidget&#xff0c;然后再MyWi…...

Leetcode算法方法总结

1. 双指针法解决链表/数组题目 只要数组有序&#xff0c;就要想到双指针做法。还有二分法 回文串一般也会用到双指针&#xff0c;回文串的长度由于可能是奇数也可能是偶数&#xff0c;所以在寻找时&#xff0c;既需要寻找奇数长度的回文串&#xff0c;也需要寻找偶数长度的回文…...

【Elasticsearch基础】基本核心概念介绍

Elasticsearch作为当前最流行的分布式搜索和分析引擎&#xff0c;其强大的功能背后是一套精心设计的核心概念体系。本文将深入解析Elasticsearch的五大核心概念&#xff0c;帮助开发者构建坚实的技术基础&#xff0c;并为高效使用ES提供理论支撑。 1 索引&#xff08;Index&…...

docker远程debug

1. 修改 Java 启动命令 在 Docker 容器中启动 Java 程序时&#xff0c;需要添加 JVM 调试参数&#xff0c;jdk8以上版本 java -agentlib:jdwptransportdt_socket,servery,suspendn,address*:5005 -jar your-app.jar jdk8及以下版本&#xff1a; java -Xdebug -Xrunjdwp:tra…...

华为eNSP-配置静态路由与静态路由备份

一、静态路由介绍 静态路由是指用户或网络管理员手工配置的路由信息。当网络拓扑结构或者链路状态发生改变时&#xff0c;需要网络管理人员手工修改静态路由信息。相比于动态路由协议&#xff0c;静态路由无需频繁地交换各自的路由表&#xff0c;配置简单&#xff0c;比较适合…...

CentOS 7下安装PostgreSQL 15

一、简介 PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统&#xff08;ORDBMS&#xff09;&#xff0c;是以加州大学计算机系开发的POSTGRES&#xff0c;4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现在商业…...

时序数据库 InfluxDB(一)

时序数据库 InfluxDB&#xff08;一&#xff09; 数据库种类有很多&#xff0c;比如传统的关系型数据库 RDBMS&#xff08; 如 MySQL &#xff09;&#xff0c;NoSQL 数据库&#xff08; 如 MongoDB &#xff09;&#xff0c;Key-Value 类型&#xff08; 如 redis &#xff09…...

动态添加view方法-微信小程序

在微信小程序中&#xff0c;通过动态数据绑定和条件渲染来实现动态添加 view 组件的效果。 以下是一个简单的示例&#xff0c;展示如何根据数据动态添加 view。 WXML 文件 在 WXML 文件中&#xff0c;使用 wx:for 指令来遍历数组&#xff0c;并动态生成 view 组件。 <view…...

Java中清空集合列表元素有哪些方式

在 Java 里&#xff0c;存在多种清空列表的方式&#xff0c;下面为你汇总并附上对应的示例代码&#xff1a; import java.util.ArrayList; import java.util.List;public class ListClearDemo {public static void main(String[] args) {// 初始化一个列表List<String> …...

QOpenGLWidget动态加载功能实现教程(Qt+OpenGL)

QOpenGLWidget动态加载功能实现教程 我需要在Qt里面使用QOpenGLWidget显示OpenGL窗口&#xff0c;并且需要实现加载模型后重新渲染更新窗口的功能&#xff0c;但是一直无法更新被卡住了&#xff0c;现在把问题解决了总结一下整个实现过程。 创建一个自己的OpenGLWidget类 QOp…...

00.【Linux系统编程】 Linux初识(云服务器设置CentOS并使用、Xshell链接云服务器)

目录 一、华为云服务器免费体验申请 二、Xshell远程链接创建好的华为云服务器 2.1 下载Xshell 2.2 Xshell远程连接华为云服务器 一、华为云服务器免费体验申请 华为云官网 1. 进入华为云官网&#xff0c;最上面一栏点活动&#xff0c;并进入免费体验中心。 2. 找到含有“…...

数据结构-二叉链表存储的二叉树

树形结构是一类重要的非线性数据结构&#xff0c;其中以树和二叉树最为常用。对于每一个结点至多只有两课子树的一类树&#xff0c;称其为二叉树。二叉树的链式存储结构是一类重要的数据结构&#xff0c;其形式定义如下&#xff1a; 而二叉树的前序、中序遍历是非常重要的能够访…...

鸿蒙Flutter实战:20. Flutter集成高德地图,同层渲染

本文以同层渲染为例&#xff0c;介绍如何集成高德地图 完整代码见 Flutter 鸿蒙版 Demo 概述 Dart 侧 核心代码如下&#xff0c;通过 OhosView 来承载原生视图 OhosView(viewType: com.shaohushuo.app/customView,onPlatformViewCreated: _onPlatformViewCreated,creation…...

idea中快速注释函数

在IntelliJ IDEA中&#xff0c;有多种方法可以快速注释函数。 使用快捷键 你可以使用以下快捷键来快速注释函数[3]&#xff1a; 行注释&#xff1a;使用Ctrl/&#xff08;Windows系统&#xff09;或Command/&#xff08;Mac系统&#xff09;可以在当前行前添加或删除单行注释…...

Leetcode13-罗马数字转整数

题目链接&#xff1a;13. 罗马数字转整数 - 力扣&#xff08;LeetCode&#xff09; 如同上一题&#xff0c;直接用暴力法破解&#xff0c;简单好理解 int romanToInt(char* s) {int len strlen(s);int res 0;for(int i 0; i < len; i) {switch(s[i]) {case M:res 1000…...

3、pytest实现参数化

在 pytest 中&#xff0c;参数化&#xff08;parametrization&#xff09;是一种强大的功能&#xff0c;可以让你用不同的输入数据重复执行同一个测试函数。这种功能非常有用&#xff0c;可以帮助你显著减少重复代码并提高测试覆盖率。 参数化的主要作用是&#xff1a; 测试多…...

深入理解指针(4)(C语言版)

文章目录 前言一、回调函数是什么&#xff08;一&#xff09;定义&#xff08;二&#xff09;工作原理&#xff08;三&#xff09;应用场景 二、qsort举例&#xff08;一&#xff09;qsort函数简介&#xff08;二&#xff09;比较函数的定义&#xff08;三&#xff09;使用示例…...

【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的日志管理:Logback 的集成

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、开篇整…...

记录一次渗透测试/常用命令

渗透测试常用命令速览&#xff1a;从扫描到提权再到流量劫持 在渗透测试中&#xff0c;命令行工具是我们的得力助手。本文总结了我最近在测试虚拟机靶机&#xff08;IP: 192.168.73.129&#xff09;时用到的主要命令&#xff0c;涵盖网络扫描、暴力破解、权限提升、数据修改和…...

C++11QT复习(二)

文章目录 Day4-4 New 与 delete 表达式&#xff08;2025.03.20&#xff09;1. new 表达式的三个步骤2. delete 表达式的两个步骤3. new[] 与 delete[] Day5 类的定义和关键字再探&#xff08;2025.03.24&#xff09;1. C 关键字 const、static、extern2. 类的定义&#xff1a;C…...

Pytorch学习笔记(十)Learning PyTorch - Learning PyTorch with Examples

这篇博客瞄准的是 pytorch 官方教程中 Learning PyTorch 章节的 Learning PyTorch with Examples 部分。 官网链接&#xff1a;https://pytorch.org/tutorials/beginner/pytorch_with_examples.html 完整网盘链接: https://pan.baidu.com/s/1L9PVZ-KRDGVER-AJnXOvlQ?pwdaa2m…...

如何使用DeepSeek编写测试用例?

一、DeepSeek在测试用例设计中的定位 DeepSeek作为AI工具,并非直接替代测试设计,而是通过以下方式提升效率: 快速生成基础用例框架(等价类、边界值等) 智能补充易遗漏场景(如特殊字符、异常流) 自动化脚本片段生成(Python/pytest/JUnit等) 测试数据构造建议(符合业务…...

sql server如何提高索引命中率

#新星杯14天创作挑战营第9期# 前言 近期发现以前开发的系统运行缓慢&#xff0c;经排查&#xff0c;发现有很大的优化空间。数据库版本使用的是sql server&#xff0c;主要有以下一些问题点&#xff1a;数据表无索引、一些不规范的写法&#xff08;例如in、大表关联&#xff0…...

FALL靶机

下载靶机&#xff0c;可以看到靶机地址 在kali上扫描靶机的端口和目录文件 访问&#xff1a;http://192.168.247.146/test.php&#xff0c;他提示我们参数缺失 我们爆破一下他的参数 使用kali自带的fuzz FUZZ就是插入参数的位置 -w 指定字典文件 wfuzz -u "http://192.…...

北斗导航 | 改进最小二乘残差法的接收机自主完好性监测算法原理,公式,应用,研究综述,matlab代码

改进最小二乘残差法的接收机自主完好性监测算法研究 摘要 本文针对传统最小二乘残差RAIM算法在复杂环境下检测性能不足的问题,提出了一种基于加权抗差估计的改进算法。通过引入IGGⅢ权函数构建抗差最小二乘模型,结合滑动窗口方差估计和自适应阈值调整机制,显著提升了算法对…...

WPF 浅述ToolTipService.ShowOnDisabled

WPF 浅述ToolTipService.ShowOnDisabled ToolTipService.ShowOnDisabled 属性可以让工具提示在控件禁用状态下仍然显示。这是一个非常方便且简洁的方式。 使用 ToolTipService.ShowOnDisabled&#xff0c;你可以通过设置 ToolTipService.ShowOnDisabled 属性来确保即使在控件禁…...

嵌入式硬件工程师从小白到入门-PCB绘制(二)

PCB绘制从小白到入门&#xff1a;知识点速通与面试指南 一、PCB设计核心流程 需求分析 明确电路功能&#xff08;如电源、信号处理、通信&#xff09;。确定关键参数&#xff08;电压、电流、频率、接口类型&#xff09;。 原理图设计 元器件选型&#xff1a;匹配封装、电压、…...

05 Python 元组:不可变序列的解析和应用

文章目录 前言元组定义元组的运算索引操作切片操作连接和重复运算循环遍历元组中的元素成员运算内置函数运算 打包和解包操作交换变量的值 前言 在 Python 编程领域&#xff0c;元组&#xff08;Tuple&#xff09;是一类极为重要的数据结构。它属于不可变的序列类型&#xff0…...

MATLAB 批量移动 TIF 文件至分类文件夹

文章目录 前言一、步骤二、代码 前言 本代码用于从指定的源文件夹 (sourceFolder) 中筛选所有 .tif 文件&#xff0c;并根据文件名的特定关键词&#xff08;Daynight 和 FDI&#xff09;将其分类移动到相应的目标文件夹 (targetDaynightFolder 和 targetFDIFolder)。 一、步骤…...

Milvus×最新版DeepSeek v3:对标Claude,本地数据五分钟写网站

前言 就在昨晚&#xff0c;DeepSeek v3推出了新版本V3-0324&#xff0c;再次一夜爆火。 虽然官方表示“这只是一次小升级”“API接口和使用方式不变”&#xff0c;但经过Zilliz的第一时间实测&#xff0c;我们发现无论是逻辑能力&#xff0c;还是编程能力&#xff0c;相较原本的…...

抽象代数:群论

系列笔记为本学期上抽象代数课整理的&#xff0c;持续更新。 群的相关定义 群的定义 群是一个带有满足结合律、单位元、逆元的二元运算的集合&#xff0c;记作 ( G , ⋅ ) \left({G, \cdot}\right) (G,⋅)。若群运算满足结合律&#xff0c;则该集合构成半群。如果该半群中含…...

基于 mxgraph 实现流程图

mxgraph 可以实现复杂的流程图绘制。mxGraph里的Graph指的是图论(Graph Theory)里的图而不是柱状图、饼图和甘特图等图(chart)&#xff0c;因此想找这些图的读者可以结束阅读了。 作为图论的图&#xff0c;它包含点和边&#xff0c;如下图所示。 交通图 横道图 架构图 mxGrap…...

Stereolabs ZED Box Mini:机器人与自动化领域的人工智能视觉新选择

在人工智能视觉技术快速发展的今天&#xff0c;其应用场景正在持续拓宽&#xff0c;从智能安防到工业自动化&#xff0c;从机器人技术到智能交通&#xff0c;各领域都在积极探索如何利用这一先进技术。而 Stereolabs 推出的ZED Box Mini&#xff0c;正是一款专为满足这些多样化…...