MATLAB plot函数未绘制点且弹出多幅图像的问题排查
问题原因及修正方案
弹出8幅图像的原因
figure命令被放在for循环内部,每次循环都会新建一个独立图窗,8次循环自然生成8个窗口。要在单幅图像上绘制所有点,需将figure和hold on移到循环外部,确保所有绘图操作都在同一个图窗中进行。
无点显示的原因及解决
- 单个点无法默认绘制:
plot(x,y)默认绘制线段,单个数值点无法形成线段,因此看不到图形。需指定点标记样式(如'o'、'*'等)来显示单个点。 - 符号变量未显式声明:代码中未提前定义
nh为符号变量,虽然MATLAB可能自动识别,但显式添加syms nh能避免潜在错误,保证solve函数正常运行。 - 数值类型兼容性问题:
vpa返回的是可变精度符号值,直接传入plot可能存在兼容问题,建议转换为普通数值类型(double)。
修正后的代码
syms nh Klnvalue = [-1.516 -0.609 0.202 0.934 2.486 3.725 4.743 5.590]; temp = [3400 3600 3800 4000 4500 5000 5500 6000]; figure hold on for i = 1:8 eqn = ((nh^2)/(1-nh))*68.045964 == exp(Klnvalue(i)); sol = solve(eqn, nh); y = double(max(vpa(sol))); x = temp(i); plot(x, y, 'o') end hold off xlabel('温度') ylabel('计算值') title('温度与计算值的关系')
内容的提问来源于stack exchange,提问作者Faito Dayo
相关产品推荐
相关产品推荐

