error in plotting Index in position 2 exceeds array bounds.

1 vue (au cours des 30 derniers jours)
Tomasz Kaczmarski
Tomasz Kaczmarski le 10 Fév 2020
Hello
Im quite new to matlab
currently im trying to plot as in
using dataset from
my code is below
clear; close all; clc;
T = readtable('train.csv');
X = T(:,(1:562));
Y = T(:,{'Activity'});
t = templateSVM('Standardize',true,'SaveSupportVectors',true);
predictorNames = {'alfa','beta'};
responseName = 'Human Activity';
classNames = {'STANDING','SITTING','LAYING','WALKING','WALKING_DOWNSTAIRS','WALKING_UPSTAIRS'}; % Specify class order
Mdl = fitcecoc(X,Y);
Mdl.ClassNames
Mdl.CodingMatrix
L = size(Mdl.CodingMatrix,6); % Number of SVMs
sv = cell(L,1); % Preallocate for support vector indices
for j = 1:L
SVM = Mdl.BinaryLearners{j};
sv{j} = SVM.SupportVectors;
sv{j} = sv{j}.*SVM.Sigma + SVM.Mu;
end
hold on
markers = {'ko','ko','ko','ko','ko','ko','ko'}; % Should be of length L
for j = 1:L
svs = sv{j};
plot(svs(:,1),svs(:,2),markers{j},...
'MarkerSize',10 + (j - 1)*3);
end
title('Fisher''s Iris -- ECOC Support Vectors')
xlabel(predictorNames{1})
ylabel(predictorNames{2})
legend([classNames,{'Support vectors - SVM 1',...
'Support vectors - SVM 2','Support vectors - SVM 3'}],...
'Location','Best')
hold off
unfortunettly im getting error
Index in position 2 exceeds array bounds.Index in position 2 exceeds array bounds.
Error in learningmulticlasCVN (line 35)
plot(svs(:,1),svs(:,2),markers{j},..
screen.PNG

Réponse acceptée

Rajani Mishra
Rajani Mishra le 13 Fév 2020
Modifié(e) : Rajani Mishra le 13 Fév 2020
I tried running your code and debugged for the error encountered. Error – “Exceeds array bounds” is faced when index out of array size is accessed, which was the case in the line with a call to plot() function.
I have made some changes in the code provided:
  1. I have changed as the way input X and Y are passed to function to fitcecoc():
T = readtable('train.csv');
Y = T(:,{'Activity'});
X = T(:,(1:562));
X = X{:,:};
Y = Y{:,:};
t = templateSVM('Standardize',true,'SaveSupportVectors',true);
predictorNames = {'alfa','beta'};
responseName = 'Human Activity';
classNames = {'STANDING','SITTING','LAYING','WALKING','WALKING_DOWNSTAIRS','WALKING_UPSTAIRS'}; % Specify class order
Mdl = fitcecoc(X,Y,'Learners',t,'ResponseName',responseName,'ClassNames',classNames)
2. I have changed the second argument passed to size () function, as the second argument defines the dimension along which you want to calculate the size of the matrix. As here “Mdl.Codingmatrix” is of size 6* 16, its second dimension whose size is required.
L = size(Mdl.CodingMatrix,2); % Number of SVMs
3. Definition of markers array
markers = {'ko','ko','ko','ko','ko','ko','ko','ko','ko','ko','ko','ko','ko','ko','ko'}; % Should be of length L
I have attached the result after making the above changes.
Hope this helps!

Plus de réponses (0)

Tags

Aucun tag saisi pour le moment.

Community Treasure Hunt

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

Start Hunting!

Translated by