error in evalfis..
1 次查看(过去 30 天)
显示 更早的评论
this FIS takes 4 inputs...this is the following code:
a=imread('Lenna.png');
gg=rgb2gray(a);
h=imresize(gg,[50 50]);
[m,n]=size(h);
figure, imshow(h)
t=readfis('ed2.fis');
%z=zeros([m n]);
for i=2:m
for j=2:n
p4=g(i,j);
p1=g(i-1,j-1);
p2=g(i,j-1);
p3=g(i-1,j);
g(i,j)=evalfis([p1 p2 p3 p4],t);
end
end
imshow(g)
the error is: The first input must be a defined DOUBLE matrix
Error in ==> evalfis at 84 [output,IRR,ORR,ARR] = evalfismex(input, fis, numofpoints);
Error in ==> ed2x2 at 18 g(i,j)=evalfis([p1 p2 p3 p4],t);
but the problem is i dont want to convert the image to class double.. what do i do?
0 个评论
采纳的回答
Geoff
2012-3-30
Why don't you want to convert it to double? It's not like it's going to be huge.
You don't have to replace your uint8 image either:
h = imresize(gg,[50 50]);
dh = double(h);
By the way, in your loop you are using p4 as an input but it hasn't been calculated yet. Did you mean to take the p-values from your h-matrix, rather than your g-matrix?
Anyway, if that was the intent, just take p from dh instead of h
2 个评论
Geoff
2012-3-30
Oh, and of course, convert back to uint8 to store in g. And it would pay to preallocate g:
g = uint8(zeros(m,n))
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Fuzzy Logic in Simulink 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!