如何在Matlab中绘制y=mx+b的图形?

4
我想知道是否有可能在Matlab中绘制形如y = mx+b的直线?我使用polyfit得到了一个包含斜率和截距的1x2数组。
以下是我的代码:
lineFit = polyfit(tauBin, a5array, 1);
plot((lineFit(1)*x + lineFit(2)))

我该如何绘制这个图表?

你是在询问如何将实验/观测数据拟合成一条线,还是如何绘制一个值数组? - Marm0t
2个回答

16

有两种方法可以立即想到。第一种方法是使用FPLOT

>> m = 2; b = 1;
>> fplot(@(x)m*x+b, [0 10]);

第二种方法是在调用PLOT命令时直接计算y值:

>> m = 2; b = 1; x = 1:10;
>> plot(x, m*x+b);

非常感谢b3!最终我使用了这个,它像魔法一样起作用:figure plot(tauBin, a5array, '.-r') hold on xLimMin = min(tauBin)-10; xLimMax = max(tauBin)+10; xlim([xLimMin xLimMax]) xRange = xLimMin:xLimMax lineFit = polyfit(tauBin, a5array, 1); lineFitx = a5array(1:length(a5array)); plot(xRange, lineFit(1)*xRange+lineFit(2), '-b'); - Alex Nichols
1
@Alex Nichols - 很高兴能帮忙。如果你还没有,你可能想要了解一下匿名函数(就像上面fplot示例中使用的那个)。它们随处可见,应该是你工具箱中的一个工具。 - b3.
出于优化和避免xLimMax-xLimMin < 1的问题,您应该设置xRange = [xLimMin,xLimMax] - matheburg

4

在统计工具箱中有一个REFLINE函数,对于您的任务来说可能是最简单的:

refline(m,b)

或者,如果您想更改行属性:

hr = refline(m,b);
set(hr,'Color','r')

它使用当前坐标轴的限制。因此,如果您稍后更改了限制,最好删除它(delete(hr))并重新绘制。


我希望refline能够接受输入来修改线条属性,比如颜色。但很遗憾,它不能这样做。 - Sam
@Sam,你可以很容易地将此功能添加到refline函数中。复制一份,将名称更改为myrefline。将定义更改为function h = myrefline(slope,intercept,varargin)。然后在主体中添加set(hh,varargin {:});。这应该可以正常工作:myrefline(1,0,'Color','b','LineStyle',':') - yuk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接