我只是在学习matlab,而且我有一段代码,我不明白它的语法。 x是n x 1向量。
代码低于
p = (min(x):(max(x)/300):max(x))';
稍后使用p向量来绘制函数
plot(p,pp*model,'r');
答案 0 :(得分:1)
算术级数是一系列数字,其中下一个数字等于前一个数字加上一个常数。在算术级数中,此常数必须保持相同的值。
在您的代码中,
min(x)
是序列的初始值max(x) / 300
是增量max(x)
是停止标准。当增量结果超过此停止标准时,不再为该序列生成项目。我无法评论这个特定的初始值和增量的选择,而不会看到使用它的周围代码。
然而,从一个天真的角度来看,MATLAB有linspace
command做了类似的事情,但不完全相同。
答案 1 :(得分:1)
当然看起来像是一件奇怪的事情。基本上,它创建了一个值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
或model
,以便情节有效,并且不知道我怎么不建议如何解决这个问题,但是我想不出有这么好的理由。使用linspace(min(x),max(x),300)
或将步骤设置为(max(x)-min(x))/299
对我来说会更有意义。
答案 2 :(得分:0)
此代码检查名为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)];