-9
誰能告訴我如何在Matlab中實現線性插值而不使用interp1函數?我需要像在Matlab中的線性插值
輸入[1,0,0,4,0,0,7]; 輸出[1,2,3,4,5,6,7];
也請避免循環。
預先感謝您!
誰能告訴我如何在Matlab中實現線性插值而不使用interp1函數?我需要像在Matlab中的線性插值
輸入[1,0,0,4,0,0,7]; 輸出[1,2,3,4,5,6,7];
也請避免循環。
預先感謝您!
好吧夥計們。而不是不喜歡的答案,你最好張貼正確的。 我已經想通了
close all;
Img_in = imread(Img_in_bmp);
out_name1 = [Img_in_bmp ' upsampledLinear_to_512.bmp'];
[m,n] = size(Img_in);
Upsampl_to_512 = zeros(s*(m),s*(n));
for i=1:(s*(m-1))
x = rem(i-1,s)/s;
u = floor((i-1)/s)+1;
for j=1:(s*(n-1))
y = rem((j-1),s)/s;
v = floor((j-1)/s)+1;
Upsampl_to_512(i,j) = Img_in(u+0,v+0)*(1-x)*(1-y) + Img_in(u+1,v+0)*x*(1-y) + Img_in(u+0,v+1)*(1-x)*y + Img_in(u+1,v+1)*x*y;
end
end
感謝大家的批評,但我寧願答案。
「請避免循環」...併發布答案有兩個嵌套循環。 XDDD – 2016-07-18 15:11:07
'linspace(firstValueInArray,lastValueInArray,lengthOfArray)'會的工作,但它不能保證你在中間指定的非零元素(在上面的例子中,4)將是相同的。如果你想這樣做,那麼你可以做兩次空間(從1到4)和從(4到7),或做一些優化。 – 2014-10-08 02:11:12
在開始之前,您需要從'input'中刪除'0'。之後,使用'interp1'很簡單。但我建議,如果你想知道你不使用這些數字,因爲他們會混淆你,因爲元素值總是等於元素位置... – Dan 2014-10-08 08:07:57