MATLAB常用语句总结7

news2024/10/7 13:23:44

MATLAB总结7:常见错误归纳

本篇专门用于记录一些应试技巧


文章目录

  • MATLAB总结7:常见错误归纳
  • 前言
  • 一、一些小定义和小技巧
  • 二、蒙塔卡罗求解方法
    • 1.函数的定义
    • 2.函数引用
    • 3.代码量较少的蒙塔卡罗
  • 三、函数引用与多变量
  • 四、矩阵引用
  • 五、非线性函数:fmincon的使用
  • 六、线性规划函数
    • 1.linprog
    • 2.fminbnd、fminsearch
  • 七、积分和微分
    • 1.quad积分
    • 2.积分int 微分diff
  • 八、lsqcurvefit
  • 九、矩阵求解
  • 十、polyfit 函数进行多项式拟合
  • 十一、ode23和ode45
  • 十二、fzero
  • 十三、meshgrid和surf
  • 十四、fsolve


前言

记忆力比较差,把学习过程中常用的语法记录于此,方便回忆时索引


一、一些小定义和小技巧

  1. rand的使用

rand 是用于生成在(0,1)上随机数的函数,而后面加入 rand(1,2),则意为一个一行两列的(0,1)矩阵,不可乱加。需要使用不同范围的随机数则使用 A*rand() 即可

    x=5*rand();
    y=5*rand();
  1. 符号
取余:mod(A,b)%A是要进行取余的数字,b是除数
不等于:~=
  1. find()的使用
    用r=find(A<=0.6),直接找到A中小于0.6的下标

  2. 分段函数的使用

y=(x<=8).* (2*x)+(x>8&&x<12).*(3*x)+(x>12).* (4*x);
  1. upper, lower的大小写转换
for i=1:length(v)
    if v(i)=='a'
        r(i)=upper(r(i));
    elseif v(i)=='h'
        r(i)='2';
    elseif v(i)=='v'
        r(i)='3';
    end
end

二、蒙塔卡罗求解方法

在这里插入图片描述

1.函数的定义

代码如下(示例):

function c=myobj(x)
c=10*x(1)^3+x(3)*(x(1)^2+x(2)^2);
function r=mycon(x)
r=[x(1)^2+x(2)^2-x(3)-10 ; x(1)^2+x(2)^2+x(3)-3];
function m=myrand
while 1
    m=[10*rand-5 ;10*rand-5 ;10*rand-5 ];
    if mycon(m)<=0
        return 
    end
end

2.函数引用

代码如下(示例):

function [val,x]=myfun2
rand('seed',11);

betterx=myrand;
betterval=myobj(betterx);

for i=1:10000
    betterx=myrand;
    if myobj(betterx)>betterval;
        betterval=myobj(betterx);
    end
end
x=double(betterx);
val=double(betterval);

3.代码量较少的蒙塔卡罗

function [val,x]=myfun2
rand('seed',11);
val=0;
for i=1:100000
    s=-10*rand(1,3)+5;
    if s(1)^2+s(2)^2-s(3)-10<=0 && s(1)^2+s(2)^2+s(3)-3<=0
        if 10*s(1)^3+s(3)*(s(1)^2+s(2)^2)>val
            val=10*s(1)^3+s(3)*(s(1)^2+s(2)^2);
            x=s;
        end
    end
end

三、函数引用与多变量

要分清多元函数的变量要用循环引用

代码如下(示例):

function v=testmain
x=-2:0.1:2;
v=fun(x);

function r=fun(x)
for i=1:length(x)
    if x(i)<-1
        r(i)=x(i)^2+2*x(i)+1;
    elseif x(i)>-1 && x(i)<=2
        r(i)=3*x(i);
    else
        r(i)=2*sqrt(x(i));
    end
end

四、矩阵引用

引用矩阵可以用行列索引,也可以单行单列(注意单行单列是逗号),而且引用矩阵必须是括号

代码如下(示例):

A(1,:)%引用第一行
A(:,2)%引用第二列
A(1,:)=A(1,:).^2;%给矩阵赋值要明白给谁赋值

五、非线性函数:fmincon的使用

  1. 使用时要注意哪里是只输入系数,哪里是方程
  2. 求最小值的是方程,其他的都只输出系数
  3. 同种变量用逗号隔开,不同种用分号
  4. 注意noncon的位置是使用@,引用里面有()
  5. lb ub里面是逗号
  6. 函数系数的对应关系

在这里插入图片描述

代码如下(示例):

function [min,val]=fun3
Fun=@(x) 2*(x(1)-1)^2+3*(x(2)-1)^2+0.2*x(1)*x(2)+(2*x(3)-2)^2
A=[3 2 6;4 5 2;2 9 7];
b=[50;40;100];
Lb=[0,0,0];
ub=[15,9,25];
[min,val]=fmincon(Fun,[0,0,0],A,b,[],[],Lb,ub,@noncon);
function [c,ceq]=noncon(x)
c=[-2*x(1)^-x(2)^2-x(3)^2+5,
    x(1)^2+x(2)^2+2*x(3)^2-200];
ceq=[0];

六、线性规划函数

1.linprog

求解常规线性规划
注意!!!f 函数调用是系数

代码如下(示例):
在这里插入图片描述

function [x,fval]=myfun19
f=[3,-4,2];
A=[1 -1 1;3 2 4;3 2 0];
b=[10;22;10];
Aeq=[];
beq=[];
lb=[0,0,0];
ub=[inf,inf,inf];
[x,fval] = linprog(f,A,b,Aeq,beq,lb,ub);

2.fminbnd、fminsearch

用于找到极小值,fminbnd找到区间内,fminsearch找到从某一点开始的极小值
fminbnd

[x,val] = fminbnd(fun, x1, x2)

% 定义要最小化的函数
fun = @(x) x^2 + 2*x + 1;

% 在区间[-2, 2]内寻找最小值
[x,val] = fminbnd(fun, -2, 2);

fminsearch

% 定义要最小化的函数
fun = @(x) x(1)^2 + x(2)^2;

% 指定初始点
x0 = [1, 1];

% 在多维空间中寻找最小值
x = fminsearch(fun, x0);

七、积分和微分

1.quad积分

y=@(x) (3.*x+2)./(x.^3+2.*x+5);
r=quad(y,0,3);

2.积分int 微分diff

在这里插入图片描述
在这里插入图片描述

F=@(x,y) exp(2*x.^2+3*y.^2);
I=integral2(F,0.5,1,0,1);%取值范围

八、lsqcurvefit

  1. xdata,ydata储存数据,x(i)存放未知变量
  2. 调用时要把 fun(x,xdata) 全部带上
  3. 注意调用时,x和x1的意义是已经计算的系数和要代入计算的函数值,他们的位置和使用fun时的位置相对应!!!

代码如下(示例):

xdata=[10.03,20.04,30.23,40.37,50.16,60.4,70.3,80.66,90.69,100.16,110.94,121.18,130.66,141.23,150.88,160.24];
ydata=[50.44,82.95,133.07,202.76,286.39,381.34,467.36,540.54,591.7,624.28,647.62,660.77,668.06,672.83,675.36,676.82];
fun = @(x,xdata) x(1)./(1+((x(1)/x(2))-1).*exp(-x(3)*xdata));
x0 = [1,1,1];
x = lsqcurvefit(fun,x0,xdata,ydata);
x1=[150:0.5:190];
y=fun(x,x1);

九、矩阵求解

  1. 可以使用linsolve
  2. 也可以求逆
  3. 或者是符号“\”
    在这里插入图片描述

代码如下(示例):

a=[1 1 -1 2;
    -1 -2 1 -3;
    1 1 1 -3;
    2 1 -3 1];
e=[-3;1;-7;4];
x=inv(a)*e;
a=[1 1 -1 2;
    -1 -2 1 -3;
    1 1 1 -3;
    2 1 -3 1];
e=[-3;1;-7;4];
x=linsolve(a,e);

a=[1 1 -1 2;
    -1 -2 1 -3;
    1 1 1 -3;
    2 1 -3 1];
e=[-3;1;-7;4];
x=a\e;

十、polyfit 函数进行多项式拟合

  1. p = polyfit(x, y, n);
  2. x 是数据点的 x 值(自变量)向量,y 是数据点的 y 值(因变量)向量,n 是要拟合的多项式的次数。
  3. polyval(p,50); 用于计算特定位置的值

代码如下(示例):

% 示例数据点
t=[1,6,11,16,21,26,31,36];
x=[5.35,10.51,15.664,20.76,25.94,30.08,35.22,40.36];
p=polyfit(t,x,1);
val=polyval(p,50);
r=[p,val];

十一、ode23和ode45

  1. 使用myode时,注意输入要把x,y都带上,先是自变量,后是因变量
  2. y(1)可表示y,y(2)可表示一阶导数
  3. 输出 [t,y] 分别是对应时间点和对应时间的输出值

在这里插入图片描述

y1 = 0:0.01:1;%取值范围
y0 = 1;初值
[t,y] = ode23(@myode, y1, y0);

function dydx=myode(x,y)
    dydx=(2/3)*x/y^2;
function r = myfun
    x1 = 0:0.1:100;%定义范围
    x0 = [2; 0]; %定义初始条件
    [t, x] = ode23(@myode, x1, x0);%这里的x是一个向量
end

function dxdt = myode(t, x)
    dxdt = [20*(1-x(1)^2)*x(2) + 0.5*x(1); 0];%x(1)代表x,x(2)代表dx/dt
end


十二、fzero

x0 是初始猜测的根的值。

代码如下(示例):

x = fzero(fun, x0)
x = fzero(fun, x0, options)

十三、meshgrid和surf

  1. 注意z的输出
  2. [x,y]=meshgrid(x取值,y取值)
  3. surf绘制表面图

代码如下(示例):

function z=myfun24
[x,y]=meshgrid(-3:0.1:3,-3:0.1:3);
z=x.*y.*exp(sin(x.^2+y.^2));
surf(x,y,z);

十四、fsolve

  1. 记住两个公式:root2和fsolve的使用
  2. folsve(@root2,x0)
  3. f=root2(x) f(1)= f(2)=

代码如下(示例):

% 示例数据点
function r=myfun29
x0=[0,0];
r=fsolve(@root2,x0);

function f=root2(x)
f(1)=x(1)^2-x(2)-1;
f(2)=(x(1)-2)^2+(x(2)-0.5)^2-1;

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

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

相关文章

AI大模型技术分析

一文读懂&#xff1a;AI大模型&#xff01; 引言 近年来&#xff0c;随着深度学习技术的迅猛发展&#xff0c;AI大模型已经成为人工智能领域的重要研究方向和热点话题。AI大模型&#xff0c;指的是拥有巨大参数规模和强大学习能力的神经网络模型&#xff0c;如BERT、GPT等&…

Linux_实现简易日志系统

目录 1、认识可变参数 2、解析可变参数 3、打印可变参数 3.1 va_list 3.2 va_start 3.3 va_arg 3.4 va_end 3.5 小结 4、实现日志 4.1 日志左半部分 4.2 日志右半部分 4.3 日志的存档归类 结语 前言&#xff1a; 在Linux下实现一个日志系统&#xff0c;该日…

Meta低头,库克认错,XR回归第一性原理

图片&#xff5c;Photo by Maxim Hopman on Unsplash ©自象限原创 作者丨罗辑 2024年&#xff0c;XR的故事应该怎么讲&#xff1f; 如果从数据上看&#xff0c;这应该是个沉重的话题。 根据 IDC 报告&#xff0c;2023 年全球 VR 市场出货量下滑了 10.7%。2024 年第一…

【Python】已解决:nltk.download(‘stopwords‘) 报错问题

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;nltk.download(‘stopwords’) 报错问题 一、分析问题背景 在使用Python的自然语言处理库NLTK&#xff08;Natural Language Toolkit&#xff09;时&#xff0c…

昇思MindSpore学习笔记4-05生成式--Pix2Pix实现图像转换

摘要&#xff1a; 记录昇思MindSpore AI框架使用Pix2Pix模型生成图像、判断图像真实概率的原理和实际使用方法、步骤。包括环境准备、下载数据集、数据加载和处理、创建cGAN神经网络生成器和判别器、模型训练、模型推理等。 一、概念 1.Pix2Pix模型 条件生成对抗网络&#x…

浅谈进程隐藏技术

前言 在之前几篇文章已经学习了解了几种钩取的方法 浅谈调试模式钩取浅谈热补丁浅谈内联钩取原理与实现导入地址表钩取技术 这篇文章就利用钩取方式完成进程隐藏的效果。 进程遍历方法 在实现进程隐藏时&#xff0c;首先需要明确遍历进程的方法。 CreateToolhelp32Snapsh…

ViewController 生命周期

ViewController 生命周期 ViewController 生命周期测试程序&#xff1a;ViewControllerLifeCircle ViewController 生命周期 ViewController 是 iOS 开发中 MVC 框架中的 C&#xff0c;ViewColllecter 是 View&#xff08;视图&#xff09;的 Collecter&#xff08;控制器&…

kafka中

Kafka RocketMQ概述 RabbitMQ概述 ActiveMQ概述 ZeroMQ概述 MQ对比选型 适用场景-从公司基础建设力量角度出发 适用场景-从业务场景出发 Kafka配置介绍 运行Kafka 安装ELAK 配置EFAK EFAK界面 KAFKA常用术语 Kafka常用指令 Kafka中消息读取 单播消息 group.id 相同 多播消息 g…

LabVIEW在图像处理中的应用

abVIEW作为一种图形化编程环境&#xff0c;不仅在数据采集和仪器控制领域表现出色&#xff0c;还在图像处理方面具有强大的功能。借助其Vision Development Module&#xff0c;LabVIEW提供了丰富的图像处理工具&#xff0c;广泛应用于工业检测、医学影像、自动化控制等多个领域…

LabVIEW在自动化测试项目中的推荐架构

在自动化测试项目中&#xff0c;推荐使用LabVIEW的生产者-消费者&#xff08;Producer-Consumer&#xff09;架构。这种架构利用队列实现数据的异步传输和处理&#xff0c;提供了高效、稳定和可扩展的解决方案。其主要优点包括&#xff1a;实现数据采集与处理的解耦、提高系统响…

SKF轴承故障频率查询

1&#xff0c;第一步&#xff1a;搜索轴承型号 skf官网 2&#xff0c;第二步&#xff1a;查询故障频率。 第三步&#xff1a;

《基于 defineProperty 实现前端运行时变量检测》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; 近期刚转战 CSDN&#xff0c;会严格把控文章质量&#xff0c;绝不滥竽充数&#xff0c;欢迎多多交流~ &am…

SpringBoot实现多数据源切换

1. 概述 仓库地址&#xff1a;https://gitee.com/aopmin/multi-datasource-demo 随着项目规模的扩大和业务需求的复杂化&#xff0c;单一数据源已经不能满足实际开发中的需求。在许多情况下&#xff0c;我们需要同时操作多个数据库&#xff0c;或者需要将不同类型的数据存储在不…

MyBatis-Plus-实用的功能自动填充字段

前言: java项目用到了mybatis-plus&#xff0c;在一些类里面需要在更新时候&#xff0c;统一设置&#xff0c;修改人&#xff0c;修改ID&#xff0c;修改时间。新增时候设置 创建人&#xff0c;创建时间等 基础类&#xff1a; Data public abstract class BaseModel implements…

昇思25天学习打卡营第18天 | K近邻算法实现红酒聚类

1、实验目的 了解KNN的基本概念&#xff1b;了解如何使用MindSpore进行KNN实验。 2、K近邻算法原理介绍 K近邻算法&#xff08;K-Nearest-Neighbor, KNN&#xff09;是一种用于分类和回归的非参数统计方法&#xff0c;最初由 Cover和Hart于1968年提出(Cover等人,1967)&#…

身体(body)的觉醒

佛&#xff0c;是一个梵文的汉语音译词&#xff0c;指觉醒者。 何谓觉醒&#xff1f;什么的觉醒&#xff1f;其实很简单&#xff0c;就是身体的觉醒。 佛的另一个名字&#xff0c;叫菩提&#xff0c;佛就是菩提&#xff0c;菩提老祖&#xff0c;就是佛祖。 body&#xff0c;即…

如何优化 PostgreSQL 中对于复杂数学计算的查询?

文章目录 一、理解复杂数学计算的特点二、优化原则&#xff08;一&#xff09;索引优化&#xff08;二&#xff09;查询重写&#xff08;三&#xff09;数据库配置调整&#xff08;四&#xff09;使用数据库内置函数的优势 三、具体的优化方案和示例&#xff08;一&#xff09;…

数据结构算法-排序(一)-冒泡排序

什么是冒泡排序 冒泡排序&#xff1a;在原数组中通过相邻两项元素的比较&#xff0c;交换而完成的排序算法。 算法核心 数组中相邻两项比较、交换。 算法复杂度 时间复杂度 实现一次排序找到最大值需要遍历 n-1次(n为数组长度) 需要这样的排序 n-1次。 需要 (n-1) * (n-1) —…

基于springboot+vue+uniapp的高校宿舍信息管理系统小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

几款电脑端能够运行的AI大模型聊天客户端

Ollama Ollama 是一个用于在本地运行和管理大型语言模型的工具。它支持多种流行模型的下载和本地运行&#xff0c;包括 LLaMA-2、CodeLLaMA、Falcon 和 Mistral 。Ollama 提供了一个简单、轻量级和可扩展的解决方案&#xff0c;使得用户可以以最简单快速的方式在本地运行大模型…