Index exceeds matrix dimensions error

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 Comments

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?
yes but even when i change it, it still pulls up the same error.

Sign in to comment.

 Accepted Answer

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...

More Answers (0)

Asked:

on 10 Apr 2018

Answered:

dpb
on 10 Apr 2018

Community Treasure Hunt

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

Start Hunting!