在MATLAB的统计计算数据中,最基本的数据函数之一是linspace。linspace是MATLAB的基础函数之一,常用于创建元素个数固定的等差数列。这个命令还可创建向量或矩阵数据。这个函数的特别之处是它会接受三个参数,可以生成特定长度的向量,而上限和下限必须是固定的。
linspace函数的定义格式为:linspace(x1,x2,n)。
其中,x1是指生成行向量或列向量的初始值,x2是指生成行向量或列向量的终止值,n是指向量元素数目。
当我们需要创建等间距向量的时候,可以使用linspace函数来生成一定数量的数列。下面是一个生成长度为10的从1到5的等差数列的例子:
linspace(1,5,10)
这个命令会生成包含10个值的向量,在数值范围在1和5之间等间隔排列。这个等差数列的值将介于1和5之间,每个间隔将是相等的。
当使用linspace函数生成行向量时,用户可以使用分号来分开数据。这里有一些创建行向量的例子:
x = linspace(0,2*pi,100);%生成一个包括100个元素的行向量x
y = sin(x)
在这个例子中,使用了linspace函数来创建了一个从0到2pi的等差数列。生成的行向量x包含了100个数值。该行向量随后被当做另一个函数的输入,该函数对每个x值求sin()值。随机输入上限和下限后,Linspace()可以生成向量。
在MATLAB中,Linspace()函数的所有参数均要求是标量或标量数组。要确保获得与预期相同的结果,有时候需要注意要在数字后面加上“.”。具体解释如下:
由于MATLAB默认数字是双精度定点数,如果Linspace()函数的输入参数为单精度定点数(即其值后面不带“.”),在某些情况下程序可能会产生纯噪声的结果。我们举个例子:假设我们有两个数组:
{{1,2,3},{1.00001,2,2.99999}},那么在linspace函数中输入{1,3,3}时,最终得到的向量为(1,2,3),但是输入{1.00001,3,3}时,最终得到的向量为(1,2.5,3)。
Linspace()函数有一些技巧,能够帮助用户快速创建简单等差数列。下面列举几个实用的技巧:
1. 如果想要在linspace函数中创建单位间隔的等差数列,则可以使用1/n作为第三个输入参数(n是需要的点数)。例如,要求得一个从1到10的等差数列,其中连续3个数的差均为1,则可以运行以下命令:
x = linspace(1,10,30)
这个命令会生成一个包含30个数值的向量。在这个向量中,任意连续三个值x、y和z都满足y-x = z-y = 0.3333。
2. 如果想要在linspace函数中创建以10的负幂级数为下标的等差数列,可以使用 10.^\(-k)作为第三个输入参数:
k = 1:0.5:5;
thk = 10.^(-k);
x = linspace(0,1,100);
y = zeros(length(thk),length(x));
y = cos(2*pi*y'*x + thk'*ones(1,length(x)) );
在这个示例中,函数生成了一个长度介于1至5之间的值的向量k。它还使用了这个向量来生成一个包括10个从0到1的值的等差数列(即:x = linspace(0,1,10))。使用这个等差数列和求cos()来生成一个矩阵y。求角度时用到了每个行的行号以及每个列的列号。
y = cos(2*pi*y'*x + thk'*ones(1,length(x)) ),其中矩阵的各行被按次序交错混合,与theta按此序针合。