MATLAB实验入门教程:Noé 1实验介绍

版权申诉
0 下载量 110 浏览量 更新于2024-11-04 收藏 176KB RAR 举报
资源摘要信息:"Exp-01-Introduction-02.rar_Noé 1"是一份包含实验报告的压缩文件,该实验报告的标题为"实验一:使用MATLAB介绍"。这份文件的描述信息表明它是一份关于使用MATLAB软件进行实验操作的教学或研究文档。标签"noé_1"可能是一个特定的标识符或分类标签。根据文件列表中的"Exp-01 Introduction 02.docx",我们可以推断出文档中将涉及MATLAB的基础操作和入门级别的概念。 知识点: 1. MATLAB软件概述: MATLAB(Matrix Laboratory的缩写)是一种高性能的数值计算环境和第四代编程语言。由美国MathWorks公司出品,广泛应用于工程计算、控制设计、信号处理与通讯、图像处理以及金融建模等领域。MATLAB集数据分析、算法开发和图形显示于一体,它提供了大量的内置函数和工具箱,方便用户快速实现复杂的数学运算和数据可视化。 2. MATLAB的基础使用: - 界面构成:启动MATLAB后,用户可以看到命令窗口(Command Window)、编辑器(Editor)、工作空间(Workspace)、路径(Path)等界面元素,每一个都扮演着特定的角色。 - 命令执行:在命令窗口输入命令后按回车,MATLAB会执行相应的命令并显示结果。 - 变量管理:MATLAB允许用户创建变量来存储数据,进行计算和分析。 - 数据类型:MATLAB支持多种数据类型,包括整数、浮点数、复数、字符串、矩阵、数组和结构体等。 - 基本运算:包括加、减、乘、除、乘方、开方等数学运算,以及逻辑运算和关系运算等。 - 函数使用:用户可以通过调用内置函数或者自定义函数来执行特定任务。 3. 实验报告撰写技巧: - 实验目的:明确实验的目标,解释为什么需要进行该实验。 - 实验环境:描述实验所使用的软件版本、操作系统等环境细节。 - 实验步骤:详细记录实验过程中每一步操作,包括实验的初始化、执行的MATLAB命令和参数设置。 - 结果展示:通过截图、表格、图形等形式展示实验的结果,保证结果清晰可读。 - 结果分析:分析实验结果,解释其代表的意义,讨论实验中可能出现的问题及解决方法。 - 实验结论:总结实验的发现,确认是否达到了实验目的,并提出可能的改进方向。 4. 使用MATLAB进行数据处理和分析: - 数据输入与输出:学习如何在MATLAB中输入数据,包括使用命令输入和从外部文件导入数据。同时了解如何导出分析结果。 - 图形绘制:掌握MATLAB作图功能,包括二维图形和三维图形的绘制,以及如何通过图形展示数据特征。 - 编程基础:学习MATLAB的编程结构,包括循环、条件判断、函数定义等,这对于编写复杂算法非常重要。 - 工具箱应用:了解和应用MATLAB提供的各种专业工具箱,如信号处理工具箱、图像处理工具箱、优化工具箱等。 5. 实验的具体主题: 虽然文档的具体内容没有列出,但考虑到是"实验一",可以推测文档可能涵盖了对MATLAB的简单介绍,如上述内容的概述,也可能包含一些基础的案例研究或者上手练习,用以帮助学生或者研究人员熟悉软件的使用。

import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import matplotlib.pyplot as plt # 定义RBF神经网络的类 class RBFNetwork(nn.Module): def __init__(self, input_size, hidden_size, output_size): super(RBFNetwork, self).__init__() # 初始化输入层,隐含层,输出层的节点数 self.input_size = input_size self.hidden_size = hidden_size self.output_size = output_size # 初始化权重矩阵和偏置向量 self.W1 = nn.Parameter(torch.randn(input_size, hidden_size)) # 输入层到隐含层的权重矩阵 self.b1 = nn.Parameter(torch.randn(hidden_size)) # 隐含层的偏置向量 self.W2 = nn.Parameter(torch.randn(hidden_size, output_size)) # 隐含层到输出层的权重矩阵 self.b2 = nn.Parameter(torch.randn(output_size)) # 输出层的偏置向量 def forward(self,x): # 前向传播过程 x = torch.from_numpy(x).float() # 将输入向量转换为张量 x = x.view(-1, self.input_size) # 调整输入向量的形状,使其与权重矩阵相匹配 h = torch.exp(-torch.cdist(x, self.W1.t()) + self.b1) # 计算隐含层的输出值,使用高斯径向基函数作为激活函数 y = F.linear(h, self.W2.t(), self.b2) # 计算输出层的输出值,使用线性函数作为激活函数 return y #定义pid控制器 class Pid(): def __init__(self, exp_val, kp, ki, kd): self.KP = kp self.KI = ki self.KD = kd self.exp_val = exp_val self.now_val = 0 self.sum_err = 0 self.now_err = 0 self.last_err = 0 def cmd_pid(self): self.last_err = self.now_err self.now_err = self.exp_val - self.now_val self.sum_err += self.now_err self.now_val = self.KP * (self.exp_val - self.now_val) \ + self.KI * self.sum_err + self.KD * (self.now_err - self.last_err) return self.now_val def err_pid(self): self.last_err = self.now_err self.now_err = self.exp_val - self.now_val self.sum_err += self.now_err self.p_err = self.exp_val - self.now_val self.i_err = self.sum_err self.d_err = self.now_err - self.last_err self.now_val = self.KP * (self.exp_val - self.now_val) \ + self.KI * self.sum_err + self.KD * (self.now_err - self.last_err) return self.p_err, self.i_err, self.d_err rbf_net = RBFNetwork(3,10,4) pid_val = [] #对pid进行初始化,目标值是1000 ,p=0.1 ,i=0.15, d=0.1 A_Pid = Pid(1000, 0.1, 0.1, 0.1) # 然后循环100次把数存进数组中去 for i in range(0, 100): input_vector = np.array(A_Pid.err_pid()) output_vector = rbf_net(input_vector) output_vector = output_vector.reshape(4,1) A_Pid = Pid(1000, output_vector[0], output_vector[1], output_vector[2]) pid_val.append(A_Pid.cmd_pid())

2023-06-06 上传