[英]Matlab imfilter function implemenation
我正在嘗試編寫一個實現imfilter函數的函數。 但出現此錯誤。
??? 下標索引必須是實數正整數或邏輯
這一點
s = size(img);
在下面的代碼段中查找
s = size(img);
Ix = zeros(s);
Iy = zeros(s);
for i = 1:s
for j = 1:s
temp = img(i-1:i+1,j-1:j+1) .* Gx;
Ix(i,j) = sum(temp(:));
end
end
請問我做錯了什么嗎?
編輯代碼
s = size(img);
Ix = zeros(s);
Iy = zeros(s);
for i = 2:s(1)-1
for j = 2:s(2)-1
temp = img(i-1:i+1,j-1:j+1) .* Gx;
Ix(i,j) = sum(temp(:));
end
end
如果確實發生在調用s= size(img);
的時刻s= size(img);
,那么您的工作空間中可能有一個可變的size
,這正遮蓋了size
函數。
此外,您的循環還有幾個可能的問題。 首先,您不能在MATLAB的索引中使用零。 因此,當您在循環開始時將i = 1, j = 1
時,您會期望temp
行返回下標索引錯誤。
size
的輸出(假設img
是灰度圖像)將是兩個數字。 當i = 1:s
,它將忽略第二個。 只要您的圖像是方形的,這很好,但是如果圖像不是方形,則不會執行您期望的操作。
最后,看看conv2
的情況,而不是創建循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.