Matlab 这段代码在做什么?机器学习
我只是在学习matlab,我有一段代码,我不理解它的语法。x是nx1向量 代码如下Matlab 这段代码在做什么?机器学习,matlab,Matlab,我只是在学习matlab,我有一段代码,我不理解它的语法。x是nx1向量 代码如下 p = (min(x):(max(x)/300):max(x))'; 几行之后,p向量用于绘制函数 plot(p,pp*model,'r'); 它生成一个 算术级数是一个数字序列,其中下一个数字等于上一个数字加上一个常数。在算术级数中,该常数必须保持相同的值 在代码中 min(x)是序列的初始值 max(x)/300是增量 max(x)是停止标准。当递增结果超过此停止条件时,将不会为序列生成更多项 在没
p = (min(x):(max(x)/300):max(x))';
几行之后,p向量用于绘制函数
plot(p,pp*model,'r');
它生成一个
算术级数是一个数字序列,其中下一个数字等于上一个数字加上一个常数。在算术级数中,该常数必须保持相同的值
在代码中
是序列的初始值min(x)
是增量max(x)/300
是停止标准。当递增结果超过此停止条件时,将不会为序列生成更多项max(x)
然而,从一个天真的角度来看,MATLAB有一个类似但不完全相同的数组。此代码检查名为
x
的数组,并找到其最小值min(x)
和最大值max(x)
。它取最大值并除以常数300
它没有显式地命名任何变量,将其设置为max(x)/300
,但为了解释起见,我将其命名为“incr”,是增量的缩写
并且,它创建了一个名为p
的向量p
看起来像这样:
p = [min(x), min(x) + incr, min(x) + 2*incr, ..., min(x) + 299*incr, max(x)];
在我看来,这的确是件奇怪的事情。基本上,它创建了一个值向量
p
,范围从x
的最小值到最大值,这很好,但它在max(x)/300的连续值之间使用步长
如果min(x)=300
和max(x)=300.5
,则p
仅得1分
另一方面,如果min(x)=-1000
和max(x)=0.3
,则p
将有数千个元素
事实上,情况更糟。如果max(x)
为负数,那么您将得到一个错误,因为p
将从min(x)
开始,在max(x)
下面有一些负数,然后每个元素将比最后一个元素小
我认为必须使用p
来创建pp
或模型
,以使绘图工作正常,但我不知道如何建议如何修复此问题,但我想不出这样做的好理由。使用linspace(min(x),max(x),300)
或将步长设置为(max(x)-min(x))/299对我来说更有意义。p
决不能保证有300个元素,因为max(x)/300
可能大于max(x)-min(x)
。如果增量是(max(x)-min(x))/300
,那么您将获得301个元素。是的,我认为编写代码的人可能打算使用linspace,但不知道linspace。然后继续假设min(x)=0。