如何写匿名函数变量系数的传热问题
4视图(30天)
显示旧的评论
我工作在一个二维热模型3板组成。两人不断的热导率,但第三的电导率对温度的依赖关系。
相关代码:
crackT = 900;
ν= 10;
kFunc = @(地区、州)k + (k * (Nu-1) * (state.u < crackT));
thermalProperties (thermalModel“脸”,1“ThermalConductivity”k *ν,“MassDensity”,2500,“SpecificHeat”,1000);
thermalProperties (thermalModel“脸”3,“ThermalConductivity”kFunc,“MassDensity”,2500,“SpecificHeat”,1000);
thermalProperties (thermalModel“脸”2,“ThermalConductivity”、钾、“MassDensity”,2500,“SpecificHeat”,1000);
这段代码运行,但似乎地区3 k是修改的,而不是根据该地区的温度变化。
我坦白说不理解匿名函数是如何工作的——具体地说,什么“地区”、“位置”和“状态”@建筑,也不知道常见的错误
函数指定材料属性必须接受2输入参数和输出参数返回1
的意思。
如果任何人都可以解释如何使这项工作我会很感激。
0评论
答案(2)
马特·J
2020年1月3日
编辑:马特·J
2020年1月3日
作为一个简单的例子,考虑如下
> > c = 3;
> > kfunc = @ (a, b) * c;
@ (a, b)说,右边的表达式将作为一个函数与输入参数a和b在其他表达式(特别是c)将被视为一个常数。常数变量的值将从他们的价值观在工作区中
kfunc
定义。因此,例如,
> > kfunc (2、4)% 2 * 4 - 3 = 5
ans =
5
不过,重要的是要理解
kfunc
不知道你以后做任何更改不变的东西。因此,例如,这并不在不同的输出结果:
> > c = 5;kfunc (2、4)
ans =
5
如果我想要
kfunc
需要注意的新价值
c
,我必须重建:
> > c = 5;kfunc = @ (a, b) * c;
> > kfunc (2、4)% 2 * 4 - 5 = 3
ans =
3
考虑到这一点,应该明确,你的函数的输出,
kFunc = @(地区、州)k + (k * (Nu-1) * (state.u < crackT));
只能随输入参数“状态”。“地区”输入变量定义expresssion没有出现
k + (k * (Nu-1) * (state.u < crackT))
和其他所有的表达式从的角度来看是一个常数
kFunc
。
MandarinLu
2020年10月27日
其实我最近会见了类似的问题。我读了两个贡献。尽管我喜欢分享一个案例我找到答案,并希望有更多的见解可以共享这一主题。
生成的网格节点的索引和correpsonding坐标(x, y, z) mesh.Nodes中可以找到。
然而参数如位置、国家或地区的脂肪酸的处理有不同数量的“节点”(我想这应该是)网。节点但彼此接近。我发现当我调试代码,移动鼠标位置。x或状态。你举个例子。不幸我不知道工具箱位置和大小的设置状态。
我希望有人可以分享更多的意见。