Matlab 输入参数";知识产权;是未定义的错误

Matlab 输入参数";知识产权;是未定义的错误,matlab,Matlab,我是matlab新手,我正在尝试定义一个函数,我不断得到这个错误 输入参数“ip”未定义 ==>2处的边_映射出错 大小=大小(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(

我是matlab新手,我正在尝试定义一个函数,我不断得到这个错误

输入参数“ip”未定义

==>2处的边_映射出错 大小=大小(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

这段代码是一个函数。它必须另存为m文件,并从MATLAB命令行、脚本或其他函数运行

[op1,op2,op3] = edge_mapping(ip);
其中,参数ip、op1、op2和op3可以有不同的名称

确保
函数
关键字后有空格

为避免此错误,如果输入参数未定义(不存在于函数的作用域中),则可以为其指定默认值:

但我认为最好编写一个简单的函数:

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');

有没有一个原因可以解释为什么你要重复连接10次
zero(s)
10次,而不是像
zero(s*10,s)
?类似地,您正在初始化
op1、op2、op3
以使其成为相同的矩阵-为什么要重复定义三次?定义
op1
然后复制,
op2=op1;op3=op1
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');