Matlab 这段代码在做什么?机器学习

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)是停止标准。当递增结果超过此停止条件时,将不会为序列生成更多项 在没

我只是在学习matlab,我有一段代码,我不理解它的语法。x是nx1向量

代码如下

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。