How to resolve this error ?

2 visualizzazioni (ultimi 30 giorni)
Rashmi
Rashmi il 14 Ago 2018
Risposto: Adam Danz il 14 Ago 2018
z=imread('demo.jpg');
r=z(:,:,1);
g=z(:,:,2);
b=z(:,:,3);
CREATE A TRAINING SET
% Identify the location (row,column) of "training pixels" and assign them a "group number":
% You will need to identify at least 2 training pixels per group
%
tpix=[1309,640 ,1;... % Group 1: Yellow Bat
1218,755 ,1;...
1351,1409,2;... % Group 2: Grey Concrete
673 ,394 ,2;...
285 ,1762,3;... % Group 3: Red Tub
177 ,1542,3;...
538 ,1754,4;... % Group 4: Blue Tub
432 ,1811,4;...
1417,2010,5;... % Group 5: White Tub
163 ,1733,5;...
652 ,677 ,6;... % Group 6: Baby
864 ,1032,6;...
836 ,1882,7;... % Group 7: Dark Doormat
1063,1917,7];
row=tpix(:,1); % y-value
col=tpix(:,2); % x-value
group=tpix(:,3); % group number
ngroup=(group);
%
% From these pixels, make a training set consisting of each training pixel's band values
% "train" should have the same number of rows as the number of training pixels, and the
% same number of columns as number of bands (in this case 3, in Lansat case 7).
%
train=[];
% train=zeros(ngroup);
% train=ones(group); %(1,ngroup);
tic [class,err,misfit]=classify(AllPix,train,row); toc
When I run this code , error has occured as "TRAINING must have more observations than the number of groups"

Risposte (1)

Adam Danz
Adam Danz il 14 Ago 2018
Read and understand how classify() works
doc classify
The 2nd input to classify() is 'training' which is a grouping variable and as the error tells you, you must have more observations (number of elements in 'training' vector) than groups (number of unique values in 'training').
Your code defines 'training' as
train = [];
which is empty.

Categorie

Scopri di più su MATLAB in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by