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 件のコメント

David Fletcher
David Fletcher 2018 年 4 月 10 日
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 2018 年 4 月 10 日
yes but even when i change it, it still pulls up the same error.

サインインしてコメントする。

 採用された回答

dpb
dpb 2018 年 4 月 10 日

0 投票

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

質問済み:

2018 年 4 月 10 日

回答済み:

dpb
2018 年 4 月 10 日

Community Treasure Hunt

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

Start Hunting!

Translated by