clear clc syms t u(t) v(t) z R1 = 1.2e-3; R2 = 9.2e-3; Cin = 1.1e6/60; Cwall = 1.86e8/60; PN = 8000; qin = 20; qout = 0; u1 = diff(u); v1 = diff(v); eq1 = Cin*u1 == PN - (u - v)/R1; eq0 = Cin*u1 == 0 - (u - v)/R1; eq2 = Cwall*v1 == (u - v)/R1 - (v - qout)/R2; eq3 = u(0) == 20; eq4 = v(0) == z; [uSol1(t), vSol1(t)] = dsolve(eq1, eq2, eq3, eq4); [uSol2(t), vSol2(t)] = dsolve(eq0, eq2, eq3, eq4); uSol1_func = matlabFunction(uSol1); vSol1_func = matlabFunction(vSol1); uSol2_func = matlabFunction(uSol2); vSol2_func = matlabFunction(vSol2); figure(1) subplot(1, 2, 1), fplot3(uSol1_func, [0 1440], [0 30]); title('开启时室内温度'); xlabel('时间'), ylabel('z轴'), zlabel('温度') subplot(1, 2, 2), fplot3(vSol1_func, [0 1440], [0 30]); title('开启时墙体温度'); xlabel('时间'), ylabel('z轴'), zlabel('温度') figure(2) subplot(1, 2, 1), fplot3(uSol2_func, [0 1440], [0 30]); title('关闭时室内温度'); xlabel('时间'), ylabel('z轴'), zlabel('温度') subplot(1, 2, 2), fplot3(vSol2_func, [0 1440], [0 30]); title('关闭时墙体温度'); xlabel('时间'), ylabel('z轴'), zlabel('温度')错误使用 fplot3 输入 应为以下类型之一: function_handle, sym 但其类型为 double。 出错 first (第 27 行) subplot(1, 2, 1), fplot3(uSol1_func, [0 1440], [0 30]);
时间: 2024-01-26 07:01:46 浏览: 79
实验室管理系统 微信小程序+SSM毕业设计 源码+数据库+论文+启动教程.zip
根据您提供的代码和错误信息,我猜测问题出在第 27 行,即第一个 fplot3 函数调用上。
您之前所做的修改已经解决了上一个问题,但是这个错误提示似乎表明 fplot3 函数的输入参数类型错误。可能是因为 uSol1_func 函数句柄中的符号表达式包含了 t 变量,但是在 fplot3 函数中没有给出 t 的范围,导致 fplot3 函数无法将函数句柄转换成函数值。
为了解决这个问题,您可以在调用 fplot3 函数时,将 t 变量的范围一并指定,例如:
```matlab
subplot(1, 2, 1), fplot3(@(t,z) uSol1_func(t,z), [0 1440], [0 30]);
```
这样,fplot3 函数就可以正确地将函数句柄 uSol1_func 转换成函数值,并绘制出图像。同样地,对于另外三个 fplot3 函数的调用也需要进行相应的修改。
阅读全文