MATLAB 2015a绘图求助:代码无法正常显示图形
MATLAB绘图不显示问题解决
问题根源
你代码里先定义了符号变量t,之后又给t赋值数值数组,导致symsum无法正确处理数值数组,最终生成的y是符号表达式而非数值数组,plot函数无法直接绘制符号对象。
修正后的代码
clear all; close all; syms k I_0=1; mu=1.5; lambda=0.3; gamma=0.1; t=0:1:20; % 用独立符号变量s定义表达式,避免与数值t冲突 syms s y_sym = I_0*symsum((-lambda*s^(mu))^k/(2^((k*(k-1)*mu)/2)*factorial(k*mu)),k,0,Inf) + ... gamma*symsum(((-lambda)^(k-1)*(s^(k*mu)))/(2^((k*(k-1)*mu)/2)*factorial(k*mu)),k,1,Inf); % 把符号表达式转成可计算数值的匿名函数 y_fun = matlabFunction(y_sym); % 遍历t数组计算每个点的y值 y = arrayfun(y_fun, t); plot(t,y,'-+'); grid on xlabel('time t'); ylabel('I(t)');
关键修改说明
- 拆分符号变量与数值变量:用
s作为符号变量定义求和表达式,避免和数值数组t重名导致的冲突 - 符号转数值:通过
matlabFunction将符号表达式转为可计算的函数,再用arrayfun逐个计算t中每个元素对应的y值,得到plot能识别的数值数组
内容的提问来源于stack exchange,提问作者Ola
相关产品推荐
相关产品推荐

