如何在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




