mat scope手动画图 S函数 plot快速复制矢量图避免AV画质

本文详细介绍了Simulink中S函数的使用,包括设置Scope的标签字号、游标测量,添加自定义模块以及S函数的编写。通过示例展示了如何创建和配置S函数,用于系统模块的添加,并解释了S函数与.m文件的关联方式。此外,还提到了Matlab中plot的高清晰度复制技巧。
摘要由CSDN通过智能技术生成

功能

scope 设置label 字号 字体 游标测量

打开隐藏选型 ---- view ---- configuration properties ---- Display(设置ylabel) ---- Time(勾选show)

  1. matlab命令行中运行以下命令,在打开的scope会显示隐藏选项,打开隐藏选项后才能设置字体大小等:

    	set(0,'ShowHiddenHandles','on');
    	set(gcf,'menubar','figure');
    

    在这里插入图片描述

  2. 显示横轴纵轴label
    在这里插入图片描述

  3. 设置字体字号,注意需要选中箭头变换操作工具哟 否则无法设置
    在这里插入图片描述

右侧游标测量

在这里插入图片描述

或者 tools — measurements — cusor measurements
在这里插入图片描述

simulink工程,添加系统模块

在这里插入图片描述

添加自定义模块,模块用S函数编写

搜索S-Function,添加拖入该模块,

在这里插入图片描述

在这里插入图片描述

查看当前工作空间的变量

在这里插入图片描述

S函数

function[sys,x0,str,ts,simStateCompliance]=sfuntmpl(t,x,u,flag)
% ============= 输入参数 ==================
% t表示当前时间,X表示状态变量,u表示输入变量,
% flag表示S函数现在应该运行哪个任务,比如flag=0,就运行初始化函数

% =============== 返回值 ==================
% sys是一个通用的返回值,在每一个子函数中都可以用它返回数值
% x0表示初始状态的值,除了flag=0以外,x0均被忽略
% str是保留变量,等mathwork公司想清楚了再说
% ts的设置,例如:
		希望S-function在每个时间步(连续采样时间)都运行,则应设置为[00];
		希望 S-function 按照其所连接块的速率来运行,则应设置为[-10];
		希望它在仿真开始的 0.1 秒后每 0.25 秒(离散采样时间)运行一次,则应设置为[0.250.1]% 可以创建一个 S-function 按照不同的速率来执行不同的任务(如:一个多速率 S-function)。
% 在这种情况下,ts 应该按照采样时间升序排列来指定 S-function 所需使用的全部采样速率。例如:
		假设% 你的 S-function 每 0.25 秒执行一个任务,同时在仿真开始的 0.1 秒后每 1 秒执行另一个任务,
		那么你% 的 S-function 应设置 ts 为[0.2501.00.1]%主函数
switch flag,
	case0,
		[sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;
		%定义S函数的基本特性,并传送给simulink
		
	case1,
		sys=mdlDerivatives(t,x,u);
		%计算连续状态量的导数,有连续状态变量时才用到
		
	case2,
		sys=mdlUpdate(t,x,u);
		%计算下一拍离散状态变量的值,只有有离散状态变量时才用到
		
	case3,
		sys=mdlOutputs(t,x,u);
		%计算输出
		
	case4,
		sys=mdlGetTimeOfNextVarHit(t,x,u);
		%计算下一次的采样时间,只有在离散采样系统中用,多用与变步长设置
		
	case9,
		sys=mdlTerminate(t,x,u);
		%一般为[],simulink仿真结束时,如果有需要设置什么,就在这里面写。
		
	otherwise
		DAStudio.error('Simulink:blocks:unhandledFlag',num2str(flag));
		%flag不是012349的话,未知的flag值
end
%主函数结束
 “模块初始化”子函数
% 返回大小、初始条件和样本
function [sys,x0,str,ts]=mdlInitializeSizes
%  调用simsizes函数,返回规范格式的sizes构架, 这条指令不要修改
sizes = simsizes;
%  模块的连续状态个数,0是默认值,可自行修改
sizes.NumContStates  = 0;
%  模块的离散状态个数,0是默认值,可自行修改
sizes.NumDiscStates  = 0;
%  模块的输出个数,0是默认值,可自行修改
sizes.NumOutputs     = 0;
%  模块的输入个数,0是默认值,可自行修改
sizes.NumInputs      = 0;
%  模块中包含的直通前向馈路个数,1是默认值,可自行修改
sizes.DirFeedthrough = 1;
%  模块中采样时间的个数,1是默认值,至少需要一个样本时间,可自行修改
sizes.NumSampleTimes = 1;

%  初始化后的构架sizes经simsizes函数处理后向sys赋值,这条指令不要修改
sys = simsizes(sizes);
%  给模块初始值变量赋值,[]是默认值,可自行修改
x0  = [];

%  系统保留变量,切勿改动,保持为空
str = [];

%  “二元对”描述采样时间及偏移量。
% [0 0]是默认值、 [0 0]适用于连续系统、[-1 0]则表示该模块采样时间继承其前的模块采样时间设置
ts  = [0 0];

% end mdlInitializeSizes

% ====================================================
% 计算导数向量
function sys=mdlDerivatives(t,x,u)

% 此处填写计算导数向量的指令, []是模块的默认值,用户必须把算得的离散状态的导数向量赋给sys
sys = [];

% end mdlDerivatives

% ====================================================
% 计算离散状态向量
function sys=mdlUpdate(t,x,u)

%  此处填写计算离散状态向量的指令, []是模块的默认值,用户必须把算得的离散状态向量赋给sys
sys = [];

% end mdlUpdate

% ====================================================
% 计算模块输出向量
function sys=mdlOutputs(t,x,u)

% 此处填写计算模块输出向量的指令, []是模块的默认值,用户必须把算得的模块输出向量赋给sys
sys = [];

% end mdlOutputs

% ====================================================
% 计算下一采样时刻
function sys=mdlGetTimeOfNextVarHit(t,x,u)
%  该子函数仅在“采样时间”情况下使用
%  sampleTime = 1 是模块默认设置,表示在当前时间1秒后再调用本模块,可自行修改
sampleTime = 1;
%  将计算得到的下一采样时刻赋给sys,切勿改动
sys = t + sampleTime;

% end mdlGetTimeOfNextVarHit

% ====================================================
function sys=mdlTerminate(t,x,u)

%  模板默认设置,一般情况不要改动
sys = [];

% end mdlTerminate

S-function怎么和.m文件建立联系

如果已经写好的.m文件,放在同一目录下,双击模块重命名xxxxxx.m文件同名即可自动关联。

plot快速复制矢量图 避免AV画质

  1. 在编辑—复制选项,中 选择保留信息
  2. 编辑—复制图层,完成清晰的矢量图到粘贴板了
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值