请问各位,我要怎么把下面的16x3矩阵,每一列都额外新增4个点变成80x3的矩阵,而且列跟列是平均分配。
我知道可以用插值,但是不知道程式怎么打,下面是举例,想变成类似这样:
初始
6 1 1 1 1 1 1
7 2 2 2 2 2 2
插值后:
6 1 1 1 1 1 1
6.2 1.2 1.2 1.2 1.2 1.2 1.2
6.4 1.4 1.4 1.4 1.4 1.4 1.4
6.6 1.6 1.6 1.6 1.6 1.6 1.6
6.8 1.8 1.8 1.8 1.8 1.8 1.8
7 2 2 2 2 2 2
非常感谢各位的帮忙和教学,故我采纳自己的答案
这样我就不用想要采纳谁,各位非常抱歉。
可以使用插值方法将原始的16x3矩阵插值为80x3矩阵。其中,最简单的插值方法是线性插值,具体方法如下:
将每一列的数据分别作为一个一维数组
在每个一维数组中,根据原始数据点的位置,在新的位置上插入4个额外的数据点。可以使用numpy的插值函数,如interp1d实现。
将每个一维数组组合成一个新的80x3的矩阵
您可以使用MATLAB中的interp1函数进行插值。具体实现如下:
假设您的初始矩阵为A,每一列的最小值为min_col,最大值为max_col,需要新增的点数为N:
首先,定义新的x轴坐标:xq = linspace(min_col, max_col, N+1)。
定义插值矩阵:B = zeros(N+1, size(A, 2))。
对每一列进行插值:B(:,i) = interp1(A(:,i), xq)。
完成插值,得到新的矩阵B。
以下是代码示例:
A = [6 1 1; 7 2 2];
min_col = min(A(:));
max_col = max(A(:));
N = 4;
xq = linspace(min_col, max_col, N+1);
B = zeros(N+1, size(A, 2));
for i = 1:size(A, 2)
B(:,i) = interp1(A(:,i), xq);
end