我有一个矩阵的样子:矩阵内的插值。 Matlab的
0 0 0 0 0
1 0 0 0 0
0 2 0 0 0
0 0 2 0 0
0 0 0 1 0
1 0 0 0 1
0 4 0 0 0
0 0 3 0 0
6 0 0 4 0
0 3 0 0 2
0 0 5 0 0
这是11x5矩阵。 我想为每列垂直插值。
任何帮助?
谢谢。
我有一个矩阵的样子:矩阵内的插值。 Matlab的
0 0 0 0 0
1 0 0 0 0
0 2 0 0 0
0 0 2 0 0
0 0 0 1 0
1 0 0 0 1
0 4 0 0 0
0 0 3 0 0
6 0 0 4 0
0 3 0 0 2
0 0 5 0 0
这是11x5矩阵。 我想为每列垂直插值。
任何帮助?
谢谢。
M =[0 0 0 0 0
1 0 0 0 0
0 2 0 0 0
0 0 2 0 0
0 0 0 1 0
1 0 0 0 1
0 4 0 0 0
0 0 3 0 0
6 0 0 4 0
0 3 0 0 2
0 0 5 0 0];
xi = 1:size(M,1)
for colIdx = 1:size(M,2)
col = M(:,colIdx);
x = xi(~~col); %// Note that ~~col is a logical vector of elements that are not equal to zero. i.e. it's the same as col ~= 0
y = col(~~col);
M(:,colIdx) = interp1(x,y,xi);
end
然后如果你想外点是0
在循环后添加此行:
M(isnan(M)) = 0;
非常感谢。 – user3049408
我试过了。它给出了这个错误:x = xi(idx); 索引超出矩阵尺寸。 – user3049408
@ user3049408现在就试试。因为我正在寻找不是零的数字,所以我放弃了一个'〜'。 – Dan
'interp2'可能? –
我知道matricies和插值是什么;我不确定你的意思是“为每列纵向插值”。列1和列2(0,0.5,1,0,0,0.5,2.0,...)之间的值是否等于?感觉像两个简单的选择器和平均会做的伎俩。 – duffymo
是的,我读过它,但我不知道如何正确地做到这一点。它每次都会给出错误的值。 – user3049408