打开matlab时,可以看到工作区中的变量。模型也可以使用工作区的变量。其实,模型也有其自身的工作区,即Modal Workspace。
一,问题现象
先来看一下自带的demo: sldemo_househeat
临摹时,就算把所有模型直接拷贝到新的空白工程中(Ctrl+A, Ctrl+C, Ctrl+V),仿真时也会报错。
二,原因分析
原因是,在gain模块中配置的参数为cost变量,而该变量没有定义。
三,解决措施
经过仔细查看并对比两个模型,在Model Explorer中发现,两者的Model Workspace不一样:
自带demo的workspace中有变量:
临摹的demo中是空白的:
那么 ,这些变量是从哪里来的呢?
是callback回调函数中设置的吗?在模型的callback中没有找到任何配置。
原来,是在右侧的workspace data里面配置的脚本里面定义的。
那么,问题又来了,这个脚本文件在哪里呢?
在simdemo的文件夹里面。
这个文件里面有些什么内容呢?打开看看:
里面的内容为(节选):
% Air flow rate Mdot = 1 kg/sec = 3600 kg/hr
Mdot = 3600; % hour is the time unit
% Density of air at sea level = 1.2250 kg/m^3
densAir = 1.2250;
M = (lenHouse*widHouse*htHouse+tan(pitRoof)*widHouse*lenHouse)*densAir;
% cost = $0.09 per 3.6e6 J
cost = 0.09/3.6e6;
% TinIC = initial indoor temperature = 20 deg C
TinIC = 20;
确实定义了模型所需要的变量。