You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MATLAB中绘制含整数常数k的函数(k=1-3)及优化实现

更简洁的MATLAB实现方式

你的原始代码已经能实现需求,这里提供两种更简洁的写法,主要通过循环或向量化操作减少重复代码,提升后续维护性:

方法1:循环批量绘制

通过循环遍历k的取值,避免重复编写plot参数,同时可以统一管理线条样式:

f = @(x,k) 2.^(k+1) .* x.^k .* exp(-2*x) ./ factorial(k);
xs = 0:1e-2:10;
colors = {'r', 'k', 'b'}; % 对应k=1、2、3的线条颜色
k_vals = [1,2,3];

hold on; % 保持绘图窗口,批量绘制多条曲线
for i = 1:length(k_vals)
    plot(xs, f(xs, k_vals(i)), colors{i});
end
hold off;

xlabel('x'); ylabel('f(x)');
legend('k=1', 'k=2', 'k=3'); % 可选添加图例,让图像更清晰

方法2:向量化一次性计算绘制

利用MATLAB的向量化特性,将k转为列向量后一次性计算所有k对应的函数值,再批量绘制:

f = @(x,k) 2.^(k+1) .* x.^k .* exp(-2*x) ./ factorial(k);
xs = 0:1e-2:10;
k_vals = [1;2;3]; % 转为列向量,和xs的行向量做广播运算

% 一次性计算所有k对应的f(x)结果,得到行数为length(xs)、列数为3的矩阵
f_vals = f(xs, k_vals);

plot(xs, f_vals(:,1), 'r', xs, f_vals(:,2), 'k', xs, f_vals(:,3), 'b');
xlabel('x'); ylabel('f(x)');
legend('k=1', 'k=2', 'k=3');

优化细节说明

  • 将2ˆ改为2.^、/改为./,确保是逐元素运算,避免潜在的维度不匹配问题(原始代码中k为标量时结果一致,但逐元素写法更规范,适配k为向量的场景)
  • 两种写法都减少了重复代码,后续若要增加k的取值,只需修改k_vals数组即可
  • 可选添加legend能让不同k对应的曲线更易区分

内容的提问来源于stack exchange,提问作者Ibn Eratosthenes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:40:13