where in my code I am thinking wrong?

1 view (last 30 days)
Manav Divekar
Manav Divekar on 29 Nov 2021
Commented: Jan on 30 Nov 2021
I am trying to read data from the excel file, and return the age.
function [age] = xls_ageofperson (excelname, name)
[data text]= readtable(excelname);
ii=0;
jj=0;
for i = 1: length(data)
if string(name)==string(txt{1,i})
ii=i;
end
if (string(text)==string(txt{2,i}))
jj=i;
end
end
age = i;
if i input any name in the command window i am expecting it to return its age.

Answers (1)

Jan
Jan on 29 Nov 2021
  • length() is fragile: It uses to longer dimension. You cannot be sure if your table has more rows than columns. Use height() instead or size(data, 1) in older Matlab versions.
  • readtable has 1 output only So what do you expect text to be?
[data text]= readtable(excelname);
  • Your code replies the value of i as age, but the value of i comes from the last iteration of the loop:
age = i;
So age is always the number of rows of the table. But what are ii and jj good for?
I assume, you want:
function age = xls_ageofperson(excelname, name)
data = readtable(excelname);
age = data.age(data.name == name);
end
  2 Comments
Jan
Jan on 30 Nov 2021
Okay. Does this mean that data.Name is a cell or Name? You can check this easily. Try this:
age = data.age(strcmp(data.Name, Name));

Sign in to comment.

Tags

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by