你如何解决“未定义的函数或变量'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'”?的主要内容,如果未能解决你的问题,请参考以下文章

如何快速解决DDOS?

如何解决dblink过多的问题

直播噪音大怎么解决直播噪音大如何解决?

如何解决端口被占用问题

教你如何成为解决问题的高手

教你如何成为解决问题的高手