(笔记)MATLAB命令记录

1. 导入数据

  • importdata:可以将txt文件导入,导入头部的中文字符和后续数据,遇到后续中文字符停止。好处:读- 入之后是结构体,导入*.mat文件也是结构体,可以有效防止多个mat文件相同命名的问题;
  • uigetfile: 通过资源管理器窗口选择导入的文件,返回文件名和文件路径;
  • uiimport:打开导入数据Tool,和导入数据按钮功能一致;

2. 画图

  • 设置坐标轴字体大小,如果只有一个图使用set(gca,'FontSize',20),gca 表示当前坐标轴。如果是画了很多图或者使用了subplot怎么办呢?
f1=figure(1);
f2=figure(2);
set(f1.Children,'FontSize',20); %Children是f1(或者说句柄自带的属性),里边包含了该Figure下的所有坐标轴
set(f2.Children,'FontSize',20);
// subplot
f3 = figure(3);
subplot(2,1,1);
subplot(2,1,2);
set(f3.Children(1),'FontSize',20);
set(f3.Children(2),'FontSize',20);

//还可以
figure(3)//切换到需要操作的figure
a = subplot(2,1,2)//切换到需要操作的子图
//使用set或者 a.属性 = 值,进行更改

3. 公式推导/带字母计算

// 分为两种,一种是普通数学公式的推导,另一种是传递函数的推导
// 1. 普通数学公式的推导
syms a
expression = 1/((1+a)*(2+a)) // 生成的是一般公式
expand(expression ) // 多项式展开

// 2. 传递函数的推导,用于控制系统设计
s = tf('s')
transferFunction = 1 / ((1+s)*(2+s)) // 生成的是传递函数

在这里插入图片描述

4 . 求解李雅普诺夫方程( Lyapunov equation )、 黎卡提方程(Riccati Equation)、LQR增益)

//
X = lyap(A,Q)
//
[P,l,g] = care(A, B, Q, R)
//
[K,S,e] = lqry(sys,Q,R,N)  //LQRY(输出调节器)目标函数是f(y,u)
[K,S,e] = lqr(SYS,Q,R,N)  //LQR,目标函数是f(x,u)
reg = lqg(sys,QXU,QWV) //LQG,线性二次高斯调节器,目标函数是E(f(x,u))

 

5. 可观性和可控性

sys = ss(A,B,C,D); 
co = ctrb(sys); rank(co);
ob = obsv(sys);rank(ob);

6. 使用MATLAB神经网络工具箱

% Algorithm Studio

%初始化网络
numInputs = 1;
numLayers = 3;
biasConnect = [1;1;1];
inputConnect = [1;0;0];
layerConnect = [0 0 0; 1 0 0;0 1 0];
outputConnect =  [0 0 1];

net = network(numInputs,numLayers,biasConnect,inputConnect,layerConnect,outputConnect);
% net.inputs{1}.range = [-1 1];

net.inputs{1}.name = '误差';
% net.layers{1}.dimensions=3;
net.layers{1}.size = 1;
net.layers{1}.name = '输入层';
% net.outputs{1}.feedbackMode = 'open';
% net.layers{2}.dimensions=9;

net.layers{2}.size = 3;
net.layers{2}.name = '隐藏层';
% net.outputs{2}.feedbackMode = 'open';
% net.layers{3}.dimensions=1;
net.layers{3}.size = 1;
net.layers{3}.name = '输出层';
% net.outputs{3}.feedbackMode = 'open';

 net.inputWeights{1,1}.learnFcn = 'learngdm';
 net.layerWeights{2,1}.learnFcn = 'learngdm';
net.layers{1}.transferFcn = 'tansig';
net.layers{2}.transferFcn = 'tansig';
net.layers{3}.transferFcn = 'tansig';


for i = 1:3
     net.layers{i}.initFcn = 'initnw';
end
 net.inputs{1}.processFcns = {'removeconstantrows','mapminmax'};
net.outputs{3}.processFcns = {'removeconstantrows','mapminmax'};
net.performFcn = 'mse';
net.dividefcn = 'dividerand';
net.adaptFcn = 'adaptwb';
net.trainFcn =  'trainlm';
net = init(net);

% view(net)
x = 1:1000;
% x = x/57.3;
y =x;
net =  train(net,x,y);

% 仿真
p = [4.5,100.5,555.5,777.1,999.4];
out = sim(net,p);
figure('Name','AS.CK:模型验证','NumberTitle','off');
plot(p,out,'*')
hold on 
plot(x,y)
legend('模型预测值','采样实际值')
grid on
grid minor

在这里插入图片描述

7.显示程序运行进度

1.
waitbar  // 具体可以help waitbar
2.
clc;disp(['scan ', num2str(scanIdx),'(',num2str(scanIdx/N*100),'%)']);

在这里插入图片描述

8. 基本语法

// 循环
for i=[1 2 3]
    disp(i)
end

//关于循环嵌套, 由于循环嵌套看起来麻烦,所以想做一个简写的方法
// 例如
//for i=1:5
//	for k=1:5
//	disp([i,k])
//	end
//end			
//可以写成
for ii=0:5*5-1
	i = fix((ii)/5)+ 1;k = mod(l,5)+1;
	disp([i,k])
end

//符号替换,G = f(s), 下式就是计算f(-4)
subs(G,s,-4)

9. S-Function

//maltab s-function
edit sfuntmpl // 打开后,copy这个模板进行修改
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值