How to get data in different tables from specific column data using for loop?

I have attached three different tables; first.xlsx, second.xlsx and third.xlsx. I imported those tables in Matlab. What I would like to do is
1) For every id from first.xlsx, get the loss value from second.xlsx for specific walkid and distance for every year. For e.g. for walkid 1 and year 1 the distance is 0.8. From second.xlsx, for walkid 1 interpolate distance 0.8 to get loss data. I would like to do for every year (1 to 5 in for loop)
2) From loss value from second.xlsx, i want to get loss1 value from third.xlsx for specific runid for every year. For .eg. for runid 1 and loss value from second.xlsx, get loss1 value by interpolation for every year.
3) I would like to get new table from above operation as shown:
Any advice and suggestion is higly appreciated.
Thank you.

5 Comments

Someone please help me figuring out this problem. Any advice is highly appreciated.
Did you tryi xlsread? Use interp1 to interpolate data
Yeah i read the data feom readtable. I need to link one table to another table for each row using for loop. Only than i need to interp1 for interpolation. I dont know how to link one table column data to another table column data for each row. Any advice os highly appreciated.
Read both excel data files, make some calculations and write the data into third file
Yeah I get that. But the difficulty I am having is using for loop for every row for three column data of first excel file and get the value from second excel file. Could you please provide snippet of code to run this? Your idea is highly appreciated.

Sign in to comment.

Answers (1)

Here is an example
A1 = readtable('first.xlsx');
id = A1(:,1); % read id
walkid = A1(:,2); % read walkid
% read all necessary data ...
for i = 1:length(id)
i1 = find(id(i)==walkid); % find appropriate walkid
loss(i1) % loss
end

2 Comments

Hi,
I run the code like this
A1 = readtable('first.xlsx');
id = A1(2:end,1); % read id
walkid = A1(3:end,2); % read walkid
% read all necessary data ...
for i = 1:size(id)
i1 = find(id(i)==walkid); % find appropriate walkid
end
When I used length(id) its giving me error as "Error using tabular/length (line 189)
Undefined function 'length' for input arguments of type 'table'. Use the HEIGHT, WIDTH, or SIZE
functions instead."
when I used size(id) Its giving me error as
"Subscripting a table using linear indexing (one subscript) or multidimensional indexing (three or
more subscripts) is not supported. Use a row subscript and a variable subscript."
Also, I need to loop distance for every year . Hpw do I use for loop to get distance for each year for walkid and go to second.xlsx file. From second.xlsx file for each walk id and distance for each year I need to get loss in a new table.
I am still stucked on this. Please give me some thoughts. Your idea is highly appreciated.
Thank you.
When I used length(id) its giving me error as "Error using tabular/length (line 189)
Undefined function 'length' for input arguments of type 'table'. Use the HEIGHT, WIDTH, or SIZE
functions instead."
  • Use height then
Also, I need to loop distance for every year . Hpw do I use for loop to get distance for each year for walkid and go to second.xlsx file. From second.xlsx file for each walk id and distance for each year I need to get loss in a new table.
  • can you please re-write in formulas or something? I don't understand this

Sign in to comment.

Categories

Asked:

on 29 Jan 2021

Commented:

on 1 Feb 2021

Community Treasure Hunt

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

Start Hunting!