当前位置: 首页 > news >正文

003 MATLAB基础计算

01 方程组的求解

多项式及其运算

多项式在MATLAB中以向量形式存储。
即n次多项式用一个长度为n+1的系数向量来表示,且按降幂,缺少的幂次对应的向量元素为0。 多项式的运算主要包括多项式的四则运算、求导、求值和求根运算

多项式的四则运算:

>> p1=[2 0 -6 1];
>> p2=[1 -1];

加减运算       p=polyadd(p1,p2)
                     p =      2     0    -5     0        ,适用于任意阶次间多项式相加
乘法运算       p=conv(p1,p2)
                     p =      2    -2    -6     7    -1        ,p=conv(p1,p2) 
除法运算       [p,r]=deconv(p1,p2)
                      p =      2     2    -4 r =      0     0     0    -3      
                ,[p,r]=deconv(p1,p2),其中k是商,r是余数。

多项式求导:

利用函数polyder来实现,语法格式:
 poly(p):返回多项式p的导数。  
poly(p1,p2):返回多项式p1*p2的导数。
[q,d]=poly(p1,p2):返回多项式p1/p2的导数,q是分子,d是分母。

多项式求值:

y=polyval(p,x):按数组运算规则计算多项式值。
y=polyvalm(p,X):按矩阵运算规则计算多项式值,且X只能是方阵

多项式求根:

>> p=[1 2 -5 0 4];
>> r=roots(p)

当多项式的根已知时,可以利用函数poly(r)来构建多项式的系数。
>> poly(r)
 ans =     1.0000    2.0000   -5.0000    0.0000    4.0000

02 线性方程组的求解:

可直接通过矩阵相除得到

>> A=[1 1 1;2 3 -1;-1 2 4];
>> B=[1;3;2];
>> x=A\B

03 非线性方程组的求根:

x=fzero(fun,x0)
建立函数文件方式:

%建立函数文件fun1.m。
function f=fun1(x)
f=x^2+2*x-exp(x)+5;
%以M函数文件的函数句柄输入方程

>> x=fzero(@fun1,1)                      
x =2.9929
以匿名函数方式输入方程方式:

%以匿名函数方式输入方程

>> x=fzero(@(x)x^2+2*x-exp(x)+5,1)        

x =     2.9929

%以字符串方式输入方程

>> x=fzero('x^2+2*x-exp(x)+5',1)            
x =     2.9929
以字符串方式输入方程:
>> x=fzero('x^2+2*x-exp(x)+5',1)            
x =     2.9929

非线性方程组求解:

x=fsolve(fun,x0)
求解时还可以在指令中加入options:
x=fsolve(fun,x0,options)
其中options通过调用optimset函数来设定最大优化代数、优化精度、中间结果的显示等等。
例如'Display'选项决定显示优化的中间结果的方式,其调用格式为:
options=optimset('Display','off'或'iter'或'final')
其中'off'表示不显示,'iter'表示每步都显示,'final'表示仅显示最终结果。

fun也可以以M函数文件的函数句柄、匿名函数或字符串方式输入

04 插值和拟合

由离散点数据来确定函数的方法

测量值是准确的,没有误差,一般用插值

测量值与真实值有误差,一般用曲线拟合

1 函数插值

作用:函数插值是根据给定的有限个样本点,产生另外的估计点以达到数据更为平滑的效果

一维插值函数的调用格式为:
yi=interp1(x,y,xi, 'method')

method是内插方法,可选择:
最近项插值'nearest'、线性插值'linear'、样条插值'spline'或立方插值'cubic',默认为线性插值。

其中的插值方式也可直接这么用:

s = spline(x,y,xq)

返回与查询点xq对应的插值向量s。s的值由x和y的三次样条插值确定。

>> x=0:10;y=sin(x)+cos(x);
>> xi=0:0.1:10;
>> y1=interp1(x,y,xi);
>> y2=interp1(x,y,xi,'nearest');
>> y3=interp1(x,y,xi,'spline');
>> y4=interp1(x,y,xi,'cubic');
plot(xi,y1,xi,y2,'-s',xi,y3,'-.',xi,y4,'-*')

  ‘nearest’为直角转折; ‘linear’是分段线性变化; 'spline'和 'cubic'形成的曲线很平滑

二维数据插值:
Z1=interp2(X,Y,Z,X1,Y1,'method')

其中X,Y是两个向量,分别描述两个参数的采样点,Z是与参数采样点对应的函数值,X1,Y1是两个向量或标量,描述欲插值的点。Z1是根据相应的插值方法得到的插值结果。 method的取值与一维插值函数相同

其中X1,Y1的取值范围不能超出X,Y的给定范围,否则,会给出“NaN”错误

>>x=0:2.5:10;
>>h=[0:30:60]';
>>T=[95,14,0,0,0;88,48,32,12,6;67,64,54,48,41];
>>xi=[0:0.5:10];
>>hi=[0:10:60]';
>>temps=interp2(x,h,T,xi,hi,'cubic');
>>mesh(xi,hi,temps)

 其中mesh是三维网格图绘制

2 曲线拟合 

作用:曲线拟合就是寻找一个函数(或曲线),使该函数(或曲线)在某种准则下与样本点数据最为接近,但并不要求拟合曲线通过全部已知的样本点

p=polyfit(x,y,n)

函数ployfit使用的准则是最小二乘准则:测得m个离散点,构造一个n(n<m)次多项式:p(x)=a1x^n+a2x^n-1+...+anx+an+1,使得在各个已知数据点处,(p(xi)-yi)^2之和达到最小。 

其中,x和y是已知样本点数据,n是拟合多项式的阶次,p为返回的拟合多项式的系数。

>> x=0:10;y=sin(x)+cos(x);
>> p1=polyfit(x,y,1),p2=polyfit(x,y,2),p3=polyfit(x,y,3),p4=polyfit(x,y,4);
>> x1=-1:0.1:11;
>> y1=polyval(p1,x1);
>> y2=polyval(p2,x1);
>> y3=polyval(p3,x1);
>> y4=polyval(p4,x1);
>>plot(x1,y1,'-*',x1,y2,'--',x1,y3,'-.',x1,y4)

05 常用于数据统计与分析的函数

1. 求矩阵最大元素和最小元素

(1)求最大值和最小值

y=max(X)
y=min(X)
  • 当X为向量时:

返回向量X的最大(小)值存入y,如果X中包含复数元素,则按模取最大(小)值

  • 当X为矩阵时:

返回一个行向量,返回每列的最大元素

[y,I]=max(X)
[y,I]=min(X)
  • 当X为向量时:

返回向量X的最大值(小)存入y,最大(小)值的序号存入I,如果X中包含复数元素,则按模取最大(小)值

  • 当X为矩阵时:

返回每列的最大元素和对应行号

max(A,[],dim)

dim取1时,该函数和max(A)完全相同;dim取2时,该函数返回一个列向量

 2. 求矩阵的平均值和中值

(1)求平均值和中值

mean(X)
  • 当X为向量时:

返回向量X的算术平均值。

  • 当X为矩阵时:

返回一个行向量,各列的平均值

mean(A,dim):当dim为1时,该函数等同于mean(A)。当dim为2时,各行的平均值
median(X)
  • 当X为向量时:

返回向量X的中值。(数据序列为偶数个,则取中间两项的平均值)

  • 当X为矩阵时:

返回一个行向量,各列的中值

median(A,dim):当dim为1时,该函数等同于median(A);当dim为2时,各行的中值

3. 矩阵元素求和与求积

 sum(X)
  • 当X为向量时:

返回向量X各元素的和

  • 当X为矩阵时:

返回一个行向量,各列之和

sum(A,dim):当dim为1时,该函数等同于sum(A);当dim为2时,返回一个列向量,各行之和
 prod(X)
  •  当X为向量时:

返回向量X各元素的乘积

  • 当X为矩阵时:

返回一个行向量,各列之积

prod(A,dim):当dim为1时,该函数等同于prod(A);当dim为2时,返回一个列向量,各行之积

 4.求标准方差

对于向量X:
std(X)
对于矩阵A: 
   Y=std(A,flag,dim)

其中当dim=1时,求各列元素的标准方差(返回行向量);
       当dim=2时,则求各行元素的标准方差(返回列向量)。

当flag=0时,按σ1所列公式计算标准差,
当flag=1时,按σ2所列公式计算标准差。
                省略时flag=0,dim=1

5.相关系数

 X,Y是向量:
 corrcoef(X,Y)
X是矩阵:
corrcoef(X)

返回从矩阵X形成的一个相关系数矩阵。它把矩阵X的每列作为一个变量,然后求它们的相关系数(各列两两之间,依次求相关系数)。

6.  排序 

对向量X:
sort(X)

函数返回一个对X中的元素按升序排列的新向量

 [Y,I]=sort(A,dim,mode)

其中若dim=1,则按列排;
       若dim=2,则按行排。

mode默认‘ascend’,若取‘descend’,则按降序。
Y是排序后的矩阵,而I记录Y中的元素在A中原来的位置。

相关文章:

003 MATLAB基础计算

01 方程组的求解 多项式及其运算 多项式在MATLAB中以向量形式存储。 即n次多项式用一个长度为n1的系数向量来表示,且按降幂,缺少的幂次对应的向量元素为0。 多项式的运算主要包括多项式的四则运算、求导、求值和求根运算 多项式的四则运算&#xff1a…...

安卓逆向之Android-Intent介绍

Intent是各个组件之间交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,而且还能在各组件之间传递数据。Intent一般可用于启动Activity、启动Service、发送广播等场景。Intent有多个构造函数的重载。 显式intent 显式 Intent 明确指定要启动的…...

数据库日期时间用什么类型?

数据库中的日期时间类型主要包括DATE、TIME、DATETIME和TIMESTAMP等,它们在存储、格式和范围等方面有所不同。以下是这些类型的详细说明和异同比较: 1. DATE类型 用途:用于存储日期值,不包含时间部分。格式:YYYY-MM-…...

Python中字符串和正则表达式

Python中字符串和正则表达式 在Python编程中,字符串是最常用的数据类型之一。字符串用于表示文本数据,而正则表达式则是一种强大的工具,用于处理和匹配字符串中的模式。本文将介绍Python中的字符串操作、字符串格式化以及如何使用正则表达式…...

Leecode刷题C语言之N皇后

执行结果:通过 执行用时和内存消耗如下&#xff1a; 代码如下&#xff1a; int solutionsSize;char** generateBoard(int* queens, int n) {char** board (char**)malloc(sizeof(char*) * n);for (int i 0; i < n; i) {board[i] (char*)malloc(sizeof(char) * (n 1))…...

即时通讯| IM+RTC在AI技术加持下的社交体验

即时通讯作为互联网的重要应用之一&#xff0c;见证了中国互联网30年发展的辉煌历程。 它从最初的文字交流&#xff0c;发展到如今的语音、视频通话&#xff0c;甚至是虚拟现实社交&#xff0c;已经渗透到生活的社交、娱乐、商务等方方面面&#xff0c;成为现代社会不可或缺的一…...

repo仓库转移到自己本地的git服务器

前提条件&#xff1a;搭建好gitolite 以转移正点原子rk3568_linux工程为例子&#xff0c;将其转移到自己的git服务器。 获取完整repo仓库 将正点原子epo仓库sync出来 evanevan-X99:~/SRC/atk$ .repo/repo/repo sync -l -j10 evanevan-X99:~/SRC/atk$ .repo/repo/repo list -n…...

微服务即时通讯系统的实现(服务端)----(2)

目录 1. 语音识别子服务的实现1.1 功能设计1.2 模块划分1.3 模块功能示意图1.4 接口的实现 2. 文件存储子服务的实现2.1 功能设计2.2 模块划分2.3 模块功能示意图2.4 接口的实现 3. 用户管理子服务的实现3.1 功能设计3.2 模块划分3.3 功能模块示意图3.4 数据管理3.4.1 关系数据…...

人工智能-深度学习-神经网络-激活函数

激活函数通过引入非线性来增强神经网络的表达能力&#xff0c;对于解决线性模型的局限性至关重要。由于反向传播算法(BP)用于更新网络参数&#xff0c;因此激活函数必须是可微的&#xff0c;也就是说能够求导的。 满足激活函数的条件 1.可微分&#xff0c;也就是可求导 激活函…...

vue3+ts+uniapp微信小程序顶部导航栏

这是colorui改的&#xff0c;不用就不用看啦 color-ui(https://docs.xzeu.com/#/) 新建component文件夹创建topNavigation.vue <template><view><view class"cu-custom" :style"height: CustomBar px"><view class"cu-bar…...

IAR中编译下载未下载问题

第一张图片是正常下载&#xff0c;第二张未正常下载。经过查看download选项发现 启用了 suppress download &#xff08;禁用下载)...

springboot(20)(删除文章分类。获取、更新、删除文章详细)(Validation分组校验)

目录 一、删除文章分类功能。 &#xff08;1&#xff09;接口文档。 1、请求路径、请求参数。 2、请求参数。 3、响应数据。 &#xff08;2&#xff09;实现思路与代码书写。 1、controller层。 2、service接口业务层。 3、serviceImpl实现类。 4、mapper层。 5、后端接口测试。…...

英语系统语法书面记载:高级语法 8 的状语从句

在英语高级语法中&#xff0c;状语从句是一种用来修饰动词、形容词、副词或整个句子的从句&#xff0c;它提供有关时间、地点、原因、条件、方式、让步等信息。状语从句通常由特定的连词引导。以下是常见的几种状语从句类型及其用法&#xff1a; 1. 时间状语从句 (Adverbial Cl…...

C语言:深入理解指针(1)

一.内存和地址 在讲内存和地址之前&#xff0c;我们想有个生活中的案例&#xff1a; 假设有一栋宿舍楼&#xff0c;把你放在楼里&#xff0c;楼上有100个房间&#xff0c;但是房间没有编号&#xff0c;你的一个朋友来找你玩&#xff0c;如果想找到你&#xff0c;就得挨个房子去…...

priority_queue--优先队列

一、认识优先队列 priority_queue&#xff08;优先队列&#xff09;是 C 标准模板库&#xff08;STL&#xff09;中的一个容器适配器。它的底层实现通常是用堆&#xff08;一般是二叉堆&#xff09;来实现的。优先队列中的元素按照一定的优先级顺序进行排列&#xff0c;在队首的…...

Paper -- 建筑物高度估计 -- 基于深度学习、图像处理和自动地理空间分析的街景图像建筑高度估算

论文题目: Building height estimation from street-view imagery using deep learning, image processing and automated geospatial analysis 中文题目: 基于深度学习、图像处理和自动地理空间分析的街景图像建筑高度估算 作者: Ala’a Al-Habashna, Ryan Murdoch 作者单位: …...

开发一套ERP 第八弹 RUst 插入数据

更全面的报错,方便检查错误在哪里,现代高级语言越来越智能 还是得看下原文档怎么操作的 src 目录为crate 的根目录 想在crate 中模块相互引入需要在 main 中声明,各个模块,然后才能在各个模块中相互引入和使用 原始工程引入,避免直接使用 lib.rs 回合cargo 中的一些 工程管理出…...

回退用 git revert 还是 git reset?

git revert 会生成一个新的 commit 来记录此次操作&#xff1b;git reset 是把 HEAD 指针向前挪动一次&#xff0c;会减少一个 commit。 回退用 git revert 回退还是用 git reset&#xff0c;核心就一点&#xff1a; 是否需要记录这次回退。 如果需要记录这次回退&#xff0c…...

【docker】多阶段构建与基础构建,及企业案例展示

基础构建与多阶段构建对比 基础构建&#xff08;单阶段构建&#xff09; 在基础构建中&#xff0c;所有构建过程和最终的应用程序都在同一个镜像中进行&#xff0c;构建工具和最终应用程序都会在最终镜像中。 这样构建镜像时会包含所有的构建工具和依赖&#xff0c;因此最终镜…...

基于链表的基础笔试/面试题

1. 反转链表 问题描述&#xff1a;反转一个单向链表。 示例&#xff1a; 输入&#xff1a;1 → 2 → 3 → 4 → 5 输出&#xff1a;5 → 4 → 3 → 2 → 1 class ListNode {int val;ListNode next;ListNode(int x) {val x;} }public class LinkedList {public ListNode …...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...