0、折叠所有的位置<Ctrl + ,>//<Ctrl +Shift +,>;折叠当前的位置<Ctrl +.>//<Ctrl + Shift +.>
1、比较两个结构体数据:matlab.unittest.constraints.StructComparator
2、元组{}可以同时比较多列数据:
%数组可以对比多个结果
tempflag = get(all_GotoScop_block,'Criteria');
%得到元组结果
contains(tempflag,'u2 ~= 0')
3、将For循环简化模型(使用逻辑数据类型简化if语句)
%% 简化条件
tempflag(contains(tempflag,'u2 ~= 0'))
%%简化使用for循环,与if语句连用。
Z=[1 2 3 4 5];
Z(Z>=3)
%%当需要筛选的数据不是元组时,可转换成元组如:
c = whos;
namelist = c(contains({c.class},'struct')).name;
4、get与get_param有区别。如获取path只能get命令。
5、使用模型名字作为编译接口:
mymodel([],[],[],'compile')可见我之前提供的连接
mymodel([],[],[],'term');
6?怎么使用查找多个条件并列关系。
如查找相乘模块与求和模块。
all_Switch_block = find_system(system,'FindAll','on','Blocktype',{'Product';'Sum'})
7、获取元组的并集union(),交集intersect(),补集。
unique([all_Sum_block;all_Sum2_block;all_Product_block])%得到元组的并集。;
8、连接元组a={'a','n'};B={'c','f'};d=[a,B];即可
9、直接比较元组内容:
% 比较一个元组内容时:
example = {'ABC','ABC'};
contains(example{:})
% 比较多个对多个内容
example_1 = {'ABC','BCD'};
contains(example_1 ,{AB,AS})
10、在statefolw里面批量修改同名称变量:在symbol面板里修改变量名字,再按Shift + Enter即可批量修改变量。Ctrl+Shift+A自动排列对齐文本。
11、sort函数与sortrows函数区别;
sortrows函数可以排序元组,矩阵,但是sort智能排序矩阵。
12、find可以与逻辑进行联用可以效率很好详见我的:《批量Simulink删除sldd没有使用的变量与查看顶层模型属性》。
13、符号运算
13. 1Poly([-1 2 3])可以得到(x+1)*(x-2)*(x-3)的多项式展开式;
13.2当要是用变量可使用:
Sym a;
sym b;
%想得到符号展开式(a+b)*(a-1):
Expand((a+b)*(a-1))
13.3 如果想得到符号表达式的根:
factor(a*b - b - a + a^2)
13.4 Root:
13.5、solve求解表达式
syms a b c x
eqn = a*x^2 + b*x + c == 0
S = solve(eqn)
Sa = solve(eqn,a)
14、找出重复值,利用统计计数方法
% 创建一个包含相同数据的列向量
data = [2; 5; 1; 3; 2; 5; 1; 2; 3; 1];
% 使用 unique 函数获取唯一值和对应的索引
[uniqueValues, ~, index] = unique(data);
% 统计每个唯一值的出现次数
counts = histcounts(index, numel(uniqueValues));
% 输出结果
disp('唯一值:');
disp(uniqueValues');
disp('出现次数:');
disp(counts')
unquestion=uniqueValues(counts>1);
15、matlab 列出struct中所有的fields----fieldnamea与将结构体内容提取成元组形式。
% 如获取模型的配置选项
configSet = getActiveConfigSet(bdroot);
%获取模型的Components项
configParams = get(configSet).Components;
% % 获取Component名称
% % configParamsNames = configSet.getComponent
% 得到结构体
configlist = get(configParams(1));
% 将结构体的字段提取出来
StructFiel_value = fieldnames(configlist);
% 将结构体字段值提取出来。
StructFiel_value(:,2)=struct2cell(configlist);
StructFiel_value
16、判断文件是否选择,没有并停止代码
[fileNames, pathName] = uigetfile('*.txt', '选择文本文件', 'MultiSelect', 'on');
% 检查是否有文件被选中
if isequal(fileNames,0) || isequal(pathName,0)
disp('用户取消选择。');
return;
else
disp(['用户选择了 ', num2str(length(fileNames)), ' 个文件。']);
end
17、绘制双y轴图形
MATLAB 根据X、Y坐标绘制折线图,增加右侧纵轴刻度且不用plotyy_matlab纵轴增加刻度-CSDN博客
Matlab 绘制双纵轴图_matlab两个纵轴-CSDN博客
18、将元组进行,空值或者没有数据的元组。
%% 先进性去清除空值操作得到一行的元组
result(cellfun (@isempty,result))= [];
%% 再对元组进行分列划行
b = reshape(result,[],2);
19、两个命令的区别,在函数内,和没在函数内的区别。
eval(['invalue =',linname{ii},'.InitialValue;']);
invalue =get(evalin("base",linname{ii}),'InitialValue');
20、将参数传到函数内的两种特殊方法,
第一种:
evalin('base','save tempvar.mat varlists')
evalin('base','varlists = strjoin(varlist,'' '')')
evalin('base','save tempvar.mat varlists')
load('tempvar.mat');
第二种:
var = evalin('base','whos;');
21、setdiff(varflist,extractedStrings)这个能用元组类型么???
22、slbuild(Model)与GenerateCode(Model)区别是什么。system这个可以使用脚本运行并不报出文件移动错误;GenerateCode这个会。
23、matlab:直接连接到模块的代码
open_and_hilite_hyperlink ('TRCC/TRCChecue_sys/Subsystem/dCoI_RedM/Delay','error')
stateflow连接
sfprivate('sfOpenObjectBySId','ModelName:683')
sfprivate('sfOpenObjectBySId','ModelName:737:::15')
谁知道这个737还有 ":"是什么意思?
答:是Simulink模块名字的ID可通过
openExample('simulink_general/VanDerPolOscillatorExample')
SID = Simulink.ID.getSID('vdp/x1')%可以获取char的sid再获取具体信号sid进行显示
config直接连接:
modeladvisorprivate openCSAndHighlight <ModelName> MatFileLogging
24、which pathdef.m -all %可查看所有搜索路径下的pathdef.m文件位置
C:\Program Files\MATLAB\R2022b\toolbox\local\pathdef.m
addpath("c:\matlab\MyFolder")
rmpath("c:\matlab\MyFolder")
%默认情况下,pathdef.m 位于 matlabroot/toolbox/local 中,可通过matlabroot命令查看
25、Matlab调用dos命令和Python命令操作。
dos('cmd.exe')直接调用;将显示结果显示在Matlab中,
26、获取inputparemeter对象属性值,
int_round_mode_obj = Simulink.ModelAdvisor.getModelAdvisor(system); % 获取模型对象
a = int_round_mode_obj.getInputParameters()
a{1}.Value
获取检查结果的句柄
function result = ActionCB(taskObj)
mdladvObj = taskObj.MAObj;
checkObj = taskObj.Check;
resultDetailObjs = checkObj.ResultDetails;
for i=1:numel(resultDetailObjs)
% take some action for each of them
block=Simulink.ID.getHandle(resultDetailObjs(i).Data);
set_param(block,'NamePlacement','normal');
end
27、使用uifigure()应该先试用uipanel先进行划分,才能使用subplot(),需要设置属性p2.AutoResizeChildren = 'off';
fig = uifigure('Name','Run logic Oil_Temp - Plots - Ingersoll','Position',[1 100 1280 900]);
p1 = uipanel(fig,'Position',[15 10 600 410]);
ax = uiaxes(p1,'Position',[10 10 550 390]);
p2 = uipanel(fig,'Position',[15 450 600 410]);
bx = uiaxes(p2,'Position',[10 10 550 390]);
fig.Color = '#D2E1F0';
ax.XGrid = 'on';
ax.YGrid = 'on';
ax.Title.String = 't1 & t2';
plot(ax, [0:10], [0:10].^2); % <<< made up data to plot; replace with your original plot call
p2.AutoResizeChildren = 'off';
bx1 = subplot(2, 1, 1, 'Parent', p2); % <<< restored this; you need it
plot(bx1, [0:100], [0:100].^3); % <<< made up data to plot; replace with your original plot call
bx2 = subplot(2, 1, 2, 'Parent', p2);
plot(bx2, [0:0.01:4*pi], sin([0:0.01:4*pi])); % <<< made up data to plot; replace with your original plot call
28、找出元组相同的元素代码;找出唯一的unqiue;
%%dump是包含相同的元组
[C, ia, ic] = unique(dump,'sorted');
modeLS(setdiff(ic,ia))
29、simulink快速查找可变子系统模块
variMod = find_system(Modename,'BlockType','SubSystem','Name','Variant Subsystem');
30、simulink模型为什么编译和指定的数据类型不一致
Ctrl+D不等价模型编译。
可使用portdaty = get_param(porttype,'OutDataTypeStr')该语句来获取信息;
不使用:get_param(porttype,'DataType')
endstop模型发现该问题。
31、Dir(文件名)当文件打开是找不到的。exit判断可使用。
32、strcmp(A,B)对比A,B相同则返回true,补充Contains()不足,都可进行元组数据,得到逻辑数组;isequal()太绝对,必须是相同字符串,相同元素才行。
33、set_param(1,2,3);2中如果是结构体中的结构可以使用
dlgParamsStruct = get_param(tempBlock,'DialogParameters');
dlgParams = fieldnames(dlgParamsStruct)
set_param(tempBlock,dlgParams{j},newParamName)
34、str.empty(0,1);cell.empty();arguments参数可以检查函数输入,输出的数据结构。
35、函数的输入、输出参数变量:varargin可变输入参数;varargout可变输出参数;nargin输入可变个数,vargout输出参数可变个数。
36、properties(obj)查看对象有哪些属性;methods(obj)查看对象有哪些方法;
37,isa('var','type');判断是不是指定类型。