RTI无线电层析成像Matlab仿真数据生成

文章目录

  • 概述
  • 初始化环境参数

概述

无线电层析成像是一种通过获取一定区域内多对相对固定的无线通信节点间的某种测量数据后,按照一定的数学处理方法,对区域内的障碍物目标以图像的形式
展现出来的成像技术。
开山之作:
J. Wilson and N. Patwari, “Radio tomographic imaging with wireless
networks,” IEEE Trans. Mobile Comput., vol. 9, no. 5, pp. 621–632,
May 2010.
Radio tomographic imaging with wireless networks
优势:

  1. 不要求物体佩戴任何设备;
  2. 无线电波可以穿透物理结构。
    在这里插入图片描述

初始化环境参数

代码是初始化环境参数,并生成用于深度学习的训练数据和测试数据的代码。主要包括以下部分:

输入参数:包括移动射频节点数量、每个节点收集数据的航点数、信噪比范围、路径损耗指数范围、全球平均发射功率水平范围、信号角度范围、Kappa参数(用于生成空间相关的高斯随机场)、节点遍历区域大小、图像原点坐标、图像大小、像素大小、白色像素的衰减、垂直、水平和方形墙的最小/最大值等。

数据预分配:预先分配一些变量的空间,包括像素数、UWB链路数、每个链路的UWB数据数等。

节点位置计算:根据输入参数计算每个节点的所有坐标。

数据存储:预先分配存储数据的空间,包括节点位置、UWB节点间距离、SLF权重、不匹配实验的SLF权重和偏置的权重。

生成权重和距离:根据节点位置和输入参数生成SLF权重和UWB节点间距离。

生成空间相关的高斯随机场:根据图像大小、像素大小和Kappa参数生成空间相关的高斯随机场,并进行Cholesky分解得到上三角矩阵。

%M:移动RF节点的数量
%Tw:每个节点收集数据的航点数
%sig_epsilon_range:噪声信噪比的范围
%alpha_range:路径损耗指数的范围
%b_range:全局平均发射功率水平的范围
%sig_theta_range:SLF图像的标准差范围
%kappa:空间相关性高斯随机场的参数
%areabounds:节点遍历区域的大小
%imgorg:图像的左下角坐标
%imgdims:图像的大小(像素)
%pixelsize:每个像素的长度/宽度 %dBwhite:白色像素的衰减值(分贝)
%wallcount_vec:垂直、水平和方形墙壁的最小/最大数量

clear; clc; close all;  % 清空命令窗口、清空工作区、关闭所有图窗

M  = 4;              %number of mobile RF nodes  移动射频节点的数量
Tw = 6;              %number of waypoints for each node to gather data from  每个节点收集数据的航点数,一条边上有6个航点
sig_epsilon_range = [0.3,1,3];    % SNR is about 30,40,50  信噪比约为30、40、50
%对于信噪比(SNR),通常使用以分贝(dB)为单位的对数比值来表示。在这里,sig_epsilon_range = [0.3,1,3] 是指信噪比的范围,其中的值是对应于SNR的对数比值。
%SNR = 10 * log10(sig_epsilon_range^2)
%当 sig_epsilon_range = 0.3 时,SNR ≈ 30 dB 当 sig_epsilon_range = 1 时,SNR ≈ 40 dB 当 sig_epsilon_range = 3 时,SNR ≈ 50 dB
%低噪、中噪、高噪
alpha_range = [0.9 1];     % path loss exponent  路径损耗指数
b_range = [90 100];        %global avg TX "level" (db)  全球平均发射功率水平(分贝)

sig_theta_range = [0.01,0.03,0.09];  % 信号角度范围
%sig_theta_range中的三个值分别为0.01、0.03和0.09,表示了三种不同的信号角度范围。较小的值表示信号角度范围较窄,即信号的传输方向相对集中。较大的值表示信号角度范围较宽,即信号的传输方向相对分散。
%通过在生成数据时使用不同的sig_theta值,可以模拟不同的信号角度环境。这样可以更好地评估和比较算法在不同信号角度条件下的性能和鲁棒性。


kappa = 0.21;  % kappa参数,用于生成空间相关的高斯随机场
%kappa参数用于生成空间相关的高斯随机场(GRF)。GRF是一种随机过程,用于建模空间中的随机变量,如图像或地理数据。
%在这里,kappa参数被用于生成空间相关的高斯随机场的协方差矩阵。协方差矩阵描述了随机变量之间的相关性和方差。kappa的值决定了GRF的空间相关性的程度。
%较小的kappa值会导致GRF的相关性较弱,即相邻像素之间的相关性较低。这意味着生成的随机场在空间上具有较大的变化和不规则性。
%较大的kappa值会导致GRF的相关性较强,即相邻像素之间的相关性较高。这意味着生成的随机场在空间上具有较为平滑和连续的变化。
%通过调整kappa值,可以控制生成的随机场的空间相关性,从而适应不同的应用需求和模拟场景。
areabounds = [0 5 0 5];    %size of the node traverse area (m) [xmin xmax ymin ymax]  节点遍历区域的大小(米)
imgorg = [0.5 0.5];        %lower left corner of the image [x y] (m)  图像的左下角坐标(米)
imgdims = [40 40];         %image size in pixels  图像的大小(像素)
pixelsize = 0.1;           %l/w of each square pixel (m)  每个正方形像素的长度/宽度(米)
dBwhite = 1;               %dB atten of a white pixel  白色像素的衰减(分贝)
wallcount_vec = [0 2 0 2 1 3]; %min/max for vertical , horizontal and square walls  垂直、水平和方形墙的最小/最大值
%表示垂直、水平和方形墙壁的最小和最大数量。这个向量中的值用来限制在区域内生成的墙壁的数量。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%preallocate data  预分配数据
K = imgdims(1)*imgdims(2);         %pixel count  像素数
N_Link = M*(M-1);                  %Number of UWB Links  UWB链路数
N_Tw = Tw^2;                       %number of UWB data per link  每个链路的UWB数据数
%每条链路连接连接两个节点,每个节点可以在6个航点上移动
x_1=0; y_1=0; 
x_2 = imgdims(2)*pixelsize+2*imgorg(1);      %UWB node range  UWB节点范围
y_2 = imgdims(1)*pixelsize+2*imgorg(2);
x_distance = (imgdims(2)-1)*pixelsize/(Tw-1);  %distance of two position of per node  每个节点两个位置之间的距离
y_distance = (imgdims(1)-1)*pixelsize/(Tw-1);
x_org = imgorg(1)+0.5*pixelsize;         %coordinate of first UWB node  第一个UWB节点的坐标
y_org = imgorg(2)+0.5*pixelsize;

% all coordinates of each node  每个节点的所有坐标
c = NaN(M,Tw);
for Twi = 1:Tw          %Tw point per node
    pos_node(1,Twi) = x_org + (Twi-1)*x_distance + 1j * y_1;
    pos_node(2,Twi) = x_2 + 1j * (y_org + (Twi-1)*y_distance);
    pos_node(3,Twi) = x_org + (Twi-1)*x_distance + 1j * y_2;
    pos_node(4,Twi) = x_1 + 1j * (y_org + (Twi-1)*y_distance);
end 

%通过 for 循环,对于每个节点,根据给定的参数计算节点的坐标,并将其存储在 pos_node 矩阵中。

%具体来说,对于每个节点,根据节点的索引 Twi 和给定的参数(x_org、y_org、x_distance、y_distance),计算出节点在不同路径点上的坐标。

%对于节点 1,其 x 坐标为 x_org + (Twi-1)*x_distance,y 坐标为 y_1。在这里,路径点是沿着 x 轴移动的。
%(0.55,0)	(1.33,0)	(2.11,0)	(2.89,0)	(3.67,0)	(4.45,0)
%对于节点 2,其 x 坐标为 x_2,y 坐标为 y_org + (Twi-1)*y_distance。在这里,路径点是沿着 y 轴移动的。
%(5,0.55)	(5,1.33)	(5,2.11)	(5,2.89)	(5,3.67)	(5,4.45)
%对于节点 3,其 x 坐标为 x_org + (Twi-1)*x_distance,y 坐标为 y_2。在这里,路径点是沿着 x 轴移动的。
%(0.55,5)	(1.33,5)	(2.11,5)	(2.89,5)	(3.67,5)	(4.45,5)
%对于节点 4,其 x 坐标为 x_1,y 坐标为 y_org + (Twi-1)*y_distance。在这里,路径点是沿着 y 轴移动的。
%(0,0.55)	(0,1.33)	(0,2.11)	(0,2.89)	(0,3.67)	(0,4.45)


%store the data  存储数据
nodepos = NaN(2,N_Tw,N_Link);     
%nodepos 是一个大小为 2 x N_Tw x N_Link 的矩阵,用于存储每个测量的UWB节点的位置。N_Tw代表每个节点的路径点数,N_Link代表链路的数量。
d = NaN(N_Link*N_Tw,1);                 %distance of UWB node for each measurements  每个测量的UWB节点间距离
W = NaN(N_Link*N_Tw,K);                 %weight of slf  slf的权重
W_ENR = NaN(N_Link*N_Tw,K);             %weight of slf for mismatched experiments  用于不匹配实验的slf权重
Z = zeros(N_Link*N_Tw,N_Link);          %weight of bias  偏置的权重

%node position calculation  节点位置计算
N_Linki = 0;
for i1 = 1:M
    for i2 = 1:M
        if i1 ~= i2
            N_Linki = N_Linki + 1;
            for Twi = 1:Tw
                nodepos(1,(Twi-1)*Tw+1:Twi*Tw,N_Linki)=pos_node(i1,Twi)*ones(1,Tw);
                nodepos(2,(Twi-1)*Tw+1:Twi*Tw,N_Linki)=pos_node(i2,:);
                %分别记录下对于每条链路,节点的位置
            end 
        end
    end
end 
%(Twi-1)Tw+1:TwiTw表示节点i1在nodepos矩阵中的位置索引范围。例如,当Twi=1时,索引范围为1:Tw;当Twi=2时,索引范围为Tw+1:2*Tw,依此类推。
%通过pos_node(i1,Twi)*ones(1,Tw)的赋值,将节点i1在路径点Twi上的坐标赋给了nodepos矩阵的第一个维度中指定的索引范围。这样,nodepos矩阵中的相应位置就存储了节点i1在不同路径点上的坐标信息。
%generate weight and distance  生成权重和距离
for N_Linki = 1:N_Link
    W((N_Linki-1)*N_Tw+1:N_Linki*N_Tw,:) = ...
        f_gen_Wi_ellipse(nodepos(:,:,N_Linki),pixelsize,imgorg,imgdims,1,2);
        % Inverse Area Elliptical Model:
        %B. R. Hamilton, X. Ma, R. J. Baxley, and S. M. Matechik, ‘‘Propagation
        %modeling for radio frequency tomography in wireless networks,   IEEE J.
        %Sel. Topics Signal Process., vol. 8, no. 1, pp. 55–65, Feb. 2014.
%     W((N_Linki-1)*N_Tw+1:N_Linki*N_Tw,:) = ...
%         f_gen_Wi(nodepos(:,:,N_Linki),pixelsize,imgorg,imgdims,1,2);     % Normalized Ellipse Model
    di = abs( nodepos(1,:,N_Linki) - nodepos(2,:,N_Linki) )';              %link lengths
%   使用abs函数计算向量差的绝对值,得到节点之间的距离(欧式距离)。
    d((N_Linki-1)*N_Tw+1:N_Linki*N_Tw,1) = 20 * log10( di );%将距离转换为分贝单位
    Z((N_Linki-1)*N_Tw+1:N_Linki*N_Tw,N_Linki) = ones(N_Tw,1);%将Z矩阵中对应链路的列设置为1,表示偏置的权重。
end 

C_theta = f_gen_C(imgdims,pixelsize,kappa);   % spatial correlated Gaussian random field
R_theta = chol(C_theta);  % 生成C_theta的上三角矩阵
%根据图像大小、像素大小和Kappa参数生成空间相关的高斯随机场,并进行Cholesky分解得到上三角矩阵。

Inverse Area Elliptical Model:
Propagation Modeling for Radio Frequency Tomography in Wireless Networks

function [ Wi ] = f_gen_Wi_ellipse( nodepos, pixelsize, imgorg, imgdims, i1, i2 )
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% f_gen_Wi : GENERATE A WEIGHT MATRIX FOR THE ITH LINK (BIN) IN THE SYSTEM
% This function calls f_pixel_weights to compile all the relevant weights for all measurements taken
% between a given pair of nodes
% nodepos - array of node positions with time
% pixelsize - l/w of each square pixel (m)
% imgorg - [x y] position of lower left corner of image(m)
% imgdims - [rows cols] of the image
% i1 - node index of the TX, i2 - node index of the RX  (link i)
% Wi ( ni x K ) - weights for link i 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

ni = size(nodepos,2); %# of time steps
K = imgdims(1)*imgdims(2); %pixel count

Wi = NaN(ni,K);
if i1 ~= i2 
    for j = 1:ni %loop over individual link's measurements
        p1 = [real(nodepos(i1,j)) imag(nodepos(i1,j))];
        p2 = [real(nodepos(i2,j)) imag(nodepos(i2,j))];
        Wi(j,:) = f_pixel_weights_3(imgdims,pixelsize,imgorg,p1,p2);
    end
else
    Wi = zeros(ni,K); %invalid link
end

end
function Xij = f_pixel_weights_3(imgdims, pixelsize, imgorg, p1, p2)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% COMPUTES THE PIXEL WEIGHTS FOR SINGLE MEASUREMENT J OF LINK I (tomographic projection) %
% Xij (1 x numpixels) - row vector of weights for the given points. inverse area ellipse %
% imgdims (1x2) - number of [rows cols] in the image. the image is assumed to reside in  %
%   the first quadrant, with the lower left corner at the origin                         %
% pixelsize - the PHYSICAL length of a pixel's sides, assumed to be square pixels (m)    %
% imgorg (1x2) - physical [x y] location of the lower left corner of the image (m)       %
% p1, p2 (1x2) - [x y] locations of the two nodes of interest (m)                        %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% inverse area ellipse model

freq_RF = 2.4e9;  % RF 2.4 GHz
lanpt = 3e8/freq_RF;    %wave length

p1 = p1' - imgorg';
p2 = p2' - imgorg'; %scale points to "single units"
fai = (p1-p2)/norm(p1-p2);   %projection vector
c = (p1+p2)/2;               % center of the ellipse
d = norm(p1-p2);

K = imgdims(1)*imgdims(2); %pixel count
bb = zeros(1,K);
u = NaN(1,K);
u_max = 0.5*sqrt(1*lanpt*d);

NI = 0;
for j=1:imgdims(2)   %col
    for i=1:imgdims(1)   %row
        NI = NI + 1;          % number of pixels
        sx = (j-0.5)*pixelsize;
        sy = (imgdims(1)-i+0.5)*pixelsize;
        px = fai(1)*(sx-c(1))+fai(2)*(sy-c(2));
        py = -fai(2)*(sx-c(1))+fai(1)*(sy-c(2));
        a0 = 1; b0 = -(px^2+py^2-d^2); c0 = -py^2*d^2;
        u_2 = (-b0 + sqrt(b0^2-4*a0*c0))/(2*a0);
        u(1,NI) = sqrt(u_2);
        if u(1,NI)<u_max
            if u(1,NI)<0.05
                u(1,NI) = 0.05;
            end
            bb(1,NI) = 1/(pi*u(1,NI)*sqrt(u(1,NI)^2+d^2));
        end
    end 
end
Xij = bb;
% imshow(reshape(Xij,[40,40]),[0 max(Xij)])

% %DEBUG plot code

end

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

教师ChatGPT的23种用法

火爆全网的ChatGPT&#xff0c;作为教师应该如何正确使用&#xff1f;本文梳理了教师ChatGPT的23种用法&#xff0c;一起来看看吧&#xff01; 1、回答问题 ChatGPT可用于实时回答问题&#xff0c;使其成为需要快速获取信息的学生的有用工具。 从这个意义上说&#xff0c;Cha…

天气越热越不能开空调,这是什么道理?

如今正值盛夏&#xff0c;炎热的太阳仿佛要把人烤化。相信很多小伙伴一回到家都会迫不及待地打开空调&#xff0c;在干爽的凉风中完成“自我复活”。然而需要警惕的是&#xff0c;相对密闭的空调房其实早已“暗藏杀机”&#xff0c;VOC、细菌、灰尘等室内“健康杀手”在房间里不…

Latex | 将MATLAB图并导入Latex中的方法

一、问题描述 用Latex时写paper时&#xff0c;要导入MATLAB生成的图进去 二、解决思路 &#xff08;1&#xff09;在MATLAB生成图片的窗口中&#xff0c;导出.eps矢量图 &#xff08;2&#xff09;把图上传到overleaf的目录 &#xff08;3&#xff09;在文中添加相应代码 三…

[ 容器 ] consul 容器服务更新与发现

目录 什么是服务注册与发现什么是consulconsul 部署consul 服务器 registrator服务器consul-templateconsul 多节点 什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的&#xff0c;不保障高可用性&#xff0c;也不考虑服务的压力承…

ftp和sftp区别,以及xftp的使用

网上找链接找的很辛苦对吧&#xff01; 网上下载的破解版还不用。而且用没多久又说要更新了&#xff0c;又得重新找。 这下直接把官方免费获取链接发给你&#xff0c;就不用在被这种事情麻烦了。 家庭/学校免费 - NetSarang Website (xshell.com):家庭/学校免费 - NetSarang W…

CAN bus off ——ISO11898

什么是can bus off&#xff1f; CAN总线关闭&#xff08;CAN bus off&#xff09;是指CAN节点进入一种错误状态&#xff0c;无法继续正常的数据通信。当一个CAN节点的错误计数器超过了设定的阈值时&#xff0c;该节点将进入CAN总线关闭状态。在这种状态下&#xff0c;该节点将停…

NoSQL之Redis配置与优化

目录 关系数据库和非关系数据库 关系型数据库 非关系型数据库 关系数据库和非关系数据库的区别 Redis安装部署 优点 Redis数据库常用命令 Redis持久化 Redis性能管理 非关系数据库产生背景 总结关系与非关系 了解redis redis优点 redis为什么这么快 1、线程池优化…

Doris(二) -通过外部表同步数据

前言 参考网址 1.官网 2.ODBC External Table Of Doris 3.Apache doris ODBC外表使用方式 第一步 创建 RESOURCE DROP RESOURCE IF EXISTS mysql_test_odbc; CREATE EXTERNAL RESOURCE mysql_test_odbc PROPERTIES ( "type" "odbc_catalog", "…

java 支持jsonschema

入参校验产品化 schema_xsd可视化编辑器_个人渣记录仅为自己搜索用的博客-CSDN博客 jsonchema的生成 支持v4的jackson-jsonSchema GitHub - mbknor/mbknor-jackson-jsonSchema: Generate JSON Schema with Polymorphism using Jackson annotations jackson-module-jsonSchema …

WPF实现DiagramChart

1、文件架构 2、FlowChartStencils.xaml <ResourceDictionary xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:s"clr-namespace:DiagramDesigner"xmlns:c&…

大语言模型LLM技术赋能软件项目管理和质量保障︱微软中国高级研发经理步绍鹏

微软中国高级研发经理步绍鹏先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;大语言模型LLM技术赋能软件项目管理和质量保障。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题内容简要&#xff1a; 本次分享将…

DSSAT模型教程

详情点击链接&#xff1a;R语言与作物模型&#xff08;DSSAT模型&#xff09;教程 前言 随着基于过程的作物生长模型&#xff08;Process-based Crop Growth Simulation Model&#xff09;的发展&#xff0c;R语言在作物生长模型和数据分析、挖掘和可视化中发挥着越来越重要的…

mac brew安装 node 踩坑日记- n切换node不生效

最近用了一个旧电脑开发&#xff0c;发现里面node管理混乱&#xff0c;有nvm、n和homebrew&#xff0c;导致切换node 切换不了&#xff0c;开发也有莫名其妙的错误。所以我打算重新装一下node&#xff0c;使用n做为管理工具。 1. 删除nvm cd ~ rm -rf .nvm2. 删除n sudo rm -…

只需要5个技巧,就能让你的独立站更吸引客户

人类很简单——我们都更喜欢第一眼看起来令人心情愉悦的的东西。独立站卖家自由度更高&#xff0c;可以添加很多令人惊叹的产品、调整更优惠的价格并设置多种语言选择来吸引访问者购买&#xff0c;但网站的设计仍然是大多数访问者判断独立站品牌的第一要素。根据可靠调研得知&a…

SpringBoot实战(二十二)集成 Sleuth、Zipkin

目录 一、简介1.Sleuth2.Zipkin 二、搭建 zipkin-server1.jar包启动2.docker启动3.自己搭建**Maven依赖**添加启动类注解 4.页面截图 三、搭建 sleuth-zipkin1.Maven 依赖2.yaml配置3.代码实现DemoController.javaDemoFeignClient.java 4.测试 一、简介 1.Sleuth 官方文档&am…

7-17-7.24 三维重建

3D重建 context capture中无人机航拍建模的基本原理 如何测量物体的实际长宽数据 1.添加用户控制点 2.添加范围约束&#xff0c;标定两个控制点之间的实际距离 无人机航拍中坐标和经纬度信息是如何确定的 pos数据由飞控系统在相机拍照时生成&#xff0c;与相片一一对应&#…

python与深度学习(五):CNN和手写数字识别

目录 1. 说明2. 卷积运算3. 填充4. 池化5. 卷积神经网络实战-手写数字识别的CNN模型5.1 导入相关库5.2 加载数据5.3 数据预处理5.4 数据处理5.5 构建网络模型5.6 模型编译5.7 模型训练、保存和评价5.8 模型测试5.9 模型训练结果的可视化 6. 手写数字识别的CNN模型可视化结果图7…

数学建模学习(2):数学建模各类常用的算法全解析

一、评价类算法 常见的评价算法 1.层次分析法 基本思想 是定性与定量相结合的多准则决策、评价方法。将决策的有关元素分解成 目标层、准则层和方案层 &#xff0c;并通过人们的 判断对决策方案的 优劣进行排序 &#xff0c;在此基础上进行定性和定量分析。它把人的思维过程…

AWS IAM介绍

前言 AWS是世界上最大的云服务提供商&#xff0c;它提供了很多组件供消费者使用&#xff0c;其中进行访问控制的组件叫做IAM(Identity and Access Management)&#xff0c; 用来进行身份验证和对AWS资源的访问控制。 功能 IAM的功能总结来看&#xff0c;主要分两种&#xff1…

【代码随想录day20】二叉搜索树的最小绝对差

题目 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 思路 最简单的一个思路是使用中序遍历&#xff0c;从二叉排序树中得到有序序列&#xff0c;存储到self.elem中&…