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