필터 지우기
필터 지우기

I am getting an error that "array indices must be positive integers or logical values" How to solve?

조회 수: 2 (최근 30일)
Array indices must be positive integers or logical values.
Error in get_im_label (line 14)
if ~strcmp(dataname(j).name(end-1:end),'db') % ËÎ
Error in curet (line 17)
imageDatasetLabel = get_im_label(imdir);
this is my error. How to solve this error?
  댓글 수: 3
Dennis
Dennis 2019년 3월 6일
The error states that one of your indices is not a positive integer. This could be j (impossible to tell without your code), but my guess is that there might be only one entry in name.
Shan Sha
Shan Sha 2019년 3월 6일
close all;clear all;clc
addpath('./helpfun');
imdir = './CURET/';
savedir = ['./_features/CURET']; % save features
mkdir_bo(savedir);
datadir = 'results'; % save classification accuracy
mkdir_bo(datadir);
%% feature extraction
sigmaSet = [1 2 4];
F = makeGDfilters(sigmaSet);
snr = 0; % here "0" only denotes "No noise"
K = 2;
C = 1;
Ls = 3;
Lr = 5;
imageDatasetLabel = get_im_label(imdir);
imageDatasetFeatPath = get_feature_path(savedir);
tic;
fprintf('\n..................extracting image descriptors\n')
calculate_LETRIST_features(imdir, savedir, 'png', F, sigmaSet, Ls, Lr, K, C, snr);
imageDatasetFeatPath = get_feature_path(savedir);
%% classification
trail = 100; % results averaged over 100 runs
trainnum = 46;% trainning number per class
imageDatasetfea = load_feature(imageDatasetFeatPath);
rand('state',0);
randn('state',0);
for i = 1:trail
% generate training and test partitions
indextrain = [];
indextest = [];
labelnum = unique(imageDatasetLabel);
for j = 1:length(labelnum)
index = find(imageDatasetLabel == j);
perm = randperm(length(index));
indextrain = [indextrain index(perm(1:trainnum))];
indextest = [indextest index(perm(trainnum+1:end))];
end
trainfeatures = imageDatasetfea(indextrain,:);
trainlabel = imageDatasetLabel(:,indextrain);
testfeatures = imageDatasetfea(indextest,:);
testlabel = imageDatasetLabel(:,indextest);
trainNum = size(trainfeatures,1);
testNum = size(testfeatures,1);
DM = zeros(testNum,trainNum);
for j=1:testNum
test = testfeatures(j,:);
DM(j,:) = distMATChiSquare(trainfeatures,test)';
end
% Nearest-neighborhood classifier
CP=ClassifyOnNN(DM,trainlabel,testlabel);
cp_avg(1,i) = CP;
clear trainfeatures testfeatures DM
end
disp(['Total running time is ' num2str(toc/60) ' mins']);
AP=mean(cp_avg)
save(['.\results\CURET_LETRIST.mat'], 'AP');

댓글을 달려면 로그인하십시오.

답변 (1개)

KSSV
KSSV 2019년 3월 6일
Note that MATLAB accepts only non zero positive integers and logicals as indices. Else from these every thing throws error.
A = rand(10,1) ;
A(1) % no error
A(3) % no error
A(-1) % throws error
A(0) = % throews error
idx = A<0.5 ; % idx will be logical
A(idx) % no error
Check your code where and why the index is getting negative.

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by