MATLAB实现支持自定义线宽参数的cos(x)三子图绘制函数
MATLAB多子图cos曲线绘制函数修正
你现有代码的参数分支逻辑框架是对的,线宽始终取默认值的核心原因是缺少输入参数合法性校验,同时存在格式化显示不匹配、代码冗余的问题,以下是修正后的可直接运行版本:
function plotCos(varargin) % 基础默认线宽 base_lw = [1,2,3]; % 输入参数判断分支 if nargin == 0 lw_list = base_lw; elseif nargin == 1 % 校验输入参数必须是正数值 mult = varargin{1}; if ~isnumeric(mult) || mult <=0 error('传入的线宽乘数必须是正数值'); end lw_list = base_lw .* mult; else error('函数最多支持传入1个线宽乘数参数'); end % 生成绘图数据 x = -pi:0.1:pi; y = cos(x); % 创建窗口 fig = figure('Name','cos(x)曲线绘制(-π到π)','Position',[100,100,900,300],'Visible','on'); % 循环生成3个横向子图,避免重复代码 for idx = 1:3 ax = subplot(1,3,idx,'Parent',fig); % 绘制黑色星号标记,线宽控制星号大小 plot(ax, x, y, 'k*', 'LineWidth', lw_list(idx)); % 设置子图属性 title(ax, sprintf('线宽:%.1f', lw_list(idx))); xlabel(ax, 'x'); ylabel(ax, 'cos(x)'); xlim(ax, [-pi, pi]); ylim(ax, [-1.1, 1.1]); xticks(ax, -pi:pi/2:pi); xticklabels(ax, {'-π','-π/2','0','π/2','π'}); yticks(ax, -1:0.5:1); grid(ax, 'on'); end % 刷新绘图、保存结果 drawnow; saveas(fig, 'cos_plot_result.png'); end
调用方法说明
- 无参数调用:命令行输入
plotCos(),三幅子图线宽依次为1、2、3 - 传入乘数调用:命令行输入
plotCos(乘数),例如plotCos(3)时三幅子图线宽依次为3、6、9;支持传入小数乘数,例如plotCos(0.5)时线宽依次为0.5、1、1.5,标题会同步显示实际使用的线宽数值。
注:如果传入非正数值、或者传入超过1个参数,函数会直接抛出明确的错误提示,避免静默运行得到不符合预期的结果。
内容的提问来源于stack exchange,提问作者Ralph Cajipe
相关产品推荐
相关产品推荐

