Multiplying elements from various tables to create a third table

4 views (last 30 days)
Hi there,
I'm a beginner to Matlab, and I have a very shaky foundation. However, I need the help of Matlab to do some analysis. I would highly appreciate your help!
I have two types of data sets I'm drawing from
(for n =1:82 tables) Table A_n(70080 x 4)
Table B(82 x 1)
Basically, I need to individually multiple the 'nth' element in Table B by the second column of Table A_n.
This should result in Table C (70080 x 82).
I know I can produce the variables for each column vector of Table C by inputting this:
Col_1 = A_1(:,2)*B(1,1);
Col_2 = A_2(:,2)*B(2,1);
...
Col_n = A_n(:,2)*B(n,1);
but it is manually taxing. Furthermore, I have no idea how to input these into an actual table. This would require some sort of concantenation?
Initially I wanted to dynamically create these variables but I have read elsewhere that doing so is actually quite troublesome.
Is there any way for me to input these variables directly into a table?
And to do this all through a for loop...
Thanks!
  1 Comment
Christina Hong
Christina Hong on 28 Jul 2020
In the follow script, im getting close to my desired result
HOWEVER in the bold/italic/underlined section im trying to obtain the column vector of one table and the element of the other, but instead what I get returned is a string. How will I be able to obtain actual values?!
>> myFilenames = cell(8,1);
for i = 1:8
str = strcat('1000YearReturn_300deg_Story',' ', num2str(i),'.txt');
myFilenames{i} = str;
load(myFilenames{i});
end
>> myFilenames = cell(8,1);
momentY = cell(70080,1);
for i = 1:8
str = strcat('1000YearReturn_300deg_Story',' ', num2str(i),'.txt');
myFilenames{i} = str;
load(myFilenames{i});
story_i = strcat('X1000YearReturn_300deg_Story', ' ', num2str(i), '(:,2)');
refHeight = strcat('Referenceheights(', ' ', num2str(i), ',1)');
momentY{i} = story_i*refHeight;
mY = momentY{i};
T = [T mY];
end

Sign in to comment.

Accepted Answer

Christina Hong
Christina Hong on 30 Jul 2020
I was able to find the answer to my problem, successfully creating 3 70080x82 tables and using a loop to load in all 82 files
>> load Referenceheights.txt
myFilenames = cell(82,1);
My = [];
Mx = [];
Mz = [];
for i = 1:82
str = strcat('1000YearReturn_300deg_Story',' ', num2str(i),'.txt');
myFilenames{i} = str;
load(myFilenames{i});
S = load(myFilenames{i});
My(:,i) = S(:,2)*Referenceheights(i,1);
Mx(:,i) = S(:,3)*-Referenceheights(i,1);
Mz(:,i) = S(:,4);
end

More Answers (1)

Mario Malic
Mario Malic on 28 Jul 2020
Check if it gives correct output.
C = (A(:,2)'.*B)';
  4 Comments
Christina Hong
Christina Hong on 29 Jul 2020
Hi Mario,
I will compile all 82 resultant column vectors from Table A(:,2) x Table B(n,1) to form ONE table C with 82 columns.
Mario Malic
Mario Malic on 29 Jul 2020
Edited: Mario Malic on 29 Jul 2020
The line that I wrote gives you the Variable C with (70080 x 82).

Sign in to comment.

Categories

Find more on Tables in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!