Index exceeds matrix dimensions error

12 vues (au cours des 30 derniers jours)
Justin Howard
Justin Howard le 10 Avr 2018
Réponse apportée : dpb le 10 Avr 2018
I'm trying to get my for loop to display the names that have systolic blood pressure over 90, but i get an error on the line with my fprintf statement saying my index exceeds matrix dimensions. im not sure what else to do?
data=textscan(fid,'%s%s%d%d','delimiter', '/');
Names=data(:,2);
Systolic=data(:,3);
Diastolic=data(:,4);
n=length(Systolic);
for i=1:length(n)
if (Systolic{i} > 90)
fprintf('%s is ideal',Names{:,2});
end
end
  2 commentaires
David Fletcher
David Fletcher le 10 Avr 2018
look at this on the second line
Names=data(:,2)
Now look at this in your fprintf statement
fprintf('%s is ideal',Names{:,2});
Do you see the problem?
Justin Howard
Justin Howard le 10 Avr 2018
yes but even when i change it, it still pulls up the same error.

Connectez-vous pour commenter.

Réponse acceptée

dpb
dpb le 10 Avr 2018
In Matlab, no loops needed--
data=textscan(fid,'%s%s%d%d','delimiter', '/');
Names=string(data(:,2)); % convert to string instead of cell array
Systolic=data{:,3}; % and to double array
Diastolic=data{:,4};
SystThresh=90; % don't bury "magic numbers in code; make variables
isOK=(Systolic > SystThresh) % logical addressing array of condition
fprintf('%s is ideal\n',Names(isOK)); % use the vector, Luke!
I'd suggest also look at readtable in lieu of textscan to get data as a table; much advantage there in processing by a variable name and in lookups for classifying by various variables, conditions...

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by