Входной аргумент "ip" не определен Ошибка - PullRequest
0 голосов
/ 29 марта 2012

Я новичок в Matlab. Я пытаюсь определить функцию и получаю эту ошибку.

"входной аргумент" ip "не определен.

Ошибка в ==> edge_mapping в 2 size_ip = size (ip (:,:, 1)); «

вот мой код

    function[op1,op2,op3] = edge_mapping(ip)
size_ip = size(ip(:,:,1));
s=size_ip(1);
op1= cat(3,zeros(s),zeros(s),zeros(s),zeros(s),zeros(s),zeros(s),zeros(s),zeros(s),zeros(s),zeros(s));
op2= cat(3,zeros(s),zeros(s),zeros(s),zeros(s),zeros(s),zeros(s),zeros(s),zeros(s),zeros(s),zeros(s));
op3= cat(3,zeros(s),zeros(s),zeros(s),zeros(s),zeros(s),zeros(s),zeros(s),zeros(s),zeros(s),zeros(s));
for i = 1 : 10
    op1(:,:,i)=edge(ip(:,:,i),'sobel');
    op2(:,:,i)=edge(ip(:,:,i),'prewitt');
    op3(:,:,i)=edge(ip(:,:,i),'canny');
end

Ответы [ 2 ]

1 голос
/ 30 марта 2012
function [op1, op2, op3] = edge_mapping(ip)
op1 = zeros(size(ip));
op2 = zeros(size(ip));
op3 = zeros(size(ip));
for i = 1 : size(ip, 3)
    op1(:,:,i)=edge(ip(:,:,i),'sobel');
    op2(:,:,i)=edge(ip(:,:,i),'prewitt');
    op3(:,:,i)=edge(ip(:,:,i),'canny');
end
return

Но я думаю, что лучше написать простую функцию:

function op = edge_mapping(ip, edge_mode)
op = zeros(size(ip));
for i = 1 : size(ip, 3)
    op(:,:,i)=edge(ip(:,:,i), edge_mode);
end
return

и затем вызвать ее:

op_sobel = edge_mapping(ip, 'sobel');
op_prewitt = edge_mapping(ip, 'prewitt');
op_canny = edge_mapping(ip, 'canny');
0 голосов
/ 29 марта 2012

Этот код является функцией. Он должен быть сохранен как m-файл и запущен из командной строки MATLAB, скрипта или другой функции как

[op1,op2,op3] = edge_mapping(ip);

где аргументы ip, op1, op2 и op3 могут иметь разные имена.

Убедитесь, что после ключевого слова function есть пробел.

Чтобы избежать этой ошибки, вы можете назначить значение по умолчанию для входного аргумента, если оно не определено (не существует в области действия функции):

if ~exist(ip, 'var')
    ip = []; %# or other default value
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...