基于MATLABSimulink的建模与仿真.ppt_第1页
基于MATLABSimulink的建模与仿真.ppt_第2页
基于MATLABSimulink的建模与仿真.ppt_第3页
基于MATLABSimulink的建模与仿真.ppt_第4页
基于MATLABSimulink的建模与仿真.ppt_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机仿真技术,第五讲 基于MATLAB/Simulink的建模与仿真,MATLAB软件简介 MATLAB仿真实例 什么是Simulink? Simulink模块库简介 Simulink模型的建立方法 Simulink建模与仿真举例 小结,MATLAB软件简介?,MATLAB是一门计算机编程语言,是一种科学计算软件,取名来源于Matrix Laboratory,本意是专门以矩阵的方式来处理计算机数据 .MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,被广泛应用在科学计算,信息处理,控制系统等领域的分析,仿真和设计工作。,MATLAB的功能包括:数值分析,数值和符号计算,工程和科学绘图,通讯和控制系统的设计与仿真,数字图像与信号处理,财务与金融工程等。,MATLAB软件简介?,MATLAB软件的典型应用领域: 科学研究; 工程技术应用研究 CAI(Computer Aided Instruct) 数学实验(Mathematical Experiment) 数学建模(Mathematical Modeling),clear删除工作空间中的所有变量!系统不会要求你确认这个命令。所有变量都被清除且不能再恢复。 对于简单的问题,在MATLAB提示符下输入命令是快速有效的。然而当命令数增加或希望改变一个或几个变量的值,然后重新执行一系列命令时,在MATLAB提示符处键入命令就非常麻烦了。对这个问题MATLAB提供了一种逻辑解决方案。它允许用户把MATLAB命令放在一个简单的文本文件中,然后告诉MATLAB打开文件并执行命令,如同在MATLAB提示符处键入命令一样。这些文件被称为脚本文件或简单地称为M文件。M文件是指脚本文件以扩展名.m结尾。,MATLAB软件简介?,MATLAB提供三种控制流结构的语句: For-end循环 While-end循环 If-Else-End结构,MATLAB软件简介?,For-end循环的基本作用是以固定的和预定的次数重复一组特定的命令。一般形式是: for n=循环控制量的范围 commands end,MATLAB软件简介?,说明:在for和end语句之间的命令串commands按矩阵(array)中的每一列执行一次。在每一次迭代中,n被指定为循环控制量的范围内的下一列。例如: for n=1:10 x(n)=sin(n*pi/10); end 这个循环体的作用是:对n等于1到10,求所有语句的值,直到下一个end语句。第1次通过For循环n=1,第2次,n=2,如此继续,直到n=10。在n=10以后,For循环结束,然后求end语句后面的任何命令值,For循环不能用For循环内重新赋值循环变量n来终止。 在For循环中循环控制量的范围可以是任何有效的MATLAB矩阵。比如 data=11 9 45 6; 7 16 -1 5; for n=data x=n(1)-n(2) end 这时程序的输出有四个数值,分别是矩阵data的两列相减的结果 x = 4 x = -7 x = 46 x = 1,For循环可按需要嵌套,即For循环体内的命令组中可以出现另一个For循环体,这体现了For循环体也是命令组。比如 for n=1:5 for m=5:-1:1 A(n,m)=n2+m2; End end,While-end循环以不定的次数求一组语句的值。Whil-end 循环的一般形式是: while expression(控制表达式) commands end 只要在控制表达式(expression)里的所有元素为真,就执行While和end语句之间的命令串(commands)。,MATLAB软件简介?,说明:控制表达式的值未必是一个标量值,矩阵值也同样有效。在矩阵情况下,所得到矩阵的所有元素必须都为真。具体示例: num=0;EPS=1; while(1+EPS)1 EPS=EPS/2; num=num+1; end 这段MATLAB代码最后在num=53时停止。,IF-ELSE-END结构提供有条件地执行一些特定的命令序列的方式。最简单的IF-ELSE-END结构是: if expression(条件控制表达式) commands end 如果在条件控制表达式(expression)中的所有元素为真(非零),那么就执行if和end语句之间的命令串(commands)。在表达式包含有几个逻辑表达式时,即使前一个表达式决定了表达式的最后逻辑状态,仍要计算所有的子表达式。,MATLAB软件简介?,一般的有两个选择的IF-ELSE-END结构是: if expression(条件控制表达式) commands evaluated if True else commands evaluated if True end 在这里,如果条件控制表达式(expression)为真,则执行第1组命令;如果表达式是假,则执行第2组命令。,有三个或更多选择时的IF-ELSE-END结构的形式: if expression1 commands evaluated-if expression1 is True elseif expression2 commands evaluated-if expression2 is True elseif expression3 commands evaluated-if expression3 is True elseif else commands evaluatedif on other expression is True end 最后这种有三个以上选择的IF-ELSE-END形式,依次检查各表达式,只执行第一个表达式为真的命令串,接下来的关系表达式不检验,跳过其余的IF-ELSE-END结构。最后的else命令可有可无。,break是一种特殊的控制结构,基本作用是无条件跳出临近的循环体,即结束For循环和While循环的执行。,MATLAB软件简介?,学习和使用常用软件MATLAB的一些基本语句和功能来验证或观察函数的变化,实现函数的可视化计算,MATLAB软件简介?,MATLAB仿真举例,设系统方程,,y(0)=1,试用Euler法求其数值解(取步长h=0.1,0t1),试编写matlab程序求其数值解。,设系统方程,,y(0)=1,试用Euler法求其数值解(取步长h=0.1,0t1),试编写matlab程序求其数值解。,Euler迭代公式:yn+1=yn-0.1yn2,MATLAB仿真举例,Euler迭代公式:yn+1=yn-0.1yn2,,y(0)=1,(取步长h=0.1,0t1),MATLAB仿真举例,Euler迭代公式:yn+1=yn-0.1yn2,,y(0)=1,t=0:0.1:1; length=size(t,1); y=zeros(size(t); y(1)=1; for n=1:1:length-1 y(n+1)=y(n)-0.1*y(n)2 end plot(t,y),(取步长h=0.1,0t1),MATLAB仿真举例,运行结果:,y = 1.0000 0.9000 0.8190 0.7519 0.6954 0.6470 0.6052 0.5685 0.5362 0.5075 0.4817,MATLAB仿真举例,作业,设系统方程,,y(0)=1,试用二阶龙格库塔法求其数值解(取步长h=0.1,0t1),试编写matlab程序求其数值解。,二阶龙格库塔法迭代公式:,请在第二次实验时上机验证结果。,Simulink是MATLAB提供的实现动态系统建模和仿真的一个软件包,它让用户把精力从编程转向模型的构造。 Simulink一个很大的优点是为用户省去了许多重复的代码编写工作。 Simulink 支持线性,非线性系统,连续系统,离散系统,或者混合系统的建模与仿真。同时它也支持具有不同部分拥有不同采样率的多种采样速度的系统仿真。 Simulink的启动方式有两种: (1) 在工具栏点击Simulink图标; (2)在Command Window中输入: Simulink,什么是Simulink?,Simulink模块库简介,SIMILINK模块库按功能进行分类:连续模块、离散模块、查表模块、数学模块、非线性模块、信号通路模块、接收器模块、输入源模块、其他常用方块组及工具箱、特别模块。,Simulink模块库简介,Derivative:输入信号微分 Integrator:积分器 State-Space:线性状态空间系统 模型 Transfer-Fcn:线性传递函数模型 Zero-Pole:以零极点表示的传递 函数模型 Memory:存储上一时刻的状态值 Transport Delay:输入信号延时一个给定时间再输出 Variable Transport Delay:输入信号延时一个可变时间再输出,连续模块(Continuous),Zero-Order Hold:零阶采样保持器 Unit Delay:一个采样周期的延时 Discrete-time Integrator:离散时间积分器 Discrete State-Space:离散状态空间系统模型 Discrete Filter:离散滤波器 Discrete Transfer-Fcn:离散传递函数模型 Discrete Zero-Pole:以零极点表示的离散传递函数模型 First-Order Hold:一阶采样保持器,离散模块(Discrete),Look-Up Table:建立输入信号的查询表 (线性峰值匹配) Look-Up Table(2-D):建立两个输入信号的 查询表(线性峰值匹配) Fcn:用户自定义的函数(表达式) MATLAB Fcn:利用MATLAB的现有函数 S-Function:调用自编的S函数的程序,Look-up Table(查表模块) User-defined function(用户定义函数模块),Sum:加减运算 Product:模块输入的乘除运算 Dot Product:点乘运算 Gain:比例运算 Math Function:包括指数函数、对数函数、求平方等常用数学函数 Trigonometric Function:三角函数,包括正弦、余弦、正切等 MinMax:最小值或最大值运算,Math operations(数学模块),Abs:取绝对值 Sign:给出符号函数 Rounding Function 圆整函数 Combinatorial Logic:建立真值表 Logical Operator:逻辑运算 Relational Operator:关系运算 Complex to Magnitude-Angle: 由复数输入转为幅值和相角输出 Complex to Real-Imag: 由复数输入转为实部和虚部输出 Magnitude-Angle to Complex: 由幅值和相角输入合成复数输出 Real-Imag to Complex: 由实部和虚部输入合成复数输出,Rate Limit: 变化速率限制 Saturation:饱和输出, 让输出超过某一值时能够饱和。 Quantizer:离散化 Blacklash:滞环或间隙 Dead Zone:死区 Relay:滞环继电器 Switch: 切换开关 Manual Switch:手动选择开关 Coulomb & Viscous Friction 库仑和粘滞摩擦,Discontinuous(非线性模块),Mux:将多个单一输入转化为一个复合输出。 Demux:将一个复合输入转化为多个单一输出。,Signal Routing(信号通路模块),Scope:示波器,显示信号曲线。 XY Graph:显示二维X-Y图形。 Out1:输出端口 Display:显示数值 To Workspace:将输出写入MATLAB的工作空间。 To File(.mat):将输出写入数据文件。 Terminator:终止一个未连接的输出端口,Sinks(接收器模块),In1:输入端口 Constant:常数信号 Signal Generator:信号发生器,产生任意波形 Ramp:斜坡信号 Sine Wave:正弦波信号 Step:阶跃波信号 Repeating Sequence:重复信号 Pulse Generator:脉冲发生器 Ground:搁置一个未连接的输入端口 Clock:时钟信号 From Workspace:来自MATLAB的工作空间。 From File(.mat):来自数据文件。,Sources(输入源模块),其他常用方块组及工具箱 Blocksets &Toolboxes,Simulink extras(特别模块),2.Simulink Extras (Simulink 附加库) 3.Communications Blockset(通信模块集) 4.Control System Toolbox(控制系统工具箱) 5.DSP Blockset (数字信号处理模块集) 6.Dials & Gauges Blockset(面板和仪表模块集) 7.Fixed-Point Blockset(定点模块集) 8.Fuzzy Logic Toolbox(模糊逻辑工具箱) 9.MPC Blockset(MPC 模块集) 10.NCD Blockset(非线性控制设计模块集) 11.Motorola DSP Blockset(DSP模块集) 12.Neural Network Blockset(神经网络模块集) 13.Power System Blockset (电力系统模块集),SIMULINK的一些其它工具箱,14.Real-Time Windows Target(实时窗口目标库) 15. Real-Time Workshop(实时工作空间库) 16.System ID Blocks (系统辨识模块集) 17.Stateflow(有限状态流程库) 18.Aerospace Blockset(航空模块集) 23.Data Acquistion Toolbox (数据采集工具箱) 20. Signal Processing Blocks(信号处理工具箱) 21. Image Acquistion Toolbox(图形采集工具箱) 22. RF Blockset(射频工具箱) 23.Video and Image Processing Blocks图像处理工具箱,新增工具箱: 机构仿真工具箱 液压驱动工具箱,例1、考虑下图所示的简单的小车系统运动。,例1、考虑下图所示的简单的小车系统运动。,忽略摩擦力,运动微分方程为:,例1、考虑下图所示的简单的小车系统运动。,在matlab/simulink中搭建仿真模型: 加入两个积分模块,第一个模块用来计算速度,第二个模块用来计算位移,可用模块图表示为:,例1、考虑下图所示的简单的小车系统运动。,假定F=sin(t) 为正弦激励,m=0.5。求010s 区间内的系统位移响应曲线,仿真结果如下图:,例1、考虑下图所示的简单的小车系统运动。,若要求同时输出位移和速度,则模型框图为:,例1、考虑下图所示的简单的小车系统运动。,仿真结果如下图:,在模型窗口中,选中模块,则其4个角会出现黑色标记。此时可以对模块进行以下的基本操作。 移动:选中模块,按住鼠标左键将其拖曳到所需的位置即可。若要脱离线而移动,可按住shift键,再进行拖曳。 复制:选中模块,然后按住鼠标右键进行拖曳即可复制同样的一个功能模块。 删除:选中模块,按Delete键即可。若要删除多个模块,可以同时按住Shift键,再用鼠标选中多个模块,按Delete键即可。也可以用鼠标选取某区域,再按Delete键就可以把该区域中的所有模块和线等全部删除。 转向:为了能够顺序连接功能模块的输入和输出端,功能模块有时需要转向。在菜单FormatFlip Block (Ctrl+I)旋转180度, FormatRotate Block (Ctrl+R)顺时针旋转90度。,模块的处理,Simulink模型的建立方法,改变大小:选中模块,对鼠标移到角上出现,进行拖曳即可。 模块命名:先用鼠标在需要更改的名称上单击一下,然后直接更改即可。名称在功能模块上的位置也可以变换180度,可以用FormatFlip Name来实现,也可以直接通过鼠标进行拖曳。Hide Name可以隐藏模块名称。 颜色设定: Format Foreground Color改变模块的前景颜色,Background Color改变模块的背景颜色;而模型窗口的颜色可以通过Screen Color来改变。 参数设定:用鼠标双击模块,就可以进入模块的参数设定窗口,从而对模块进行参数设定。或点击鼠标右键,选择Block parameters 参数设定窗口包含了该模块的基本功能帮助。通过对模块的参数设定,就可以获得需要的功能模块。,模块的处理,Simulink模型的建立方法,SIMULINK模型的构建是通过用线将各种功能模块进行连接而构成的。 用鼠标可以在功能模块的输入与输出端之间直接连线。 线的分支: 按住鼠标右键,在需要分支的地方拉出即可。 或者按住Ctrl键,并在要建立分支的地方用鼠标拉出即可。 或从输入端拉线到分支点,模块的连接,Simulink模型的建立方法,属性设定:选中模块,打开EditBlock Properties可以对模块进行属性设定。或鼠标右键选择Block Properties 属性包括 Description描述属性:对模块的说明文本 Priority优先级属性:模块执行顺序 Tag标签属性: Open function属性:通过它指定一个函数名,则当该模块被双击之后,Simulink就会调用该函数执行,这种函数在MATLAB中称为回调函数 Attributes format string属性,属性的改变,Simulink模型的建立方法,Simulink模型的建立方法,取信号源Sources/Step,取增益Math/Gain,取传函Continuous/Transfer Fcn,取相加点Math/Sum,取显示Sinks/Scope,连接各元件;选择仿真参数,如停止时间等Simulation/Simulation parameters; 开始仿真Simulation/Start,选择start,或这里开始仿真,点击右键,调整显示参数,仿真结果显示,例3、考虑下图所示的简单的小车系统运动。,若要求同时输出位移、速度和加速度,则模型框图为:,Simulink建模与仿真举例,例3、考虑下图所示的简单的小车系统运动。,仿真结果如下图:,例4:,考虑下图所示的简单的小车系统运动。,例4:,考虑下图所示的简单的小车系统运动。,运动微分方程为:,动力方程变换为:,例4:,考虑下图所示的简单的小车系统运动。,在matlab/simulink中搭建仿真模型:,例4:,考虑下图所示的简单的小车系统运动。,位移曲线仿真结果如下图:,同时查看位移、速度、加速度仿真模型框图:,同时查看位移、速度、加速度10s内仿真结果:,若要同时查看位移、速度、加速度20s内仿真结果,该如何设置参数?,第1 步:设置仿真参数和选择解法器 选择Simulation菜单下的Parameters命令,就会弹出一个仿真参数对话框,它主要用三个页面来管理仿真的参数。 Solver页,它允许用户设置仿真的开始和结束时间,选择解法器,说明解法器参数及选择一些输出选项。 Workspace I/O页,作用是管理模型从MATLAB工作空间的输入和对它的输出。 Diagnostics诊断页,允许用户选择Simulink在仿真中显示的警告信息的等级。,构建好一个系统的模型之后,接下来的事情就是运行模型,得出仿真结果。运行一个仿真的完整过程分成三个步骤:设置仿真参数,启动仿真和仿真结果分析。,仿真方法与仿真参数的选择,Simulink建模与仿真举例,Solver页,Simulation time仿真时间:注意这里的时间是计算机仿真中对时间的一种表示,比如10秒的仿真时间,如果采样步长定为0.1,则需要执行100步,若把步长减小,则采样点数增加,那么实际的执行时间就会增加。一般仿真开始时间设为0,而结束时间视不同的因素而选择。,Solver option解法选项:Type后面的第一个选项中指定仿真的步长类型, 分Variable-step(变步长)和Fixed-step(固定步长)两种。,变步长模式解法器有:ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb和discrete。 ode45:缺省值,四/五阶龙格库塔法,适用于大多数连续或离散系统,但不适用于刚性(stiff)系统。它是单步解法器,也就是,在计算y(tn)时,它仅需要最近处理时刻的结果y(tn-1)。一般来说,面对一个仿真问题最好是首先试试ode45。 ode23:二/三阶龙格库塔法,它在误差限要求不高和求解的问题不太难的情况下,可能会比ode45更有效。也是一个单步解法器。 ode113:是一种阶数可变的解法器,它在误差容许要求严格的情况下通常比ode45有效。ode113是一种多步解法器,也就是在计算当前时刻输出时,它需要以前多个时刻的解。 ode15s:是一种基于数字微分公式的解法器(NDFs)。也是一种多步解法器。适用于刚性系统,当用户估计要解决的问题是比较困难的,或者不能使用ode45,或者即使使用效果也不好,就可以用ode15s。,ode23s:它是一种单步解法器,专门应用于刚性系统,在弱误差允许下的效果好于ode15s。它能解决某些ode15s所不能有效解决的stiff问题。 ode23t:是梯形规则的一种自由插值实现。这种解法器适用于求解适度stiff的问题而用户又需要一个无数字振荡的解法器的情况。 ode23tb:是TR-BDF2的一种实现, TR-BDF2 是具有两个阶段的隐式龙格库塔公式。 discrtet:当Simulink检查到模型没有连续状态时使用它。,Simulink建模与仿真举例,固定步长模式解法器有:ode5,ode4,ode3,ode2,ode1和discrete。 ode5:缺省值,是ode45的固定步长版本,适用于大多数连续或离散系统,不适用于刚性系统。 ode4:四阶龙格库塔法,具有一定的计算精度。 ode3:固定步长的二/三阶龙格库塔法。 ode2:改进的欧拉法。 ode1:欧拉法。 discrete:是一个实现积分的固定步长解法器,它适合于离散无连续状态的系统。,Simulink建模与仿真举例,Fixed step size固定步参数:缺省情况下,步长自动地确定,它由值auto表示 Mode(固定步长模式选择) Multi tasking:多任务模式,当simulink检测到模块间非法的采样速率转换,它会给出错误提示。所谓的非法采样速率转换指两个工作在不同采样速率的模块之间的直接连接。在实时多任务系统中,如果任务之间存在非法采样速率转换,那么就有可能出现一个模块的输出在另一个模块需要时却无法利用的情况。通过检查这种转换,Multitasking将有助于用户建立一个符合现实的多任务系统的有效模型。 使用速率转换模块可以减少模型中的非法速率转换。Simulink提供了两个这样的模块:unit delay模块和zero-order hold模块。对于从慢速率到快速率的非法转换,可以在慢输出端口和快输入端口插入一个单位延时unit delay模块。而对于快速率到慢速率的转换,则可以插入一个零阶采样保持器zero-order hold。 Single tasking:单任务模式,不检查模块间的速率转换,它在建立单任务系统模型时非常有用,在这种系统就不存在任务同步问题。 Auto:自动模式,simulink会根据模型中模块的采样速率是否一致,自动决定切换到multitasking和singletasking。,Step size步长参数:对于变步长模式,用户可以设置最大的和推荐的初始步长参数,缺省情况下,步长自动地确定,它由值auto表示。 Maximum step size(最大步长参数):它决定了解法器能够使用的最大时间步长,它的缺省值为“仿真时间/50”,即整个仿真过程中至少取50个取样点,但这样的取法对于仿真时间较长的系统则可能带来取样点过于稀疏,而使仿真结果失真。一般建议对于仿真时间不超过15s的采用默认值即可,对于超过15s的每秒至少保证5个采样点,对于超过100s的,每秒至少保证3个采样点。 Initial step size(初始步长参数):一般建议使用“auto”默认值即可。 Relative tolerance(相对误差):它是指误差相对于状态的值,是一个百分比,缺省值为1e-3,表示状态的计算值要精确到0.1%。 Absolute tolerance(绝对误差):表示误差值的门限,或者是说在状态值为零的情况下,可以接受的误差。如果它被设成了auto,那么simulink为每一个状态设置初始绝对误差为1e-6。,Simulink建模与仿真举例,Output options输出选项(在变步长模式下有效) Refine output:精细输出,其意义是在仿真输出太稀松时,simulink会产生额外的精细输出,这一点就像插值处理一样。用户可以在refine factor设置仿真时间步间插入的输出点数。 产生更光滑的输出曲线,改变精细因子比减小仿真步长更有效,并且在ode45效果最好。 Produce additional output:它允许用户直接指定产生输出的时间点。一旦选择了该项,则在它的右边出现一个output times编辑框,在这里用户指定额外的仿真输出点,它既可以是一个时间向量,也可以是表达式。与精细因子相比,这个选项会改变仿真的步长。 Produce specified output only:它的意思是让simulink只在指定的时间点上产生输出。为此解法器要调整仿真步长以使之和指定的时间点重合。这个选项在比较不同的仿真时可以确保它们在相同的时间输出。,Workspace I/O页,此页主要用来设置与MATLAB工作空间交换数值的有关选项。 Load from workspace:从MATLAB工作空间获取时间和输入变量,一般时间变量定义为t,输入变量定义为u。 Initial state用来定义从MATLAB工作空间获得的状态初始值的变量名。 Save to workspace:设置保存到MATLAB工作空间的变量类型和变量名,包括输出时间向量(Time)、状态向量(States)和输出变量(Output)。 最终状态(Final state)用来定义将系统稳态值存往工作空间所使用的变量名。,Diagnostics页,此页分成两个部分:仿真选项和配置选项。配置选项下的列表框主要列举了一些常见的事件类型,以及当SIMULINK检查到这些事件时给予的处理。仿真选项options主要包括是否进行一致性检验、是否禁用过零检测、是否禁止复用缓存、是否进行不同版本的SIMULINK的检验等几项。 除了上述3个主要的页外,仿真参数设置窗口还包括real-time workshop页,主要用于与C语言编辑器的交换,通过它可以直接从SIMULINK模型生成代码并且自动建立可以在不同环境下运行的程序,这些环境包括实时系统和单机仿真。,设置仿真参数和选择解法器之后,就可以启动仿真而运行。 选择Simulink菜单下的start选项来启动仿真,如果模型中有些参数没有定义,则会出现错误信息提示框。如果一切设置无误,则开始仿真运行,结束时系统会发出一鸣叫声。,启动仿真,Simulink建模与仿真举例,演示示波器Scope,Simulink建模与仿真举例,SCOPE图形的鼠标右键:,zoom out Autoscale Save current axes setting Axes properties 工具栏: Scope parameters General Data history Floating scope,Exm5_2.mdl,Simulink建模与仿真举例,Simulink建模与仿真举例,Simulink建模与仿真举例,连杆机构设计的基本问题是根

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论