2013-02-14 212 views
3

我試圖編寫一個函數,它可以在不使用內置函數的情況下執行什麼操作conv2(h1,h2,A) & conv2(...'shape')。 (速度目前不是問題)。這裏定義:http://www.mathworks.co.uk/help/matlab/ref/conv2.htmlMatlab - 輸入參數類型爲Double的未定義錯誤

這是我的命令:

imgC = imread('camerman.tif'); 
    imgC = double(imgC); 

    sigma = 1; 
    inp = (-1 .*2.5 .*sigma):1:(2.5 .* sigma);         
    gauss1d = (1/(sigma .* sqrt(2*pi))).*exp(-(inp.^2/(2.*sigma.*sigma)));  
    gaussprime = diff(gauss1d);  

    x = conv2fft(gaussprime,1,imgC , 'same'); 
    y = conv2fft(1,gaussprime.',imgC , 'same'); 
    blur = conv2fft (gauss1d, gauss1d, imgC); 

這是我的錯誤:

Undefined function 'convfft' for input arguments of type 'double'. 
    Error in conv2fft (line 81) `if size(convfft(a(1,:),r),1)==1` 

如果我運行相同的命令,但使用conv2功能:

imgC = imread('camerman.tif'); 
    imgC = double(imgC); 

    sigma = 1; 
    inp = (-1 .*2.5 .*sigma):1:(2.5 .* sigma);         
    gauss1d = (1/(sigma .* sqrt(2*pi))).*exp(-(inp.^2/(2.*sigma.*sigma)));  
    gaussprime = diff(gauss1d);  

    x = conv2(gaussprime,1,imgC , 'same'); 
    y = conv2(1,gaussprime.',imgC , 'same'); 
    blur = conv2(gauss1d, gauss1d, imgC); 

它工作正常嗎?...我一直在四處尋找,盯着t他的代碼數小時。我只是看不到它。任何人都注意到我的功能有什麼問題?

回答

6

Undefined function 'xxx' for input arguments of type 'double'通常表示功能xxx不在路徑上。

要確認這確實是問題,請在命令行鍵入which convfft,因爲which應指示Matlab知道文件所在的位置。

如果沒有找到該文件,請確保它存在於您的計算機上,並將該文件的父文件夾添加到Matlab路徑中。

+0

你當然知道你的Matlab。我只是做了這個,它返回沒有找到''確認'。'... – Reanimation 2013-02-14 12:41:30

+0

我相信它已經知道路徑,因爲它發現被調用的函數並將圖像轉換爲灰度並將其保存(它實現)。它只在犯罪時出錯。我已經將convfft更改爲conv2fft(函數名稱錯字),現在錯誤是'下標分配維度不匹配。 錯誤cannyWorkingOn> conv2fft(行295) y3(:,ii)= conv2fft(y2(:,ii),c);' – Reanimation 2013-02-14 13:00:33

+2

@Reanimation:Matlab知道'conv2fft',但不知道'convfft'。使用您的文件系統來搜索文件。如果找不到,它應該在文件交換中可用。 – Jonas 2013-02-14 13:19:56

相關問題