matlab 基操~

news2024/10/5 20:27:45

MATLAB基本操作

1. 对象定义 使用sym定义单个对象、使用syms定义多个对象

2. 使用limit求极限

$$ \lim_{v \rightarrow a} f(x) $$

    limit(f,v,a) % 使用limit(f,v,a,'left')可求左极限

3. 导数 使用diff(f,v,n)对$ f(v)=v^{t-1} $求 $ n $ 阶导 $ \frac{d^nf}{d^nv} $,n缺省时,默认为1,diff(f)默认求一阶导数。

4. 定积分和不定积分 使用int(f,v)求f对变量v的不定积分,使用int(f,v,a,b)求f对变量v的定积分,a、b为积分上下标。$ \int{f(v)dv} $、$ \int^{a}_{b}{f(v)dv} $。

5. matlab函数文件定义形式

function [输出形参列表] = 函数名(输入形参列表)
    函数体
function spir_len = spirallength(d, n, lcolor)
% SPIRALLENGTH plot a circle of radius as r in the provided color and calculate its area
% 输入参数:
%   d: 螺旋的旋距
%   n: 螺旋的圈数
%   lcolor:画图线的颜色
% 输出参数:
%   spir_len:螺旋的周长
% 调用说明:
%   spirallength(d,n):以参数d,n画螺旋线,螺旋线默认为蓝色
%   spirallength(d,n,lcolor):以参数d,n,lcolor画螺旋线
%   spir_len = spirallength(d,n):计算螺旋线的周长,并以蓝色填充螺旋线
%   spir_len = spirallength(d,n,lcolor):计算螺旋线的周长,并以lcolor颜色填充螺旋线

% 版本号V1.0,编写于1999年9月9号,修改于1999年9月10号,作者:亚索

if nargin > 3
    error('输入变量过多!');
elseif nargin == 2
    lcolor = 'b'; % 默认情况下为蓝色
end

j = sqrt(-1);
phi = 0 : pi/1000 : n*2*pi;
amp = 0 : d/2000 : n*d;
spir = amp .* exp(j*phi);

if nargout == 1
    spir_len = sum(abs(diff(spir)));
    fill(real(spir), imag(spir), lcolor);
elseif nargout == 0
    plot(spir, lcolor);
else
    error('输出变量过多!');
end

axis('square');

6. matlab程序设计语句

% for循环
for 循环变量=初值:步长:终值
    循环体
end

% while循环
while 条件
    循环体
end

% if语句
if 条件
    语句组1
elseif
    语句组2
else
    语句组3
end

% switch语句
switch 表达式
   case  表达式1
         语句组1
   case  表达式2
         语句组2
      ... ...
   case   表达式m
          语句组m
   otherwise
          语句组
end

% try语句
try
   语句组1                %语句组1若正确则跳出该结构
catch
   语句组2
end

7. 矩阵操作

操作作用
size(A)求矩阵A的行数和列数
length(x)返回向量x的长度
A'A的转置
A(:,n)取矩阵A第n列数,A(n,:)取第n行
det(A)求矩阵A的行列式
inv(A)求A的逆
rank(A)求A的秩
trace(A)求A的迹
max(A)、min(A)求A的各列最大、最小元素
mean(A)求A各列的平均值
sum(A)求A各列元素之和

8. matlab简单绘图

 plot函数是MATLAB中最核心的二维绘图函数,有诸多语法格式,可实现多种功能。常用格式有:

  • plot(x):缺省自变量的绘图格式,x可为向量或矩阵。
  • plot(x, y):基本格式,x和y可为向量或矩阵。
  • plot(x1, y1, x2, y2,…):多条曲线绘图格式,在同一坐标系中绘制多个图形。
  • plot(x, y,‘s’):开关格式,开关量字符串s设定了图形曲线的颜色、线型及标示符号(见下表)。

pF6PFP0.png

无约束优化问题求解

fminbnd、fminunc函数输出变量解释

变量描述
x由优化函数求得的值. 若exitflag>0,则x为解; 否则,x不是最终解, 它只是迭代制止时优化过程的值
fval解 x 处的目标函数值
exitflag描述退出条件:exitflag>0,表目标函数收敛于解x处;exitflag=0,表已达到函数评价或迭代的最大次数;exitflag<0,表目标函数不收敛
output包含优化结果信息的输出结构。Iterations:迭代次数;Algorithm:所采用的算法;FuncCount:函数评价次数

一元函数无约束优化问题-fminbnd

常用格式

$$ min f(x), x_1<x<x_2 $$

(1)x= fminbnd (fun, x1, x2) (2)x= fminbnd (fun, x1, x2 , options) (3)[x , fval]= fminbnd(...) (4)[x , fval , exitflag]= fminbnd(...) (5)[x , fval , exitflag , output]= fminbnd(...) 函数fminbnd的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解

例子

求函数 $ f(x)=2e^{-x}sin(x) $ 在 $ 0<x<8 $ 时的最小值

% 如果求最大需要对f取反
f = @(x) (2*exp(-x)*sin(x));
[x,fval] = fminbnd(f,0,8);
x
fval

多元函数无约束优化问题-fminunc

常用格式

$$ min f(X),这里X为n维变量 $$ fminunc常用格式为: (1)x= fminunc(fun, X0); (2)x= fminunc(fun, X0,options); (3)[x,fval]= fminunc(...); (4)[x,fval,exitflag]= fminunc(...); (5)[x,fval,exitflag,output]= fminunc(...) 其中 X0为初始值

例子

求函数$ f(x_1,x_2)=(4x_1^2+2x_2^2+4x_1x_2+2x_2^2+1)e^x $的最小值,$ X_0=[-1,1] $

f = @(x) (4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1)*exp(x(1));
x0 = [-1,1];
[x,fval] = fminunc(f, x0);
x
fval

线性规划问题求解

使用linprog求解一般线性规划问题

常见问题(linprog默认求最小值) $$ minz=cX $$

$$ s.t. \begin{cases} AX\leq{b}\ Aeq\cdot{X}=beq\ VLB\leq{X}\leq{VUB} \end{cases}$$

求解命令

[x,fval] = linprog(c,A,b,Aeq,beq,VLB,VUB)

例子

$$ min z=13x_1+9x_2+10x_3+11x_4+12x_5+8x_6 $$

$$ s.t.\left{ \begin{aligned} & x_1+x_2=400\ & x_2+x_5=600\ & x_3+x_6=500\ & 0.4x_1+1.1x_2+x_3\leq{800}\ & 0.5x_4+1.2x_5+1.3x_6\leq{900}\ & x_i\geq0,i=1,2,...,6 \end{aligned} \right. $$

f = [13 9 10 11 12 8];
A =  [0.4 1.1 1 0 0 0
      0 0 0 0.5 1.2 1.3];
b = [800; 900];
Aeq=[1 0 0 1 0 0
     0 1 0 0 1 0
     0 0 1 0 0 1];
beq=[400 600 500];
vlb = zeros(6,1);
vub=[];
[x,fval] = linprog(f,A,b,Aeq,beq,vlb,vub)

使用bintprog求解0-1规划问题

matlab2014以上版本使用intlinprog求解0-1规划问题

$$ minz=cX $$

$$ s.t. \begin{cases} AX\leq{b}\ Aeq\cdot{X}=beq\ X为0-1变量 \end{cases}$$

% 命令
[x,fval] = bintprog(c,A,b,Aeq,beq)

例子

$$ min z=3x_1+7x_2-x_3+x_4 $$ $$ s.t. \begin{cases} 2x_1-x_2+x_3-x_4\geq{1}\ x_1-x_2+6x_3+4x_4\geq{8}\ 5x_1+3x_2+x_4\geq{5}\ x_i=0或1(i=1,2,3,4) \end{cases} $$

z = [3;7;-1;1];
A = [-2 1 -1 1;
     -1 1 -6 -4;
     -5 -3 0 -1];
b = [-1;-8;-5];
Aeq = [];
beq = [];

[x,fval] = bintprog(z,A,b,Aeq,beq)

数据插值与拟合

数据插值,使用interpl进行一维插值

matlab命令

yi = interpl(X,Y,xi,method)

该命令用指定的算法找出一个一元函数,然后以该函数给出xi处的值。其中x=[x1,x2,…,xn]’和 y=[y1,y2,…,yn]’两个向量分别为给定的一组自变量和函数值,用来表示已知样本点数据;xi为待求插值点处横坐标,可以是一个标量,也可以是一个向量,是向量时,必须单调;yi得到返回的对应纵坐标。

  • method可以选取以下方法之一:
    • ‘nearest’:最近邻点插值,直接完成计算;
    • ‘spline’:三次样条函数插值;
    • ‘linear’:线性插值(缺省方式),直接完成计算;
    • ‘cubic’:三次函数插值;

例子

作函数$ y=(x^2-3x+7)e^{-4x}sin(2x) $在[0,1]取间隔为0.1的点图,用插值进行实验

x=0:0.1:1;
y=(x.^2-3*x+7).*exp(-4*x).*sin(2*x);  %产生原始数据

subplot(1,2,1);
plot(x,y,x,y,'ro')    %作图
xx=0:0.02:1;  %待求插值点
yy=interp1(x,y,xx,'spline');   %此处可用nearest,cubic,spline分别试验

subplot(1,2,2)
plot(x,y,'ro',xx,yy,'b')    %作图

曲线拟合

拟合函数polyfit

p=polyfit(x,y,n)
[p,s]= polyfit(x,y,n)

说明:x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。p是n+1维参数向量p(1),p(2)….那么拟合后对应的多项式即为: $$ p(1)x^n+p(2)x^{n-1}+\cdot\cdot\cdot+p(n)x+p(n+1) $$

x必须是单调的。矩阵s用于生成预测值的误差估计

多项式求值函数polyval

y=polyval(p,x)
[y,DELTA]=polyval(p,x,s)

说明:y=polyval(p,x)为返回对应自变量x在给定系数p的多项式的值; [y,DELTA]=polyval(p,x,s) 使用polyfit函数的选项输出s得出误差估计DELTA。它假设polyfit函数数据输入的误差是独立正态的,并且方差为常数。则DELTA将至少包含50%的预测值。

例子

求如下给定数据的拟合曲线 x=[0.5,1.0,1.5,2.0,2.5,3.0],y=[1.75,2.45,3.81,4.80,7.00,8.60]

x=[0.5,1.0,1.5,2.0,2.5,3.0];
y=[1.75,2.45,3.81,4.80,7.00,8.60];
plot(x,y,‘*r’)  %先观察数据点的大致形态
p=polyfit(x,y,2)  %用二次多项式拟合
x1=0.5:0.05:3.0; % 步长0.05
y1=polyval(p,x1);
plot(x,y,'*r',x1,y1,'-b')

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【题解】—— LeetCode一周小结10

【题解】—— 每日一道题目栏 上接&#xff1a;【题解】—— LeetCode一周小结9 4.用栈实现队列 题目链接&#xff1a;232. 用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a…

一文了解原型和原型链

本文重点概念&#xff1a; 1、所有的对象都是new一个函数创建的 2、所有的函数都有一个属性prototype&#xff0c;称为函数原型 3、函数原型得到的这个对象都有一个属性constructor,指向该函数 4、所有的对象都有一个属性&#xff1a;隐式原型__proto__&#xff0c;隐式原型…

计算机网络—OSPF单区域配置

目录 目录 1.实验环境准备 2.配置 OSPF 3.验证 OSPF 配置 4.修改 OSPF hello 和 dead 时间参数 5.OSPF缺省路由发布及验证 6.控制 OSPF DR/BDR 的选举 7.配置文件 拓扑图&#xff1a; 1.实验环境准备 基本配置以及IP编址。 <Huawei>system-view Enter system vi…

Python中的运算符介绍

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

四节点/八节点四边形单元悬臂梁Matlab有限元编程 | 平面单元 | Matlab源码 | 理论文本

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

关于比特币的AI对话

【ChatGPT】 比特币源码开源吗&#xff1f; 是的&#xff0c;比特币的源码是开源的。比特币项目是在MIT许可证下发布的&#xff0c;这意味着任何人都可以查看、修改、贡献和分发代码。比特币的源码托管在GitHub上&#xff0c;可以通过下面的链接进行访问&#xff1a; https://g…

一个超冷门的 Vue3 内置组件,帮我优化了66%的性能!

背景 最近项目中有一个页面&#xff0c;是之前的老页面&#xff0c;页面中的内容其实就是一个 Tabs 组件&#xff0c;有三个 Tab&#xff0c;分别展示不同的内容&#xff0c;但是也有共同内容&#xff0c;那就是共同都有一个一个报表组件 下面是大致的代码展示如下&#xff0c…

pyqt线程正确使用

PyQt之科学使用线程处理耗时任务以及线程通信方法 上面这篇文章看似很科学… 经过实际测试&#xff0c;需要按下面创建线程&#xff1a; self.work EmailWork() self.thread QtCore.QThread() self.thread.start()self.work.moveToThread(self.thread) self.work.complete_…

聚观早报 | 天猫2024年投入5亿元;英伟达市值再创新高

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 3月11日消息 天猫2024年投入5亿元 英伟达市值再创新高 IAR全面支持小华全系芯片 紫光云发布紫鸾5.0云平台 首家…

大话设计模式——5.代理模式(Proxy Pattern)

1.定义 为其他具体对象提供一种代理用以控制对这个对象的访问&#xff0c;属于结构型模式。 UML图&#xff1a; 2.示例 生活中有许多的代理&#xff0c;如房产中介&#xff0c;房主出售的房子挂在中介处&#xff0c;中介帮忙寻找需要的客户&#xff0c;客户不需要直接接触房…

YOLOv9环境搭建推理测试

引子 对于CV从业者来说&#xff0c;YOLO系列是个绕不过的经典结构&#xff0c;笔者遥想当年YOLO横空出世的时候&#xff0c;Faster RCNN还是学术界目标检测的翘楚。二阶段检测还是大行其道&#xff0c;不过时至今日&#xff0c;估摸着没有人再提二阶段目标检测的结构了。YOLO系…

【软件测试面试】银行项目测试面试题+答案(二)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 面试题&#xff1…

ChatGPT+MATLAB应用

MatGPT是一个由chatGPT类支持的MATLAB应用程序&#xff0c;由官方Toshiaki Takeuchi开发&#xff0c;允许您轻松访问OpenAI提供的chatGPT API。作为官方发布的内容&#xff0c;可靠性较高&#xff0c;而且也是完全免费开源的&#xff0c;全程自己配置&#xff0c;无需注册码或用…

【超级干货】播放器核心知识点-音视频同步原理深入剖析

引言 本文是自己学习利用ffmpeg实现音视频同步播放的总结文档,参考了网上一些博客,同时调试ffplay源码进行理解,站在巨人的肩膀上学习,感谢开源和分享精神。文中粘贴的代码每行都有注释,确保读者能理解所涉函数的每一行代码的意义。 章节 因为ffplay源码阅读起来比较复…

TripoSR:开源3D重建模型,0.5秒就能完成2D到3D图转换

TripoSR是由Tripo AI和Stability AI合作开发的最先进的开源模型&#xff0c;用于从单个图像中快速前馈3D重建。在NVIDIA A100 GPU上不到0.5秒就能生成高质量的3D模型。 项目链接 https://github.com/VAST-AI-Research/TripoSR TripoSR利用大型重建模型(LRM)的原理&#xff0c;…

恒峰便携式森林灭火泵:森林守护者的强力助手

在茂密的森林中&#xff0c;一场突如其来的火灾可能会带来无法估量的破坏。这不仅会对生态环境造成严重影响&#xff0c;还可能危及人类和动植物的生命安全。为了应对这种突发情况&#xff0c;恒峰研发出了一种便携式森林灭火泵&#xff0c;它成为森林守护者的强力助手。 首先&…

32个关键字详解①(C语言)

目录 关键字分类&#xff1a; 第一个C程序 - 补充内容 变量的定义与声明 - 补充内容 变量的分类 - 补充内容 变量的作用域 - 补充内容 变量的生命周期 - 补充内容 auto 关键字 register 关键字 static 关键字 static 修饰变量&#xff1a; static修饰函数 sizeof 关键字 基本数…

解决windows无法识别外接显示器问题

文章目录 1. 问题2. 解决方法2.1 先尝试重启2.2 检查设备驱动 1. 问题 windows 系统在接入其他显示器时&#xff0c;发现另一个显示器没有生效 2. 解决方法 2.1 先尝试重启 首先你应该至少先尝试重启一次电脑&#xff0c;万能的重启方法&#xff01; 2.2 检查设备驱动 如…

hadoop报错:HADOOP_HOME and hadoop.home.dir are unset. 解决方法

参考&#xff1a;https://blog.csdn.net/weixin_45735242/article/details/120579387 解决方法 1.下载apache-hadoop-3.1.0-winutils-master 官网下载地址&#xff1a; https://github.com/s911415/apache-hadoop-3.1.0-winutils win配置系统环境&#xff1a; 然后重启idea…

【Python从入门到进阶】50、当当网Scrapy项目实战(三)

接上篇《49、当当网Scrapy项目实战&#xff08;二&#xff09;》 上一篇我们讲解了的Spider与item之间的关系&#xff0c;以及如何使用item&#xff0c;以及使用pipelines管道进行数据下载的操作&#xff0c;本篇我们来讲解Scrapy的多页面下载如何实现。 一、多页面下载原理分…