我有一個矩陣的樣子:矩陣內的插值。 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