MATLAB中序列的统计扩展

MATLAB中序列的统计扩展,matlab,scripting,Matlab,Scripting,MATLAB中是否有任何内置函数可以从统计上扩展实数序列,从而将生成的序列扩展到我想要的任何大小。我有一个499个元素的序列,我想把它扩展到4096个元素。提前谢谢。我不太理解问题中的“统计”一词,但从你的评论来看,你似乎只需要线性(或平滑)插值。 尝试使用或。如果要将499个元素的向量插值到4096个元素的更高分辨率,可以按以下方式使用该函数(其中x是499个元素向量): 上述函数用于生成在1和499之间线性间隔的值的4096个元素向量,然后将其用作插值点。默认情况下,INTERP1函数使用线

MATLAB中是否有任何内置函数可以从统计上扩展实数序列,从而将生成的序列扩展到我想要的任何大小。我有一个499个元素的序列,我想把它扩展到4096个元素。提前谢谢。

我不太理解问题中的“统计”一词,但从你的评论来看,你似乎只需要线性(或平滑)插值。
尝试使用或。

如果要将499个元素的向量插值到4096个元素的更高分辨率,可以按以下方式使用该函数(其中
x
是499个元素向量):

上述函数用于生成在1和499之间线性间隔的值的4096个元素向量,然后将其用作插值点。默认情况下,INTERP1函数使用线性插值计算旧点之间的新值。可以按以下方式使用其他插值方法:

y = interp1(x,linspace(1,499,4096),'spline');  %# Cubic spline method
y = interp1(x,linspace(1,499,4096),'pchip');   %# Piecewise cubic Hermite method

如果您知道数据在参数分布族或系统中的分布,则可以使用采样函数和生成更多数据(在生成随机值时非常有用,无需指定哪个参数分布)

例子: 或使用johnsrnd:

%# generate more data using johnsrnd
quantiles = quantile(data, normcdf([-1.5 -0.5 0.5 1.5]));
newData = johnsrnd(quantiles, [4096-499 1]);

另一方面,如果要假设非参数分布,可以使用函数或函数。
请参阅演示以获取完整的示例(强烈建议!)。

您所说的“统计扩展”是什么意思?扩展保持相同的分布?你所说的“静态扩展序列”是什么意思?你的意思是基于定义模式的一些初始项生成算术序列的更多项吗?确切地说……序列中的数据表示信号,因此添加的数据必须进行统计插值。我需要中间添加的数据(序列中点之间的数据)。。。我不能添加数据和序列的结尾。没有统计插值之类的东西。插值将精确复制数据点,并允许您插入旧值中间的新值。如果希望找到适合数据的平滑曲线,然后使用该曲线进行插值,这就是曲线拟合、建模或平滑。有许多工具可以实现这一点。但是你需要决定你想解决哪个问题。
%# load data, lets say this is vector of 499 elements
data = load('data.dat');

%# generate more data using pearsrnd
moments = {mean(data),std(data),skewness(data),kurtosis(data)};
newData = pearsrnd(moments{:}, [4096-499 1]);

%# concat sequences
extendedData = [data; newData];

%# plot histograms (you may need to adjust the num of bins to see the similarity)
subplot(121), hist(data), xlabel('x'), ylabel('Frequency')
subplot(122), hist(extendedData), xlabel('x'), ylabel('Frequency')
%# generate more data using johnsrnd
quantiles = quantile(data, normcdf([-1.5 -0.5 0.5 1.5]));
newData = johnsrnd(quantiles, [4096-499 1]);