MATLAB
井底之蛤
后来啊遇到的人都来自鹅山
展开
-
matlab 根据变量名读取.txt文件实验数据
matlab读取超过memory限制的.txt文件数据原创 2022-11-02 19:33:28 · 904 阅读 · 1 评论 -
利用simulink 进行PID参数自动调制
PID控制简单易上手,主要针对单输入单输出系统,根据响应进行调节,是应用最广泛的控制方法,simulink有PID模块具备自动调整PID参数的功能:点击PID模块,点击tuner:根据需求进行参数调制,主要是优化的目标及收敛能力和瞬态特性:...原创 2021-12-13 20:32:34 · 10852 阅读 · 2 评论 -
向量元素判断、替换
a([1 2 5])=0a(a==2)=0isempty(isnan(a))原创 2021-11-05 22:30:18 · 250 阅读 · 0 评论 -
matlab 眼镜蛇机动壁纸制作
TR=stlread('f-16.stl');T=TR.ConnectivityList;X=TR.Points(:,1);Y=TR.Points(:,2);Z=TR.Points(:,3);i=1;for beta=0:-30:-120beta=beta/57.3;if i==2 beta=beta-15/57.3;endalpha=0/57.3;gamma=0/57.3;Cx=cos(gamma);Sx=sin(gamma);% X轴 滚转Cy=cos(beta);S.原创 2021-10-17 16:27:32 · 384 阅读 · 0 评论 -
结构体+函数句柄实现轻量化类
类有助于实现数据和函数的管理,降低程序中的耦合程度,利用结构体和函数句柄能够实现轻量化类的效果,由于有些类属性和成员较为简单,不需要进行专门写为类。例如飞行器:p.vehicle.Sref=130;p.vehicle.m=44000;p.vehicle.CD=@(Ma,alpha) -0.0017*Ma^4+0.1132*alpha;这样在编程时非常简洁...原创 2021-08-11 15:53:00 · 220 阅读 · 0 评论 -
matlab 交互界面设计
1、回调函数没报错直接退出一般是由于函数当中有clear命令,删除了交互界面handle2、多界面和标签页可以通过面板实现,设置面板的visible属性即可3、动画卡顿可以通过设置属性值实现快速刷新...原创 2021-08-03 21:57:21 · 2509 阅读 · 0 评论 -
matlab 神经网络工具使用
1、输入nnstrat进入界面/打开应用程序中的工具2、输入和输出数据为矩阵形式,每一行或每一列为一个样本,输入为input、输出为target3、epoch代表迭代次数4、可以设置隐含层个数和算法5、训练完后可以选择重新训练或保存为函数或simulink模型6、一路点next即可7、气动参数拟合效果挺好...原创 2021-08-03 21:52:58 · 962 阅读 · 1 评论 -
声呐矩形图像转换为扇形算法
clear;clc;close;%% 读取输入图像数据imIn=imread('lion.jpg');imIn=flip(imIn);% 倒置读入图像数据[hIn,wIn,~]=size(imIn);% 输入图像的宽和高%% 根据扇形几何关系计算输出图像像素angle=15; % 张开角度的一半ratio=8/11; % 假定Llength/(Llength+Lstart)=8/9,要求<1hOut=ceil(hIn/ratio); .原创 2021-08-01 09:24:18 · 2839 阅读 · 4 评论 -
matlab 面向对象学习笔记(二)
1、使用程序的方式进行GUI编程main.m% 构造初始数据balance=500;input=0;% 构建figure对象和控件hfig=figure('pos',[100,100,300,300]);withdrawButton=uicontrol('parent',hfig,'string','withdraw','pos',[60 28 60 28]);depositButton =uicontrol('parent',hfig,'string','deposit','pos',原创 2021-07-20 00:12:51 · 327 阅读 · 0 评论 -
matlab 面向对象学习笔记(一)
面向对象编程(Object Oriented Programming,OOP)1、翻译翻译什么是TMD的对象?对象是具体的东西,具体事物都有其属性(property),具体事物还有其行为(无论主动还是被动)2、什么是类类是对相似对象的抽象,具有相同的属性和行为,例如:f=figure,figure是类,f是对象。3、面向对象有什么优点?①面向对象心情愉悦①面向对象将大问题分解为小的对象,面向过程是通过数据及函数来处理问题,即数据在函数间的流淌。而面向对象是将问题模块化,模块里面有原创 2021-07-19 20:55:21 · 550 阅读 · 3 评论 -
马赫数和速度相互转换函数(matlab插值计算)
function [Mach] = v2Mach(v,h)% 速度与马赫数转换函数,插值计算% 输入:速度v 单位 m/s ,高度h 单位m 输出:MachH=[0 100 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 6500 7000 7500 8000 ... 8500 9000 9500 10000 11000 12000 13000 14000 15000 16000 17000 18000 19000 20.原创 2021-04-29 22:01:58 · 3221 阅读 · 0 评论 -
matlab调用文件夹中子函数
当我们算法比较复杂时需要写大量的函数,我们希望将某一方面的所有相关函数整理在一个文件夹中,较好的办法是采用类,将相关的函数写在一个类的文件夹下,但大多数时候我们并不打算或没有时间去改写为类,这就需要我们去添加路径。matlab默认函数只能调用本文件夹中的函数或是工具箱中已经添加了路径的函数。对于子文件夹中的函数我们需要在程序调用前添加其路径,路径分为绝对路径和相对路径,方便起见写相对路径,值得注意的是我们有时需要修改文件夹的名称或是删除了某些函数,这时我们需要删除已添加路径,以免matlab警告:原创 2021-04-28 20:19:18 · 4334 阅读 · 0 评论 -
matlab与mysql连接问题之SSL报错
1、首先下载MySQL2、下载MySQL的可视化界面Navicat,不然只能通过命令行3、下载JDBC进行MySQL与matlab的数据传输这些步骤参考https://blog.csdn.net/zzx2016zzx/article/details/86532429?spm=1001.2014.3001.5506值得注意的是所有资源均可免费下载,自己搜索即可:https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.4原创 2021-04-18 18:41:40 · 331 阅读 · 0 评论 -
气动参数的拟合
气动参数一般有两种使用方法,插值和拟合,拟合计算较快,写程序简单。matlab有自带函数regress可以进行多元参数最小二乘拟合,可以拟合出想要的形式,得到每一项的系数。clc;clear;close;alpha1=xlsread('SR72数据.xlsx','sheet1','C4:C19');CD1=xlsread('SR72数据.xlsx','sheet1','D4:D19');plot(alpha1,CD1)alpha2=xlsread('SR72数据.xlsx','sheet1',原创 2021-01-25 12:12:57 · 1081 阅读 · 0 评论 -
fmincon 目标函数和非线性约束函数传参
fmincon的功能是求解有约束非线性规划问题基本调用格式[x,y]=fmincon('objFun',X0,A,b,Aeq,beq,lb,ub,nonlincon',options)objFun指目标函数nonlincon指非线性约束函数注1:线性约束为空时要写为A=[]; X0是指优化变量,目标函数根据X0判断优化变量数 lb ub可以实现定值约束,方便处理终端约束注2:当目标函数和非线性约束函数需要其他辅助参数时可以通过以下三个方式实现传参 ...原创 2020-12-21 11:28:26 · 2250 阅读 · 0 评论 -
matlab绘制共用x轴图像 subplot子图不显示问题
subplot绘制子图会自动分配子图范围避免子图重叠,我们绘制共用x轴图时需要若干图的x轴重叠,会出现子图不显示的问题,这是由于subplot判定子图重叠,然后被后续子图覆盖了,解决办法是先画子图再调整子图位置。下面是我复现一篇论文的例子,四个图共用一个x轴:clc;close;h1=subplot(4,1,1);plot(t,H,'*')hold onplot(t,H)set(gca,'xticklabel',[],'YLim',[30 90]);ylabel('H km')h2=原创 2020-12-21 17:08:30 · 8651 阅读 · 2 评论 -
matlab动画制作思路
matlab动画采用每帧播放的策略1、首先将不变的部分初始化为背景plot(背景)backGround=gcf;若背景会在后续发生变化,设个临时变量picTemp=backGround;2、变化修改的部分设置在循环里面for。。。hold offpicTemp;%先画背景hold onh=plot(变化);pause(1)%停顿1sdrawnow%更新画布delete(h)%删掉动画部分end3 更新背景plot(背景更新部分)picT原创 2020-11-29 10:02:56 · 738 阅读 · 0 评论 -
matlab文件I/O
读写MAT文件MAT文件时一种双精度、二进制的matlab文件,后缀名为.matMAT文件分为两部分:文件头部和数据,文件头部为一些描述性文字;数据依次按照数据类型、数据长度、数据内容保存调用save函数保存为MAT文件savesave filename x1 x2 x3.....save('filename','-struct','s') 保存结构体s中所有字段save filename s* 将所有s开头的变量保存到filenamesave s2 ‘-struct’ s..原创 2020-10-12 15:37:43 · 451 阅读 · 0 评论 -
simulink仿真结果剧烈震荡的一个原因
simulink模型仿真后有时会发现结果图像呈现十分剧烈的等幅振荡的现象,可能的原因之一是我们在其中使用了积分模块,积分模块采用默认的变步长。这也给我们一个启示就是在调用一个模块的时候要注意其可以设置的部分是哪些,比如积分模块就有许多种方式可供选择,我们常用的是龙格库塔方法,但不注意采用了系统默认的方法就有可能出现问题。若不去注意出现问题会浪费很多时间去摸排。...原创 2020-08-30 16:01:17 · 7881 阅读 · 1 评论 -
遗传算法的一个基本例子(含演变动画)
遗传算法的matlab实现%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Genetic Algorithms %% Author:Ji Jungang Time:2020/08/23 %% 对于多变量问题,交叉和变异以及fitn原创 2020-08-29 13:10:51 · 1052 阅读 · 0 评论 -
线性规划函数linprog(linear programming)
原创 2020-07-29 11:51:30 · 1062 阅读 · 2 评论 -
利用ode45求解含控制量并且控制量为离散点的动力学方程
1、写出微分方程函数2、求解function dy=rigid(t,y)dy=zeros(3,1);dy(1)=y(2)*y(3);dy(2)=-y(1)*y(3);dy(3)=-0.51*y(1)*y(2);end%将微分方程写成函数形式,待调用options=odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);[T Y]=ode45(@rigid,[0 12],[0 1 1],options);plot(T,Y(:,1),'-',T,Y原创 2020-07-29 10:44:17 · 2320 阅读 · 1 评论 -
matlab如何安装自己下载的工具箱及自己编写的工具
在利用matlab解决实际问题时我们常常需要一些别人已经编写好的工具,这样省时省力,或在自己的工作当中有些东西经常用到,这时我们编写自己的工具箱。实际上工具箱就是一堆函数,处理特定问题的函数集,我们下载的工具箱就是函数集,我们自己编写的工具箱也是函数集。例如用SNOPT,你可以下载已有的,也可以自己编写,将这些函数放在同一个文件夹下,添加至matlab安装路径下的toolbox中,打开matlab在设置路径中找到该文件夹并添加,这样便可以调用了。 ...原创 2020-07-28 18:50:24 · 1141 阅读 · 0 评论 -
无人机如何利用卫星导航系统信息
不同的卫星导航系统有不同的坐标系,例如GPS采用的坐标系为WGS-84,我国北斗导航系统采用的是CGCS2000,俄罗斯GLONASS采用的是PZ-90,这些坐标系的不同在于椭球的参数不同,高程指的是物体到椭球切平面的距离,不同坐标系同一经纬度点高程相差较大。根据不同卫星导航系统解算得到的坐标通常为LBH,经度L、纬度B和高程H,这是一致的。但是对于无人机导航来说用经纬度导航是不现实的,因为经度差1°地表距离相差100km,我们通常要将LBH坐标转化为地心固连坐标系的XYZ坐标,再转换为当地北东...原创 2020-07-20 16:41:21 · 1174 阅读 · 0 评论 -
matlab读取论文图中数据
原理如下图:代码参考别人的,如下:clear,clc,close all%% 图片与曲线间的定标im=imread('dongya.jpg');%读入图片(替换成需要提取曲线的图片)im=rgb2gray(im);%灰度变化thresh = graythresh(im);%二值化阈值im=im2bw(im,thresh);%二值化set(0,'defaultfigurecolor','w')imshow(im)%显示图片[y,x]=find(im==0);%找出图形中的“黑点”原创 2020-06-12 20:14:01 · 2507 阅读 · 0 评论 -
飞机气动导数的插值计算_Matlab
在进行飞行力学建模时飞机的气动导数一般由拟合公式或插值表给出,拟合公式使用起来比较简单,插值表需要用插值方法计算,气动导数通常与两个变量有关,是二元插值问题,下面是Matlab计算气动导数一例:function [ Cndr_0 ] = Cndr( alpha_0,beta_0 )% 输入单位为度% 计算指定攻角和侧滑角下的Cndralpha=[-10 -5 0 5 10 15 20 25 30 35 40 45]';beta=[-30 -20 -10 0 10 20 30]';C原创 2020-06-08 09:46:34 · 2983 阅读 · 0 评论 -
哈密顿系统_Matlab
%%clc;clear;close;x=-2.5:0.3:2.5;y=-2.5:0.3:2.5;[X Y]=meshgrid(x,y);Z=0.25*X.^4-0.5*X.^2+0.5*Y.^2+0.25;figureh1=contour(X,Y,Z,'ShowText','on');hold onmesh(X,Y,Z);title('哈密顿系统');hold on[x1,y1]=meshgrid(linspace(-2.5,2.5));h=streamslice(x1,y1...原创 2020-06-07 09:00:03 · 5454 阅读 · 0 评论 -
Maple符号公式推导笔记
多项式:sort:降幂排列函数例如:>sort_poly:=x+x^2-x^3+1-x^4;>sort(sort_poly);对于多元多项式情况比较复杂些不强调时按混合项总幂排,若强调某一个变量时放在前面>sort(poly,[y,x]),还有特殊的按字典排序>sort(poly,[x,y],'plex')作各种运算时会自动合并同类项,对于多项式只有完全相同的项才会自动合并,若要针对某个变量合并,要用collect命令>collect(poly,原创 2020-05-29 09:13:16 · 10075 阅读 · 1 评论 -
经典控制理论和现代控制理论中用到的matlab函数简介(飞控设计)
时域分析:num:代表传递函数分母 den:代表传递函数分子 sys代表传递函数sys=tf(num,den) tf:传递函数(transform function的缩写)sys=zpk(z,p,k)其中z=[z1 z2 z3 z4....] p=[p1 p2 p3 ......] z(zero) p(pole) zpk:传递函数的零极点形式,例如zpk(sys1)就可以将多项式的形式转化为零极点形式sys=series(sys1,sys2) 串联sys=parallel(sys1,s.原创 2020-05-21 10:47:47 · 2553 阅读 · 1 评论 -
纵向增稳设计
飞机纵向增稳设计过程:1、建立simulink模型 2、l利用linmod函数计算得到等效的闭环传递函数 3、通过matlab自带的根轨迹函数rlocus做出根轨迹图进行反馈增益调节,相应代码如下:clc;clear all;close;[A,B,C,D]=linmod('aq_feedback');[num,den]=ss2tf(A,B,C,D);rlocus(-1*num(1,:),den)simulink模型如下图所示:对于纵向来讲我们主要调整长周期和短周期运动: 对于长..原创 2020-05-12 15:27:45 · 1356 阅读 · 0 评论 -
反馈解耦——线性二次型最优控制法
飞机控制当中,纵向最重要的任务是轨迹跟踪,横侧向最主要的任务是实现偏航和滚转的解耦,在之前写的特征结构配置当中我们通过特征向量配置实现了解耦,除了上述办法还有其他approach实现吗?在这篇文章当中我们通过使得部分交叉反馈增益值为零实现解耦的目的。基于线性二次型最优控制理论,通过调节哈密顿函数中的权重,使得反馈增益部分值为零。clc;clear;close;%% matrices of ...原创 2020-05-06 18:36:12 · 683 阅读 · 0 评论 -
输出反馈_线性二次型最优控制法
最优控制理论是现代控制理论的重要分支,主体思想是结合反馈控制、代价函数、拉格朗日乘子求得使代价函数最优的反馈增益。在matlab中有自带的lqr、lqry等函数计算,只需状态方程相应的矩阵以及Q、R矩阵便可很方便地调用。但上述函数都是采用状态反馈,无法处理输出反馈的情形,本篇文章正是解决这一问题的例子,主要采用迭代算法。clc;clear;close;%% matrices of li...原创 2020-04-23 21:17:52 · 1395 阅读 · 4 评论 -
输出反馈_特征结构配置法例子
特征结构配置即配置系统的特征值和特征向量,使系统达到预期的运动模式,期望特征值决定了收敛的快慢,特征向量决定了状态量的解耦组合,本例是战斗机航迹倾角和攻角解耦的例子,以满足战斗机追踪敌机时改变攻角进行瞄准的情形。clc;clear;close;n=5;m=2;p=5;%% Matrices of states functionA=[-1.341 0.9933 0 -0.1689 -0....原创 2020-04-21 13:44:22 · 1478 阅读 · 4 评论 -
simulink 状态空间加反馈报错
状态空间模型(可控)通过状态反馈或输出反馈可以自由配置极点和特征向量,得到理想的运动状态,通过计算得到的反馈增益矩阵K便可构建simulink模型,但常常报错,原因如下:上图展示的是simulink模型,是通过输出反馈进行设计,增益gain可以使用矩阵,但是是要点击选择的,改例中输出为列向量,增益为矩阵,因此选矩阵乘vector的类型。...原创 2020-04-18 17:57:10 · 3736 阅读 · 1 评论 -
平面限制性三体问题仿真
平面限制性三体问题指第三个天体质量远小于其他两个天体的问题,即第三个天体的质量可以忽略。比如说地月系统和人造卫星就是典型的例子。本文旨在仿真卫星在拉格朗日点受到扰动后的行为。需要说明的是地月形成的坐标系不是惯性系,卫星会受到引力、惯性力和科氏力。clc;clear;clear;%%%%%%%%%%%%%%——第二版——%%%%%%%%%%%%%上一版是比较粗略的估计算法,以地球为地月...原创 2020-04-17 16:07:50 · 1222 阅读 · 0 评论 -
地月系统拉格朗日点第二版
clc;clear;clear;%%%%%%%%%%%%%%——第二版——%%%%%%%%%%%%%上一版是比较粗略的估计算法,以地球为地月系统中心点,实际上中心点偏离地心在地球内部% 图设置figure('name','地月系统拉格朗日点位置');axis equal;grid on;hold onxlabel('x/m');ylabel('y/m');hold onax...原创 2020-04-11 13:00:39 · 3815 阅读 · 0 评论 -
状态反馈_matlab自带函数place
https://blog.csdn.net/JISANSAN/article/details/105370933中介绍了通过期望多项式计算状态反馈K的函数T2place,其实matlab自带状态反馈设计的函数place,不同的是直接用期望的极点进行计算,在不同的情形下可能需求不同,可以用不同的函数进行状态反馈设计来配置零极点。place函数的用法如下:p1=-10+10i;p2=-10-10i...原创 2020-04-07 19:18:35 · 13329 阅读 · 0 评论 -
现代控制—状态反馈极点配置函数(计算反馈增益k)
状态反馈极点配置要求系统是可控的,所以首先用ctrb函数计算得到可控判断矩阵Lc,对可控性进行判断,接着计算可控标准型转换矩阵Tinv,计算得到可控标准型对应的A阵(Astf),计算k_hat,最后计算得到反馈增益K。原理如下图: 可控标准型转换矩阵计算:反馈增益计算:function K=T2place(A,B,P)%A,B are system ...原创 2020-04-07 18:52:41 · 14260 阅读 · 2 评论 -
MPC-连续性模型离散化函数
function [Phi_Phi,Phi_F,Phi_R,A_e, B_e,C_e]=mpcgain(Ap,Bp,Cp,Nc,Np);%Nc control horizon%Np prediction horizon%program created for assignment number 2[m1,n1]=size(Cp);[n1,n_in]=size(Bp);%nl-- di...原创 2019-12-26 16:31:29 · 1037 阅读 · 0 评论 -
matlab积分饱和消除一例
clc;clear all;close all%convert transfer function to state spacesnum=conv([1 -3],[1 5]);den_temp=conv([1 0],[1 1]);den=conv(den_temp,[1 3]);[Ap,Bp,Cp,Dp]=tf2ss(num,den);%calculate gain of obser...原创 2019-12-23 20:55:20 · 701 阅读 · 0 评论