你如何解决“未定义的函数或变量'mamfis'”?
Posted
技术标签:
【中文标题】你如何解决“未定义的函数或变量\'mamfis\'”?【英文标题】:How do you solve "undefined function or variable 'mamfis'"?你如何解决“未定义的函数或变量'mamfis'”? 【发布时间】:2020-03-23 00:55:52 【问题描述】:我在 MATLAB r2016a 上进行边缘检测,但有一个我不明白的错误。我在某处看到这个问题发生在 r2015a,这就是我升级到 r2016a 的原因,但我遇到了同样的问题:
未定义的函数或变量'mamfis'
另外,我也收到此错误:
错误:文件:edge.m 行:48 列:6 输入字符在 MATLAB 语句或表达式中无效。
Irgb = imread('IMG_1769.png');
Igray = rgb2gray(Irgb);
figure
image(Igray,'CDataMapping','scaled')
colormap('gray')
title('Input Image in Grayscale')
I = im2double(Igray);
Gx = [-1 1];
Gy = Gx';
Ix = conv2(I,Gx,'same');
Iy = conv2(I,Gy,'same');
figure
image(Ix,'CDataMapping','scaled')
colormap('gray')
title('Ix')
figure
image(Iy,'CDataMapping','scaled')
colormap('gray')
title('Iy')
% edgeFIS=mamfis;
edgeFIS = mamfis('Name','edgeDetection');
edgeFIS = addInput(edgeFIS,[-1 1],'Name','Ix');
edgeFIS = addInput(edgeFIS,[-1 1],'Name','Iy');
sx = 0.1;
sy = 0.1;
edgeFIS = addMF(edgeFIS,'Ix','gaussmf',[sx 0],'Name','zero');
edgeFIS = addMF(edgeFIS,'Iy','gaussmf',[sy 0],'Name','zero');
edgeFIS = addOutput(edgeFIS,[0 1],'Name','Iout');
wa = 0.1;
wb = 1;
wc = 1;
ba = 0;
bb = 0;
bc = 0.7;
edgeFIS = addMF(edgeFIS,'Iout','trimf',[wa wb wc],'Name','white');
edgeFIS = addMF(edgeFIS,'Iout','trimf',[ba bb bc],'Name','black');
figure
subplot(2,2,1)
plotmf(edgeFIS,'input',1)
title('Ix')
subplot(2,2,2)
plotmf(edgeFIS,'input',2)
title('Iy')
subplot(2,2,[3 4])
plotmf(edgeFIS,'output',1)
title('Iout')
r1 = "If Ix is zero and Iy is zero then Iout is white";
r2 = "If Ix is not zero or Iy is not zero then Iout is black";
edgeFIS = addRule(edgeFIS,[r1 r2]);
edgeFIS.Rules
Ieval = zeros(size(I));
for ii = 1:size(I,1)
Ieval(ii,:) = evalfis(edgeFIS,[(Ix(ii,:));(Iy(ii,:))]');
end
figure
image(I,'CDataMapping','scaled')
colormap('gray')
title('Original Grayscale Image')
figure
image(Ieval,'CDataMapping','scaled')
colormap('gray')
title('Edge Detection Using Fuzzy Logic')
【问题讨论】:
r2016a 的发行说明是否提到修复了您试图从 r2015a 中逃脱的错误?新版本的软件通常不会修复旧版本的每一个问题。 升级时建议升级到最新版本,而不是落后8个版本的版本。 【参考方案1】:第一个问题,mamfis
函数来自模糊逻辑工具箱,因此您需要安装该工具箱才能使用它。它在核心 MATLAB 中不存在。
第二个问题,使用双引号 ("
) 定义 strings 直到 MATLAB 版本 R2017a 才添加。您需要使用单引号 ('
) 定义一个字符数组。
【讨论】:
我现在明白了,让我检查一下是否为我完成以上是关于你如何解决“未定义的函数或变量'mamfis'”?的主要内容,如果未能解决你的问题,请参考以下文章