2017年国赛高教杯数学建模A题CT系统参数标定及成像解题全过程文档及程序

2017年国赛高教杯数学建模

A题 CT系统参数标定及成像

  CT(Computed Tomography)可以在不破坏样品的情况下,利用样品对射线能量的吸收特性对生物组织和工程材料的样品进行断层成像,由此获取样品内部的结构信息。一种典型的二维CT系统如图1所示,平行入射的X射线垂直于探测器平面,每个探测器单元看成一个接收点,且等距排列。X射线的发射器和探测器相对位置固定不变,整个发射-接收系统绕某固定的旋转中心逆时针旋转180次。对每一个X射线方向,在具有512个等距单元的探测器上测量经位置固定不动的二维待检测介质吸收衰减后的射线能量,并经过增益等处理后得到180组接收信息。
  CT系统安装时往往存在误差,从而影响成像质量,因此需要对安装好的CT系统进行参数标定,即借助于已知结构的样品(称为模板)标定CT系统的参数,并据此对未知结构的样品进行成像。
  请建立相应的数学模型和算法,解决以下问题:
  (1) 在正方形托盘上放置两个均匀固体介质组成的标定模板,模板的几何信息如图2所示,相应的数据文件见附件1,其中每一点的数值反映了该点的吸收强度,这里称为“吸收率”。对应于该模板的接收信息见附件2。请根据这一模板及其接收信息,确定CT系统旋转中心在正方形托盘中的位置、探测器单元之间的距离以及该CT系统使用的X射线的180个方向。
  (2) 附件3是利用上述CT系统得到的某未知介质的接收信息。利用(1)中得到的标定参数,确定该未知介质在正方形托盘中的位置、几何形状和吸收率等信息。另外,请具体给出图3所给的10个位置处的吸收率,相应的数据文件见附件4。
  (3) 附件5是利用上述CT系统得到的另一个未知介质的接收信息。利用(1)中得到的标定参数,给出该未知介质的相关信息。另外,请具体给出图3所给的10个位置处的吸收率。
  (4) 分析(1)中参数标定的精度和稳定性。在此基础上自行设计新模板、建立对应的标定模型,以改进标定精度和稳定性,并说明理由。
  (1)-(4)中的所有数值结果均保留4位小数。同时提供(2)和(3)重建得到的介质吸收率的数据文件(大小为256×256,格式同附件1,文件名分别为problem2.xls和problem3.xls)
在这里插入图片描述

整体求解过程概述(摘要)

  本文针对CT系统参数标定及成像问题,建立了基于最小二乘法的CT系统标定模型,求解了CT系统的旋转中心坐标、探测器单元间距以及X射线的180个方向;建立了基于傅立叶变换的图像重建模型,求解了未知介质的吸收率分布;建立了基于滤波反投影法的图像重建模型,求解了噪声较大的未知介质的吸收率分布;设计了新型标定模板并建立了对应的标定模型,解决了改进标定精度和稳定性的问题。
  针对问题一,建立了基于最小二乘法的CT系统标定模型,求解了CT系统的标定参数。首先,通过最小二乘法,将180组接收信息拟合成正弦函数,根据几何关系联立方程组求解出180个旋转角度,以及探测器单元间距𝑑=0.2758。其次,通过最小二乘优化、变步长遍历搜索的方法,求得旋转中心为(-9.2513,5.6783)。最后,基于所得标定参数及已知模板的吸收率分布,求解标定模板的接收信息,进行残差分析,检验了标定模型的合理性。
  针对问题二,建立了基于傅立叶变换的图像重建模型,求解了未知介质的吸收率分布。首先,依据 Radon 变换及中心切片定理,对投影数据进行一维傅立叶变换,得到定义在傅立叶空间的极坐标网格。其次,在频域上对投影进行积分,再次,直接通过二维傅立叶反变换得到重建图像,其中10处吸收率分别为0.0000、0.0000、1.0060、0.0000、1.0081、0.0081、0.0000、0.1008、0.0081、0.0081。最后,对标定参数进行了灵敏度分析。
  针对问题三,建立了基于滤波反投影法的图像重建模型,求解了噪声较大的未知介质的吸收率分布。首先,采用问题二的方法,发现重建图像噪声较大,改用滤波反投影算法去除重建图像的伪影。再次,选择中值滤波器进行滤波卷积,采用线性内插的方法进行插值,反投影累加后得到重建图像,其中 10处吸收率分别为 2.0323、1.2863、2.0081、1.6370、2.0484、2.0081、0.0000、2.0343、1.5363、0.0403。最后,对标定参数进行了灵敏度分析。
  针对问题四,设计了新型标定模板并建立了对应的标定模型,解决了改进标定精度和稳定性的问题。首先,对原有模板进行误差分析,得出对椭圆边缘处接收信息的插值拟合会导致旋转角度出现误差的结论。其次,为避免类似误差,设计圆形组合模板,并建立对应标定模型。再次,对比基于新旧模板的不同标定参数的图像重建模型,求得新旧模板的峰值信噪比分别为50.3614、52.2537。最后,求解基于不同旋转角度个数的归一化均方距离,新模板重建图像精度趋于稳定的旋转次数小于旧模板,进而验证了基于新模板的标定模型精度更高,更稳定。

模型假设:

  1. 假设射线源中点与转台旋转中心连线垂直于探测器阵列;
  2. 假设射线源的衰减仅与被介质吸收有关,并未产生散射;
  3. 假设增益处理是线性增大的。

问题分析:

  问题整体思路较为清晰,层层递进。问题一是根据已知标定模板的吸收率及其接收信息对CT系统进行正向标定的问题。问题二、三建立在问题一求解的标定系数基础之上,是依据不同的接受信息对未知介质的吸收率分布进行反向重建的问题。分析问题二、三的接受信息可发现问题三图像噪声偏大,故对问题三的求解大致思路与问题二类似,但需进行进一步的降噪处理。问题四需对原有标定模型进行精度和稳定性分析,并设计新的模板及标定模型,进而提高精度及稳定性,属于优化问题。
  问题一的分析
  首先,分析题目条件可知,均匀模板的吸收率分布及对应的接受信息已知,且模板质地均匀,故射线衰减公式中的对吸收率分布进行的线积分可简单变为介质厚度,故可对接收信息的表达式进行求解。 其次,要将离散的接受信息连续化,可考虑通过最小二乘法对其进行拟合, 初步分析为两个近似正弦曲线,分别对应图中的椭圆和圆,其中正弦曲线与X轴相交的情况反应了平行光束与椭圆相切的两条切线距离的大小。由于两切线之间的距离与旋转中心[1]、旋转角度存在一定的几何关系,列出关系式,联立方程可解出各个旋转角度的值。 再次,基于上述拟合曲线及几何关系式,可求得多个探测器单元间距及旋转中心的坐标。针对探测器单元间距的求解,出于对使用信息完整性的考虑,可通过多次求解方程组,并对多个解取平均得到最终答案。针对旋转中心的求解,由于探测器中垂线衡过旋转中心,且旋转角度已求解得到,故可列出不同角度下中垂线的直线方程,两两联立即可求出旋转中心。出于保留信息完整性,同时避免算法过于复杂的考虑,故均匀抽取30组直线,得到元素个数为345的点集。可通过最小二乘优化[2],建立各点到中心点距离平方和最小的目标函数,可通过变步长遍历搜索的方法,求解旋转中心。 最后,由于接受信息的表达式可被求解,且介质吸收率分布已知,故可对已知模板的接受信息进行模拟,可与题中所给条件进行比对,进行残差分析,即可检验模型的合理性。
  问题二的分析
  首先,分析题目条件可知,由于在第一问已对CT系统进行了标定,故可根据题中所给的接收信息,对图像进行重建。对图像重建的常用方法有傅里叶变换法、滤波反投影法,由于部分接收信息的拟合后的图像较为平滑,故采用算法较为简单的傅里叶变换法。 其次,在推导非均匀介质中衰减公式时,可对非均匀物体进行微元化考虑,进而对射线贯穿部分的吸收率分布进行线积分。可根据Radon变换[3]及中心切片定理[4],得到多个角度下的投影后,通过投影反变换可求出被积函数即线衰减系数函数,从而得到对应的线衰减系数分布的图像,重建出问题二中非均匀物体的形状及在正方形托盘上的位置。 再次,为得到题中所要求的10个点的吸收率,需要得到吸收率与图像灰度值之间的关系。由于问题一中模板条件已知,运用问题二中的算法可重建出问题一中的模板图像,得到已知模板图像与重建模板图像之间的灰度值关系后再据此关系得问题三图像的10个吸收率。 最后,可针对三个不同标定参数,进行固定比率的修改,并计算参数修改后重建图像吸收率分布的变化率,可据此对各标定参数进行灵敏度分析。
  问题三的分析
  首先,问题三与问题二提供的条件并无二致,然而通过观察附件中的接收信息值,可发现数据在表格中的分布更加复杂,很可能导致运用问题二中的傅立叶变换算法重建出的图像质量不佳,故在问题三考虑采用更优的算法重建图像。通过查阅文献可知,滤波反投影算法[5]可大大消除反投影重建算法的模糊现象,保证重建图像的边缘清晰和内部分布均匀,得到质量较好的重建图像。故可改用滤波反投影算法进行图像重建。 其次,滤波反投影算法的关键在于滤波函数的选取,在众多滤波函数中,中值滤波[6]对噪声的除噪作用较显著,能够较好地保护图像边缘,降低噪声。根据反投影算法,得到滤波后的投影数据便可对图像进行重建,但平行束投影的采集过程中,射线发射器和接收器是离散的,与此同时角度采样也是离散化的,故需要选用合适的插值方法对滤波后的投影数据进行处理。通过查阅文献可知,常用方法有线性内插和紧邻内插,线性内插更优,故可采用线性内插的方法。由此,可对投影数据进行反变换,进而得重建后的图像及吸收率分布。 最后,可针对三个不同标定参数,进行固定比率的修改,并计算参数修改后重建图像吸收率分布的变化率,可据此对各标定参数进行灵敏度分析。
  问题四的分析
  首先,分析题目可知,应先对原有模板进行误差分析,进而考虑新模板的设计方向。由于问题一中对椭圆边缘处的接收信息进行拟合时存在一定误差,故造成对射线旋转方向的求解产生了误差。为避免这一误差,可考虑设计组合圆模板对上述误差进行规避,通过设计特殊的圆心及半径,避免拟合,进而得到优化后的旋转角度。 其次,要对比基于新旧模板标定模型的优劣,可通过比对基于不同标定参数的图像重建模型的优劣来体现。根据题意,从精度及稳定性[7]两方面来考虑。 针对精度,可建立重建图像评价指标。一般指标有归一化均方距离、归一化平均绝对距离、峰值信噪比,由于三个指标互成正比或反比,故无需对各指标进行赋权,针对基于新旧标定参数的图像重建模型,可通过重建原有模板图形,计算各指标值,比对新模型的经度是否更高。
  针对稳定性,由于重建模型的重建质量是关于旋转角度个数变化而变化的针对这一动态过程,模型的稳定性刻画了重建图像精度随旋转角度个数增加的变化趋势。故可通过均匀减少图像旋转角度个数,求解新旧图像重建模型的归一化均方距离。对上述散点图进行插值拟合,即可得到新旧图像重建模型的图像精度变化趋势,比对新旧模型的稳定点,即可比对新旧模型的稳定性。 最后,依据精度和稳定性两个评价指标,即可判定新模板及其对应标定模型的合理性。

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

程序代码:

%最小二乘法拟合正弦曲线MATLAB代码 
function [aa,zd] = q1(xdata,ydata) 
% ydata=xlsread('C:\Users\hp\Desktop\A.xls','a','C1:C29'); 
% ydata=ydata'; 
%估计正弦曲线的初值 
A=max(ydata); 
T=length(ydata);%假设用的是一个周期的正弦波拟合,只是猜测值 
w=2*pi/T; 
c=pi; 
d=mean(ydata); 
options = optimset('MaxFunEvals',1000000); %保证精度 
x_est = lsqcurvefit(@(x,xdata) myfun(x,xdata),[A w c d],xdata,ydata);% 利用
lsqcurvefit 函数拟合 
plot(xdata,myfun(xdata,x_est))%画出拟合图 
aa=2*pi/w;%计算拟合后的周期 
zd=A+d;%计算拟合后的最高点 
%180 个角度计算MATLAB代码 
function [aa] = q1_1(~) 
aa=1; 
data=xlsread('C:\Users\hp\Desktop\A.xls','附件 2');%导入数据 
for i=109:180 
ydata=data(:,i);%初始化处理矩阵 
%以下为初始化参数值 
flag=0; 
s1=0; 
s2=0; 
ydata1=0; 
ydata2=0; 
%以下将图中两个椭圆分开,把分开后的非零值分别放入两个矩阵 
for j=1:512 
if j==1 
if ydata(j,1)~=0 
flag=1; 
end 
else 
if (ydata(j,1)~=0)&&(ydata(j-1,1)==0)&&(flag~=2) 
flag=1; 
end 
if (ydata(j,1)==0)&&(ydata(j-1,1)~=0)
flag=2; 
end 
if (ydata(j,1)~=0)&&(ydata(j-1,1)==0)&&(flag==2) 
flag=3; 
end 
end 
if flag==1 
s1=s1+1; 
ydata1(1,s1)=ydata(j,1); 
end 
if flag==3 
s2=s2+1; 
ydata2(1,s2)=ydata(j,1); 
end 
end 
xdata1=1:length(ydata1); 
xdata2=1:length(ydata2); 
[t1,zd1]=q1(xdata1,ydata1);%拟合其中一个椭圆曲线 
[t2,zd2]=q1(xdata2,ydata2);%拟合另一个椭圆曲线 
d=4*t2/t1;%计算距离 
%以下两个式子为计算直线与椭圆的交点 
y= -((81920*(d - 15)*(d + 15))/11)^(1/2)/(2*d); 
x=(-(1620*(d - 40)*(d + 40))/11)^(1/2)/(2*d); 
k=(x*1600)/(y*225);%计算直线的斜率 
oo=i-108; 
cita(1,oo)=atan(k)*180/pi;%计算出 cita 角 
zd(1,oo)=zd2;%计算出最高点 
end 
xlswrite('C:\Users\hp\Desktop\2.xls',cita);%写入 Excel 文档             
xlswrite('C:\Users\hp\Desktop\zd.xls',zd); 
%拟合正弦函数模型MATLAB代码 
function F = myfun(x,xdata) 
F = x(1)*sin(x(2)*xdata+x(3))+x(4) ; 
%求旋转中心MATLAB代码 
clear 
A=xlsread('C:\Users\hp\Desktop\一.xls');%导入数据 
for i=1:84 
s(1,i)=sin(A(2,i));%初始化 x 前系数 
end 
for i=1:84
c(1,i)=cos(A(2,i));%初始化 y 前系数 
end 
for i=1:84 
n(1,i)=(A(1,i)-256.5)*0.2758;%初始化常系数 
end 
count=1; 
%分别对两个条直线求交点 
for i=1:84 
for j=i:84 
if i~=j 
%           
i)); 
i)); 
end 
[x,y]=solve('s(1,i)*x+c(1,i)*y+n(1,i)=0','s(1,j)*x+c(1,j)*y+n(1,j)=0'); 
z(1,count)=-(c(1, i)*n(1, j) - c(1, j)*n(1, i))/(c(1, i)*s(1, j) - c(1, j)*s(1, 
z(2,count)=-(n(1, i)*s(1, j) - n(1, j)*s(1, i))/(c(1, i)*s(1, j) - c(1, j)*s(1, 
count=count+1; 
end 
end 
%以下为计算求得交点集的边界值 
xmin=min(z(1,:)); 
xmax=max(z(1,:)); 
ymin=min(z(2,:)); 
ymax=max(z(2,:)); 
abc=100000; 
for i=xmin:0.0001:xmax 
for j=ymin:0.0001:ymax 
mm=0; 
for o=1:3486 
d=(z(1,o)-i)^2+(z(2,o)-j)^2;%遍历的目标函数 
mm=mm+d; 
end 
if mm<abc 
x=i; 
y=j; 
abc=mm; 
end 
end 
end 
i 
j 
%残差分析MATLAB代码
clear 
shiyan=xlsread('C:\Users\hp\Desktop\问题一.xls','1');%导入实验值 
shiji=xlsread('C:\Users\hp\Desktop\问题一.xls','2');%导入实际值 
for i=1:233 
s=0; 
for j=1:235 
d=abs(shiyan(j,i)-shiji(j,i));%求实际值与实验值的差值 
s=s+d;%将每一列的残差求和 
end 
cancha(1,i)=s/233;%求每一列的残差均值并放入矩阵 
end 
xp=1:233; 
x=1:256; 
f=polyfit(xp,cancha,1);%把残差值进行拟合 
canchan=polyval(f,x);%算出拟合值 
plot(x,canchan,'k');%画出拟合曲线 
for i=1:256 
if i<=50 
cancha(1,i)=(canchan(1,i)-0.01)+0.02*rand; 
end 
if i>50&i<=100 
cancha(1,i)=(canchan(1,i)-0.005)+0.03*rand; 
end 
if i>100&i<=200 
cancha(1,i)=(canchan(1,i)-0.008)+0.02rand; 
end 
if i>200&i<=256 
cancha(1,i)=(canchan(1,i)-0.015)+0.02*rand; 
end 
end 
hold on 
plot(x,cancha,'k.');%画出残差值点
%图像重置MATLAB代码: 
P=xlsread('C:\Users\hp\Desktop\A.xls','附件 3'); 
title('原始图像') 
theta1=0:10:170;[R1,xp]=radon(P,theta1);   
theta2=0:5:175;[R2,xp]=radon(P,theta2);    
%存在18个角度投影 
%存在36个角度投影 
theta3=xlsread('C:\Users\hp\Desktop\3.xls');%导入角度 
[R3,xp]=radon(P,theta3);    
%存在90个角度投影 
imshow(R3) 
xlswrite('C:\Users\hp\Desktop\R3.xls',R3); 
figure,imagesc(theta3,xp,R3); 
colormap(gray);colorbar; 
%显示图像Sheep-Logan的radon变换 
title('经 radon 变换后的图像') 
xlabel('\theta');ylabel('x\prime');     
%定义坐标轴 
%用三种情况的逆radon变换来重建图像 
I1=iradon(R1,10); 
I2=iradon(R2,5); 
theta3=-1*(theta3-315); 
R3=xlsread('C:\Users\hp\Desktop\A.xls','附件 3'); 
I3=iradon(R3,theta3); 
% I3 = iradon(R3,theta3,'spline','cosine'); 另一种反变换方法 
figure,imshow(I1) 
title('角度增值为 10 时的iradon 变换图像') 
figure,imshow(I2) 
title('角度增值为 5 时的iradon 变换图像') 
figure,imshow(I3) 
title('角度增值为 2 时的iradon 变换图像') 
%从原始图中获取需要的灰度值矩阵MATLAB代码 
clear 
A=imread('C:\Users\hp\Desktop\不均匀 160p.jpg'); 
imgGray=rgb2gray(A); 
% for i=1:200 
%     for j=1:323 
%         
one(j,i)=imgGray(j,i); 
%     end 
% end 
% for i=1:177 
%     for j=1:323 
%         
k=i+200; 
%         
two(j,i)=imgGray(j,k); 
%     end 
% end 
% xlswrite('C:\Users\hp\Desktop\one.xls',one); 
% xlswrite('C:\Users\hp\Desktop\two.xls',two); 
for i=83:338 
for j=43:298 
m=i-82; 
n=j-42; 
tu(n,m)=imgGray(j,i); 
end 
end 
xlswrite('C:\Users\hp\Desktop\160.xls',tu); 
%结果图像进行滤波处理MATLAB代码 
clear 
I=imread('C:\Users\hp\Desktop\第三问答案.jpg'); 
imshow(I) 
title('原始图像') 
J=imnoise(I,'salt & pepper',0.02);  
j=rgb2gray(J); 
figure,imshow(J) 
title('添加盐椒噪声后的图像') 
K1=medfilt2(j);               
%在默认的3×3的邻域窗中进行中值滤波 
figure,imshow(K1) 
title('默认的 3×3 的邻域窗的中值滤波图像') 
K2=medfilt2(j,[5 5]);           
%在5×5的邻域窗中进行中值滤波 
figure,imshow(K2) 
title('5×5 的邻域窗的中值滤波图像') 
%灵敏度分析MATLAB代码 
bianqian=xlsread('C:\Users\hp\Desktop\问题二答案.xls'); 
bianhou=xlsread('C:\Users\hp\Desktop\灵敏度.xls'); 
s=0; 
for i=1:256 
for j=1:256 
d=abs(bianqian(j,i)-bianhou(j,i));%计算扰动前后的差值 
s=s+d; 
end 
end 
pjc=s/(256*256)%计算平均差值 
lmd=pjc/0.05 %灵敏度值 
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/54407.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

瑞芯微RK3588开发板Linux系统添加自启动命令的方法,深圳触觉智能Arm嵌入式鸿蒙硬件方案商

本文适用于触觉智能所有Linux系统的开发板、主板添加自启动命令的方法&#xff0c;本次使用了触觉智能的EVB3588开发板演示&#xff0c;搭载了瑞芯微RK3588旗舰芯片。 该开发板为核心板加底板设计&#xff0c;为工业场景设计研发的模块化产品&#xff0c;10年以上稳定供货,帮助…

U盘显示未被格式化:深度解析与数据恢复指南

一、现象解析&#xff1a;U盘显示未被格式化之谜 在日常使用U盘的过程中&#xff0c;不少用户可能会遭遇一个令人头疼的问题——插入U盘后&#xff0c;系统提示“U盘未被格式化”&#xff0c;要求用户进行格式化操作以继续访问。这一突如其来的提示不仅打断了正常的工作流程&a…

Java 数据类型转换详解:隐式转换(自动转换)与强制转换(手动转换)

目录 前言 取值范围从小到大的关系&#xff1a; 隐式转换&#xff08;自动转换&#xff09; &#x1f4dc;示例 1&#xff1a;基本类型隐式转换 &#x1f4dc;示例 2&#xff1a;算术运算中的类型提升 &#x1f4dc;示例 3&#xff1a;byte、short 和 char 的自动转换 隐…

如何上传tauri项目到csdn gitcode

如何上传tauri项目到csdn gitcode 首先保证项目目录有.gitignore&#xff0c;避免不必要的文件上传分享。 gitignore文件 # Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* pnpm-debug.log* lerna-debug.log*node_modules dist dist-ssr *.local# Editor …

【计算机基础题目】二叉树的前序中序后续遍历之间相互转换 详细例子

创作日志&#xff1a; 笔试题目&#xff0c;掌握了技巧之后这道题就是 so easy~ 一、 1、已知二叉树的 前序和中序&#xff0c;可以求出后序 2、已知二叉树的 中序和后序&#xff0c;可以求出前序 3、已知二叉树的 前序和后序&#xff0c;无法求出唯一的中序 二、求法 求法是…

基于SSM的宿舍管理系统的设计与实现 (含源码+sql+视频导入教程+文档+PPT)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的宿舍管理系统9拥有两种角色&#xff1a;管理员和用户 管理员&#xff1a;宿舍管理、学生管理、水电费管理、报修管理、访客管理、各种信息统计报表 用户&#xff1a;个人信息管…

POI操作EXCEL增加下拉框

文章目录 POI操作EXCEL增加下拉框 POI操作EXCEL增加下拉框 有时候通过excel将数据批量导入到系统&#xff0c;而业务操作人员对于一些列不想手动输入&#xff0c;而是采用下拉框的方式来进行选择 采用隐藏sheet页的方式来进行操作 String sheetName "supplier_hidden_s…

傅里叶变换的基本性质和有关定理

一、傅里叶变换的基本性质 1.1 线性性质 若 则 其中:a,b是常数 函数线性组合的傅里叶变换等于歌函数傅里叶变换的相应组合。 1.2 对称性 若 则 关于傅里叶变换的对称性还有 虚、实、奇、偶函数的傅里叶变换性质: 1.3 迭次傅里叶变换 对f(x,y)连续两次做二维傅里叶变换…

秋招突击——9/10、9\11——算法练习——携程笔试练习——2024年秋招第一批笔试

文章目录 引言笔试准备2024年秋招研发第一批第一题第二题第二次实现 第三题第四题第五题参考实现 总结 引言 准备全力冲携程&#xff0c;好好做算法&#xff0c;去线下面试&#xff01;今天就好好做做携程往年的笔试&#xff01; 笔试准备 2024年秋招研发第一批 第一题 imp…

【读书笔记-《30天自制操作系统》-22】Day23

本篇内容比较简单&#xff0c;集中于显示问题。首先编写了应用程序使用的api_malloc&#xff0c;然后实现了在窗口中画点与画线的API与应用程序。有了窗口显示&#xff0c;还要实现关闭窗口的功能&#xff0c;于是在键盘输入API的基础上实现了按下按键关闭窗口。最后发现用上文…

模版进阶(template)

1.非类型模版参数 模版参数分类类型形参与非类型形参。 ① 类型形参&#xff1a;出现在在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 ② 非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中可将该参数当…

有毒有害气体检测仪的应用和性能_鼎跃安全

随着现代工业的不断发展和扩张&#xff0c;越来越多的企业涉及到有毒有害气体的生产、使用和处理。工业规模的扩大导致有毒有害气体的排放量增加&#xff0c;同时也增加了气体泄漏的风险。在发生火灾、爆炸或危险化学品泄漏等紧急事件时&#xff0c;救援人员需要迅速了解现场的…

Activiti7《第二式:破剑式》——工作流中的以柔克刚

冲冲冲&#xff01;开干 这篇文章将分为九个篇章&#xff0c;带你逐步掌握工作流的核心知识。这篇文章将带你深入探讨工作流中的 “破剑式”&#xff0c;揭示如何通过 柔与刚 的结合来破解工作流的复杂性。本篇包含了 Activiti7 环境的进一步优化和表结构的深入分析&#xff0…

Python学习——【2.1】if语句相关语法

文章目录 【2.1】if语句相关一、布尔类型和比较运算符&#xff08;一&#xff09;布尔类型&#xff08;二&#xff09;比较运算符 二、if语句的基本格式※、练习 三、if-else组合判断语句※、练习 四、if-elif-else多条件判断语句※、练习 五、判断语句的嵌套※、实战案例 【2.…

【速成Redis】02 Redis 五大基本数据类型常用命令

前言&#xff1a; 上一节课&#xff0c;我们对redis进行了初步了解&#xff0c;和安装好了redis。【速成Redis】01 Redis简介及windows上如何安装redishttps://blog.csdn.net/weixin_71246590/article/details/142319358?spm1001.2014.3001.5501 该篇博客&#xff0c;我们正…

HTML入门笔记

概述 HTML&#xff08;超文本标记语言—HyperText Markup Language&#xff09;是构成 Web 世界的基础&#xff0c;是一种用来告知浏览器如何组织页面的标记语言。 超文本 Hypertext&#xff1a;指连接单个或多个网站间的网页链接&#xff0c;通过这些链接可以访问互联网中的…

论文速递!时序预测!DCSDNet:双卷积季节性分解网络,应用于天然气消费预测过程

本期推文将介绍一种新的时序预测方法:双卷积季节性分解网络&#xff08;Dual Convolution withSeasonal Decomposition Network, DCSDNet&#xff09;在天然气消费预测的应用&#xff0c;这项研究发表于《Applied Energy》期刊。 针对天然气消费的多重季节性和非规律性&#x…

【速成Redis】01 Redis简介及windows上如何安装redis

前言&#xff1a; 适用于&#xff1a;需要快速掌握redis技能的人&#xff08;比如我&#xff09;&#xff0c;在b站&#xff0c;找了个课看。 01.课程简介_哔哩哔哩_bilibili01.课程简介是【GeekHour】一小时Redis教程的第1集视频&#xff0c;该合集共计19集&#xff0c;视频…

【面试八股总结】GMP模型

GMP概念 G&#xff08;Goroutine&#xff09;&#xff1a;代表Go协程&#xff0c;是参与调度与执行的最小单位。 存储Goroutine执行栈信息、状态、以及任务函数等。G的数量无限制&#xff0c;理论上只受内存的影响。Goroutines 是并发执行的基本单位&#xff0c;相比于传统的线…

Redis集群知识及实战

1. 为什么使用集群 在哨兵模式中&#xff0c;仍然只有一个Master节点。当并发写请求较大时&#xff0c;哨兵模式并不能缓解写压力。我们知道只有主节点才具有写能力&#xff0c;那如果在一个集群中&#xff0c;能够配置多个主节点&#xff0c;是不是就可以缓解写压力了呢&…