temp = np.ones(x.shape[0]+1) 代码含义

时间: 2023-08-31 12:29:45 浏览: 159
### 回答1: 这段代码中,首先定义了一个numpy数组temp,使用np.ones()函数创建。np.ones()函数用于创建一个全部都是1的数组。参数x.shape[0] 1表示temp数组的形状为(x.shape[0], 1),即x.shape[0]行1列。 ### 回答2: 这段代码的含义是创建一个由1组成的数组,其长度与数组x的第一个维度的大小相同。具体来说,np.ones()函数用于创建一个由1组成的数组,其参数x.shape[0]表示取数组x的第一个维度的大小,得到一个长度为x.shape[0]的一维数组。代码中的1表示数组中的元素都为1。最后将这个数组赋值给temp变量。 ### 回答3: 该代码的含义是创建一个形状为 x.shape[0] 行 1 列的数组,数组中的所有元素都为 1。其中,np.ones 是 NumPy 库中的一个函数,用于创建一个由 1 组成的数组。x 是一个变量,通过 x.shape[0] 可以获取 x 数组的行数,然后使用 1 创建一个列数为 1 的数组。最后,将这个数组赋值给变量 temp。
相关问题

#计算最小二乘平面及距离(粗糙度) def CaculateAverageSquareDistance(p): num = p.shape[0] B = np.zeros((p.shape[0],3)) one = np.ones((p.shape[0],1)) B[:,0] = p[:,0] B[:,1] = p[:,1] B[:,2] = one[:,0] l = p[:,2] BTB = np.matmul(B.T,B) BTB_1 = np.linalg.pinv(BTB) temp = np.matmul(BTB_1,B.T) result = np.matmul(temp,l) V = np.matmul(B,result)-l sum = 0 for i in range (0,V.shape[0]): sum = sum+V[i]**2 return sum/V.shape[0]

这是一个用于计算最小二乘平面及距离(粗糙度)的函数,输入参数p是一个n行3列的矩阵,其中每一行表示一个三维点的坐标,输出结果是一个标量,表示所有点到该平面的平均距离的平方。 具体实现过程如下: 1. 初始化矩阵B和向量l,其中B是一个n行3列的矩阵,l是一个n维向量,分别用于构造最小二乘方程的系数矩阵和常数向量。 2. 将矩阵B的前两列赋值为输入参数p的前两列,第三列赋值为全1向量。 3. 将向量l赋值为输入参数p的第三列。 4. 计算矩阵B的转置与矩阵B的乘积BTB,使用numpy库中的matmul函数实现。 5. 计算BTB的广义逆BTB_1,使用numpy库中的pinv函数实现。 6. 计算矩阵BTB_1与矩阵B的转置的乘积temp,以及temp与向量l的乘积result,分别使用numpy库中的matmul函数实现。 7. 计算矩阵B与向量result的乘积V,表示所有点到该平面的距离,使用numpy库中的matmul函数实现。 8. 计算所有距离的平方之和sum,并除以点的个数n得到平均距离的平方。 9. 返回平均距离的平方作为函数的输出结果。 需要注意的是,该函数的实现过程使用了NumPy库中的常用函数,如矩阵乘法、求逆、求伪逆等,这些函数的具体实现可以参考NumPy官方文档。

import numpy as np rows = int(input("输入行数:")) cols = int(input("输入列数:")) # 输入数据元素 data = [] for i in range(rows): row = [] for j in range(cols): value = float(input(f"输入元素[{i}, {j}]: ")) row.append(value) data.append(row) X0 = data m, n = X0.shape X1 = np.cumsum(X0) X1 = np.cumsum(X0) X2 = np.zeros((n-2, n)) for i in range(1, n-1): X2[i-1, i:] = X1[i] + X1[i+1] B = -0.5 * X2 t = np.ones((n-1, 1)) B = np.concatenate((B, t), axis=1) YN = X0[1:] P_t = YN / X1[:n-1] A = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), YN.T) a = A[0] u = A[1] c = u / a b = X0[0] - c X = str(b) + 'exp(' + str(-a) + 'k)' + str(c) equation = 'X(k+1)=' + X print(equation) k = np.arange(len(X0)) Y_k_1 = b * np.exp(-a * k) + c Y = Y_k_1[1:] - Y_k_1[:-1] XY = np.concatenate(([Y_k_1[0]], Y)) print(XY) CA = np.abs(XY - X0) Theta = CA XD_Theta = CA / X0 AV = np.mean(CA) R_k = (np.min(Theta) + 0.5 * np.max(Theta)) / (Theta + 0.5 * np.max(Theta)) P = 0.5 R = np.sum(R_k) / len(R_k) print(R) Temp0 = (CA - AV) ** 2 Temp1 = np.sum(Temp0) / len(CA) S2 = np.sqrt(Temp1) AV_0 = np.mean(X0) Temp_0 = (X0 - AV_0) ** 2 Temp_1 = np.sum(Temp_0) / len(CA) S1 = np.sqrt(Temp_1) TempC = S2 / S1 * 100 C = str(TempC) + '%' SS = 0.675 * S1 Delta = np.abs(CA - AV) TempN = np.where(Delta <= SS)[0] N1 = len(TempN) N2 = len(CA) TempP = N1 / N2 * 100 P = str(TempP) + '%'

这段代码是用来计算指数平滑模型的预测值和评估模型拟合优度的指标。具体来说,根据输入的行数和列数创建一个矩阵,并根据用户输入的元素值进行填充。然后,根据指数平滑模型的公式计算预测值,并将其打印出来。接下来,根据预测值和原始值计算预测误差、平均绝对误差、相对误差等指标,并将结果打印出来。 请问您还有其他问题吗?
阅读全文

相关推荐

import numpy as np import pandas as pd import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ["SimHei"] # 单使用会使负号显示错误 plt.rcParams['axes.unicode_minus'] = False # 把负号正常显示 # 读取北京房价数据 path = 'data.txt' data = pd.read_csv(path, header=None, names=['房子面积', '房子价格']) print(data.head(10)) print(data.describe()) # 绘制散点图 data.plot(kind='scatter', x='房子面积', y='房子价格') plt.show() def computeCost(X, y, theta): inner = np.power(((X * theta.T) - y), 2) return np.sum(inner) / (2 * len(X)) data.insert(0, 'Ones', 1) cols = data.shape[1] X = data.iloc[:,0:cols-1]#X是所有行,去掉最后一列 y = data.iloc[:,cols-1:cols]#X是所有行,最后一列 print(X.head()) print(y.head()) X = np.matrix(X.values) y = np.matrix(y.values) theta = np.matrix(np.array([0,0])) print(theta) print(X.shape, theta.shape, y.shape) def gradientDescent(X, y, theta, alpha, iters): temp = np.matrix(np.zeros(theta.shape)) parameters = int(theta.ravel().shape[1]) cost = np.zeros(iters) for i in range(iters): error = (X * theta.T) - y for j in range(parameters): term = np.multiply(error, X[:, j]) temp[0, j] = theta[0, j] - ((alpha / len(X)) * np.sum(term)) theta = temp cost[i] = computeCost(X, y, theta) return theta, cost alpha = 0.01 iters = 1000 g, cost = gradientDescent(X, y, theta, alpha, iters) print(g) print(computeCost(X, y, g)) x = np.linspace(data.Population.min(), data.Population.max(), 100) f = g[0, 0] + (g[0, 1] * x) fig, ax = plt.subplots(figsize=(12,8)) ax.plot(x, f, 'r', label='Prediction') ax.scatter(data.Population, data.Profit, label='Traning Data') ax.legend(loc=2) ax.set_xlabel('房子面积') ax.set_ylabel('房子价格') ax.set_title('北京房价拟合曲线图') plt.show()

import numpy as np def replacezeroes(data): min_nonzero = np.min(data[np.nonzero(data)]) data[data == 0] = min_nonzero return data # Change the line below, based on U file # Foundation users set it to 20, ESI users set it to 21 LINE = 20 def read_scalar(filename): # Read file file = open(filename, 'r') lines_1 = file.readlines() file.close() num_cells_internal = int(lines_1[LINE].strip('\n')) lines_1 = lines_1[LINE + 2:LINE + 2 + num_cells_internal] for i in range(len(lines_1)): lines_1[i] = lines_1[i].strip('\n') field = np.asarray(lines_1).astype('double').reshape(num_cells_internal, 1) field = replacezeroes(field) return field def read_vector(filename): # Only x,y components file = open(filename, 'r') lines_1 = file.readlines() file.close() num_cells_internal = int(lines_1[LINE].strip('\n')) lines_1 = lines_1[LINE + 2:LINE + 2 + num_cells_internal] for i in range(len(lines_1)): lines_1[i] = lines_1[i].strip('\n') lines_1[i] = lines_1[i].strip('(') lines_1[i] = lines_1[i].strip(')') lines_1[i] = lines_1[i].split() field = np.asarray(lines_1).astype('double')[:, :2] return field if __name__ == '__main__': print('Velocity reader file') heights = [2.0, 1.5, 0.5, 0.75, 1.75, 1.25] total_dataset = [] # Read Cases for i, h in enumerate(heights, start=1): U = read_vector(f'U_{i}') nut = read_scalar(f'nut_{i}') cx = read_scalar(f'cx_{i}') cy = read_scalar(f'cy_{i}') h = np.ones(shape=(np.shape(U)[0], 1), dtype='double') * h temp_dataset = np.concatenate((U, cx, cy, h, nut), axis=-1) total_dataset.append(temp_dataset) total_dataset = np.reshape(total_dataset, (-1, 6)) print(total_dataset.shape) # Save data np.save('Total_dataset.npy', total_dataset) # Save the statistics of the data means = np.mean(total_dataset, axis=0).reshape(1, np.shape(total_dataset)[1]) stds = np.std(total_dataset, axis=0).reshape(1, np.shape(total_dataset)[1]) # Concatenate op_data = np.concatenate((means, stds), axis=0) np.savetxt('means', op_data, delimiter=' ') # Need to write out in OpenFOAM rectangular matrix format print('Means:') print(means) print('Stds:') print(stds)解析python代码,说明读取的数据文件格式

将下面这段代码改用python写出来: clear all; close all; fdir = '../dataset/iso/saii/'; %Reconstruction parameters depth_start = 710; depth_end = 720; depth_step = 1; pitch = 12; sensor_sizex = 24; focal_length = 8; lens_x = 4; lens_y = 4; %% import elemental image infile=[fdir '11.bmp']; outfile=[fdir, 'EIRC/']; mkdir(outfile); original_ei=uint8(imread(infile)); [v,h,d]=size(original_ei); %eny = v/lens_y; enx = h/lens_x; % Calculate real focal length %f_ratio=36/sensor_sizex; sensor_sizey = sensor_sizex * (v/h); %focal_length = focal_length*f_ratio; EI = zeros(v, h, d, lens_x * lens_y,'uint8'); for y = 1:lens_y for x = 1:lens_x temp=imread([fdir num2str(y),num2str(x),'.bmp']); EI(:, :, :, x + (y-1) * lens_y) = temp; end end %Reconstruction [EIy, EIx, Color] = size(EI(:,:,:,1)); %% EI_VCR time=[]; for Zr = depth_start:depth_step:depth_end tic; Shx = 8*round((EIx*pitch*focal_length)/(sensor_sizex*Zr)); Shy = 8*round((EIy*pitch*focal_length)/(sensor_sizey*Zr)); Img = (double(zeros(EIy+(lens_y-1)*Shy,EIx+(lens_x-1)*Shx, Color))); Intensity = (uint16(zeros(EIy+(lens_y-1)*Shy,EIx+(lens_x-1)*Shx, Color))); for y=1:lens_y for x=1:lens_x Img((y-1)*Shy+1:(y-1)*Shy+EIy,(x-1)*Shx+1:(x-1)*Shx+EIx,:) = Img((y-1)*Shy+1:(y-1)*Shy+EIy,(x-1)*Shx+1:(x-1)*Shx+EIx,:) + im2double(EI(:,:,:,x+(y-1)*lens_y)); Intensity((y-1)*Shy+1:(y-1)*Shy+EIy,(x-1)*Shx+1:(x-1)*Shx+EIx,:) = Intensity((y-1)*Shy+1:(y-1)*Shy+EIy,(x-1)*Shx+1:(x-1)*Shx+EIx,:) + uint16(ones(EIy,EIx,Color)); end end elapse=toc time=[time elapse]; display(['--------------- Z = ', num2str(Zr), ' is processed ---------------']); Fname = sprintf('EIRC/%dmm.png',Zr); imwrite(Img./double(Intensity), [fdir Fname]); end csvwrite([fdir 'EIRC/time.csv'],time);

最新推荐

recommend-type

基于STM32单片机的激光雕刻机控制系统设计-含详细步骤和代码

内容概要:本文详细介绍了基于STM32单片机的激光雕刻机控制系统的设计。系统包括硬件设计、软件设计和机械结构设计,主要功能有可调节激光功率大小、改变雕刻速率、手动定位、精确雕刻及切割。硬件部分包括STM32最小系统、步进电机驱动模块、激光发生器控制电路、人机交互电路和串口通信电路。软件部分涉及STM32CubeMX配置、G代码解析、步进电机控制、激光功率调节和手动定位功能的实现。 适合人群:对嵌入式系统和激光雕刻机感兴趣的工程师和技术人员。 使用场景及目标:① 适用于需要高精度激光雕刻的应用场合;② 为开发类似的激光雕刻控制系统提供设计参考。 阅读建议:本文提供了详细的硬件和软件设计方案,读者应结合实际应用场景进行理解,重点关注电路设计和代码实现。
recommend-type

白色简洁风格的前端网站模板下载.zip

白色简洁风格的前端网站模板下载.zip
recommend-type

HarmonyException如何解决.md

HarmonyException如何解决.md
recommend-type

掌握HTML/CSS/JS和Node.js的Web应用开发实践

资源摘要信息:"本资源摘要信息旨在详细介绍和解释提供的文件中提及的关键知识点,特别是与Web应用程序开发相关的技术和概念。" 知识点一:两层Web应用程序架构 两层Web应用程序架构通常指的是客户端-服务器架构中的一个简化版本,其中用户界面(UI)和应用程序逻辑位于客户端,而数据存储和业务逻辑位于服务器端。在这种架构中,客户端(通常是一个Web浏览器)通过HTTP请求与服务器端进行通信。服务器端处理请求并返回数据或响应,而客户端负责展示这些信息给用户。 知识点二:HTML/CSS/JavaScript技术栈 在Web开发中,HTML、CSS和JavaScript是构建前端用户界面的核心技术。HTML(超文本标记语言)用于定义网页的结构和内容,CSS(层叠样式表)负责网页的样式和布局,而JavaScript用于实现网页的动态功能和交互性。 知识点三:Node.js技术 Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,它允许开发者使用JavaScript来编写服务器端代码。Node.js是非阻塞的、事件驱动的I/O模型,适合构建高性能和高并发的网络应用。它广泛用于Web应用的后端开发,尤其适合于I/O密集型应用,如在线聊天应用、实时推送服务等。 知识点四:原型开发 原型开发是一种设计方法,用于快速构建一个可交互的模型或样本来展示和测试产品的主要功能。在软件开发中,原型通常用于评估概念的可行性、收集用户反馈,并用作后续迭代的基础。原型开发可以帮助团队和客户理解产品将如何运作,并尽早发现问题。 知识点五:设计探索 设计探索是指在产品设计过程中,通过创新思维和技术手段来探索各种可能性。在Web应用程序开发中,这可能意味着考虑用户界面设计、用户体验(UX)和用户交互(UI)的创新方法。设计探索的目的是创造一个既实用又吸引人的应用程序,可以提供独特的价值和良好的用户体验。 知识点六:评估可用性和有效性 评估可用性和有效性是指在开发过程中,对应用程序的可用性(用户能否容易地完成任务)和有效性(应用程序是否达到了预定目标)进行检查和测试。这通常涉及用户测试、反馈收集和性能评估,以确保最终产品能够满足用户的需求,并在技术上实现预期的功能。 知识点七:HTML/CSS/JavaScript和Node.js的特定部分使用 在Web应用程序开发中,开发者需要熟练掌握HTML、CSS和JavaScript的基础知识,并了解如何将它们与Node.js结合使用。例如,了解如何使用JavaScript的AJAX技术与服务器端进行异步通信,或者如何利用Node.js的Express框架来创建RESTful API等。 知识点八:应用领域的广泛性 本文件提到的“基准要求”中提到,通过两层Web应用程序可以实现多种应用领域,如游戏、物联网(IoT)、组织工具、商务、媒体等。这说明了Web技术的普适性和灵活性,它们可以被应用于构建各种各样的应用程序,满足不同的业务需求和用户场景。 知识点九:创造性界限 在开发Web应用程序时,鼓励开发者和他们的合作伙伴探索创造性界限。这意味着在确保项目目标和功能要求得以满足的同时,也要勇于尝试新的设计思路、技术方案和用户体验方法,从而创造出新颖且技术上有效的解决方案。 知识点十:参考资料和文件结构 文件名称列表中的“a2-shortstack-master”暗示了这是一个与作业2相关的项目文件夹或代码库。通常,在这样的文件夹结构中,可以找到HTML文件、样式表(CSS文件)、JavaScript脚本以及可能包含Node.js应用的服务器端代码。开发者可以使用这些文件来了解项目结构、代码逻辑和如何将各种技术整合在一起以创建一个完整的工作应用程序。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

计算机体系结构概述:基础概念与发展趋势

![计算机体系结构概述:基础概念与发展趋势](https://img-blog.csdnimg.cn/6ed523f010d14cbba57c19025a1d45f9.png) # 摘要 计算机体系结构作为计算机科学的核心领域,经历了从经典模型到现代新发展的演进过程。本文从基本概念出发,详细介绍了冯·诺依曼体系结构、哈佛体系结构以及RISC和CISC体系结构的设计原则和特点。随后,文章探讨了现代计算机体系结构的新发展,包括并行计算体系结构、存储体系结构演进和互连网络的发展。文中还深入分析了前沿技术如量子计算机原理、脑启发式计算以及边缘计算和物联网的结合。最后,文章对计算机体系结构未来的发展趋
recommend-type

int a[][3]={{1,2},{4}}输出这个数组

`int a[][3]={{1,2},{4}}` 定义了一个二维数组,它有两行三列,但是只填充了前两行的数据。第一行是 {1, 2},第二行是 {4}。 当你尝试输出这个数组时,需要注意的是,由于分配的空间是固定的,所以对于只填充了两行的情况,第三列是未初始化的,通常会被默认为0。因此,常规的打印方式会输出类似这样的结果: ``` a[0][0]: 1 a[0][1]: 2 a[1][0]: 4 a[1][1]: (未初始化,可能是0) ``` 如果需要展示所有元素,即使是未初始化的部分,可能会因为语言的不同而有不同的显示方式。例如,在C++或Java中,你可以遍历整个数组来输出: `
recommend-type

勒玛算法研讨会项目:在线商店模拟与Qt界面实现

资源摘要信息: "lerma:算法研讨会项目" 在本节中,我们将深入了解一个名为“lerma:算法研讨会项目”的模拟在线商店项目。该项目涉及多个C++和Qt框架的知识点,包括图形用户界面(GUI)的构建、用户认证、数据存储以及正则表达式的应用。以下是项目中出现的关键知识点和概念。 标题解析: - lerma: 看似是一个项目或产品的名称,作为算法研讨会的一部分,这个名字可能是项目创建者或组织者的名字,用于标识项目本身。 - 算法研讨会项目: 指示本项目是一个在算法研究会议或研讨会上呈现的项目,可能是为了教学、展示或研究目的。 描述解析: - 模拟在线商店项目: 项目旨在创建一个在线商店的模拟环境,这涉及到商品展示、购物车、订单处理等常见在线购物功能的模拟实现。 - Qt安装: 项目使用Qt框架进行开发,Qt是一个跨平台的应用程序和用户界面框架,所以第一步是安装和设置Qt开发环境。 - 阶段1: 描述了项目开发的第一阶段,包括使用Qt创建GUI组件和实现用户登录、注册功能。 - 图形组件简介: 对GUI组件的基本介绍,包括QMainWindow、QStackedWidget等。 - QStackedWidget: 用于在多个页面或视图之间切换的组件,类似于标签页。 - QLineEdit: 提供单行文本输入的控件。 - QPushButton: 按钮控件,用于用户交互。 - 创建主要组件以及登录和注册视图: 涉及如何构建GUI中的主要元素和用户交互界面。 - QVBoxLayout和QHBoxLayout: 分别表示垂直和水平布局,用于组织和排列控件。 - QLabel: 显示静态文本或图片的控件。 - QMessageBox: 显示消息框的控件,用于错误提示、警告或其他提示信息。 - 创建User类并将User类型向量添加到MainWindow: 描述了如何在项目中创建用户类,并在主窗口中实例化用户对象集合。 - 登录和注册功能: 功能实现,包括验证电子邮件、用户名和密码。 - 正则表达式的实现: 使用QRegularExpression类来验证输入字段的格式。 - 第二阶段: 描述了项目开发的第二阶段,涉及数据的读写以及用户数据的唯一性验证。 - 从JSON格式文件读取和写入用户: 描述了如何使用Qt解析和生成JSON数据,JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 - 用户名和电子邮件必须唯一: 在数据库设计时,确保用户名和电子邮件字段的唯一性是常见的数据完整性要求。 - 在允许用户登录或注册之前,用户必须选择代表数据库的文件: 用户在进行登录或注册之前需要指定一个包含用户数据的文件,这可能是项目的一种安全或数据持久化机制。 标签解析: - C++: 标签说明项目使用的编程语言是C++。C++是一种高级编程语言,广泛应用于软件开发领域,特别是在性能要求较高的系统中。 压缩包子文件的文件名称列表: - lerma-main: 这可能是包含项目主要功能或入口点的源代码文件或模块的名称。通常,这样的文件包含应用程序的主要逻辑和界面。 通过这些信息,可以了解到该项目是一个采用Qt框架和C++语言开发的模拟在线商店应用程序,它不仅涉及基础的GUI设计,还包括用户认证、数据存储、数据验证等后端逻辑。这个项目不仅为开发者提供了一个实践Qt和C++的机会,同时也为理解在线商店运行机制提供了一个良好的模拟环境。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

【计算机组成原理精讲】:从零开始深入理解计算机硬件

![计算机组成与体系结构答案完整版](https://img-blog.csdnimg.cn/6ed523f010d14cbba57c19025a1d45f9.png) # 摘要 本文全面介绍了计算机组成的原理、数据的表示与处理、存储系统、中央处理器(CPU)设计以及系统结构与性能优化的现代技术。从基本的数制转换到复杂的高速缓冲存储器设计,再到CPU的流水线技术,文章深入阐述了关键概念和设计要点。此外,本文还探讨了现代计算机体系结构的发展,性能评估标准,以及如何通过软硬件协同设计来优化系统性能。计算机组成原理在云计算、人工智能和物联网等现代技术应用中的角色也被分析,旨在展示其在支撑未来技术进