You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在MATLAB同一绘图中为两个函数设置不同起始横坐标

解决方法:将函数结果偏移到指定横坐标范围绘图

当然可以实现这个需求!你的问题核心在于对fplot的参数逻辑理解有点偏差:fplot的第二个参数是让函数计算的x值范围,而不是你想要的“绘图位置偏移”。要把func2在x=010的结果画在x=1020的位置,只需要让func2接收的输入是绘图x值减去偏移量即可。

方法一:直接修改fplot的匿名函数

这是最简洁的方式,直接在匿名函数里调整传入func2的参数:

fplot(@(x) func1, [0 10])
hold on
% 当绘图x从10到20时,给func2传入x-10(即0到10的原输入)
fplot(@(x) func2(x - 10), [10 20])
grid on
hold off % 可选:关闭hold状态,避免影响后续绘图

这样设置后,fplot会遍历1020的x轴坐标,但实际传给`func2`的是`x-10`,也就是原需求中010的输入值,最终func2的结果就会被绘制在10~20的横坐标区域里。

方法二:先计算数值再绘图(更直观可控)

如果你需要更灵活地控制采样点数量或精度,可以先手动生成数据,再用plot函数绘制:

% 生成func1的绘图数据
x1 = linspace(0, 10, 100); % 100个0~10的采样点
y1 = func1(x1);

% 生成func2的绘图数据(偏移后)
x2_plot = linspace(10, 20, 100); % 绘图的横坐标范围10~20
x2_input = x2_plot - 10; % func2实际接收的输入是0~10
y2 = func2(x2_input);

% 绘制两个函数
plot(x1, y1, x2_plot, y2)
grid on

这种方式的优势是你可以完全掌控数据的生成逻辑,适合需要自定义采样密度、添加图例或其他精细化设置的场景。

内容的提问来源于stack exchange,提问作者Roger Cloud

火山引擎 最新活动