Help me solve this

2 vues (au cours des 30 derniers jours)
Shanti Gurl
Shanti Gurl le 16 Juil 2020
Commenté : Shanti Gurl le 16 Juil 2020
i make a prediction of fruit (mature,immature,half mature) and when i run, i got error like this:
----------------------------
Undefined function or variable 'x'.
Error in BUAH>pushbutton3_Callback (line 192)
set(handles.edit2,'string',x);
Error in gui_mainfcn (line 95)
feval(varargin{:});
Error in BUAH (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)BUAH('pushbutton3_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback.
-----------------
and my code:
-----------------
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% pisah rgb
Img = handles.I;
%cari nilai HSI
RGB = im2double(Img);
Red = RGB(:,:,1);
Green = RGB(:,:,2);
Blue = RGB(:,:,3);
%Hue
atas=1/2*((Red-Green)+(Red-Blue));
bawah=((Red-Green).^2+((Red-Blue).*(Green-Blue))).^0.5;
teta = acosd(atas./(bawah));
if Blue >= Green
H = 360 - teta;
else
H = teta;
end
H = H/360;
[r c] = size(H);
for i=1 : r
for j=1 : c
z = H(i,j);
z(isnan(z)) = 0; %isnan adalah is not none artinya jika bukan angka dia akan memberi 0
H(i,j) = z;
end
end
%S
S=1-(3./(sum(RGB,3))).*min(RGB,[],3);
[r c] = size(S);
for i=1 : r
for j=1 : c
z = S(i,j);
z(isnan(z)) = 0;
S(i,j) = z;
end
end
%I
I=(Red+Green+Blue)/3;
MeanR = mean2(Red);
MeanG = mean2(Green);
MeanB = mean2(Blue);
MeanH = mean2(H);
MeanS = mean2(S);
MeanI = mean2(I);
VarRed = var(Red(:)); VarGreen = var(Green(:)); VarBlue = var(Blue(:));
VarH = var(H(:)); VarS = var(S(:)); VarI = var(I(:));
RangeR = ((max(max(Red)))-(min(min(Red))));
RangeG = ((max(max(Green)))-(min(min(Green))));
RangeB = ((max(max(Blue)))-(min(min(Blue))));
RangeH = ((max(max(H)))-(min(min(H))));
RangeS = ((max(max(S)))-(min(min(S))));
RangeI = ((max(max(I)))-(min(min(I))));
data = get(handles.uitable2,'Data');
data{1,1} = num2str(MeanR);
data{2,1} = num2str(MeanG);
data{3,1} = num2str(MeanB);
data{4,1} = num2str(MeanH);
data{5,1} = num2str(MeanS);
data{6,1} = num2str(MeanI);
data{1,2} = num2str(VarRed);
data{2,2} = num2str(VarGreen);
data{3,2} = num2str(VarBlue);
data{4,2} = num2str(VarH);
data{5,2} = num2str(VarS);
data{6,2} = num2str(VarI);
data{1,3} = num2str(RangeR);
data{2,3} = num2str(RangeG);
data{3,3} = num2str(RangeB);
data{4,3} = num2str(RangeH);
data{5,3} = num2str(RangeS);
data{6,3} = num2str(RangeI);
set(handles.uitable2,'Data',data,'ForegroundColor',[0 0 0])
training1 = xlsread('Data Training');
group = training1(:,25);
training = [training1(:,1) training1(:,2) training1(:,3) training1(:,4) training1(:,5) training1(:,6) training1(:,7) training1(:,8) training1(:,9) training1(:,10) training1(:,11) training1(:,12) training1(:,13) training1(:,14) training1(:,15) training1(:,16) training1(:,17) training1(:,18)];
Z=[MeanR MeanG MeanB MeanH MeanS MeanI VarRed VarGreen VarBlue VarH VarS VarI RangeR RangeG RangeB RangeH RangeS RangeI];
hasil1=fitcknn(training,group,'NumNeighbors',1,'Standardize',1);
if isequal(hasil1,1)
x ='MATURE';
elseif isequal(hasil1,2)
x ='HALF-MATURE';
elseif isequal(hasil1,3)
x ='IMMATURE';
end
set(handles.edit2,'string',x);
---------------------------
thanks later.
and did my KNN classification is correct? this is my KNN Classification code:
-----------------------------
hasil1=fitcknn(training,group,'NumNeighbors',1,'Standardize',1);
if isequal(hasil1,1)
x ='MATURE';
elseif isequal(hasil1,2)
x ='HALF-MATURE';
elseif isequal(hasil1,3)
x ='IMMATURE';
end
-------------------------
  4 commentaires
Walter Roberson
Walter Roberson le 16 Juil 2020
Which is it: not an scalar, or not an integer ? The two have different solutions.
Shanti Gurl
Shanti Gurl le 16 Juil 2020
i can solve this problem, KNNClassify need
y = predict (hasil1,Z);
so the code:
hasil1=fitcknn(training,group,'NumNeighbors',1,'Standardize',1);
y = predict (hasil1,Z);
if (y==1)
x ='MATURE';
elseif y==2
x ='HALF-MATURE';
elseif y == 3
x ='IMMATURE';
end
set(handles.edit2,'string',x);
SOLVED!

Connectez-vous pour commenter.

Réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by