Multiplication of two matrices


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Multiplication of two matrices
# 1  
Old 02-21-2016
Multiplication of two matrices

Hi there! I have two files like below
File1(with a header, ~1000 rows, ~50 columns)
Code:
ID1 ID2 ID3 ID4 ID5 MI1_A MI1_H MI2_A MI2_H 
0 1 0 0 0 1 0 2 1
0 2 0 0 0 2 1 0 1

File2 (without a header, ~50 rows)
Code:
MI1 A 0.4 3.1
MI2 B -0.2 0.1

Output
Code:
ID2 M1_A M2_A
1 1*0.4 2*-0.2
2 2*0.4 0*-0.2

I need to multiply the the value in row1 & column 3 of File2 to the values in Column6 and onwards (MI1_A....MI45_A) of File1 all the way down till the last row, ignoring every alternate column(MI1_H..MI45_H).

Last edited by Akang; 02-21-2016 at 09:47 PM.. Reason: Add CODE and ICODE tags.
# 2  
Old 02-22-2016
Any attempts/thoughts/ideas from your side?
# 3  
Old 02-22-2016
I dropped the columns i didnt require using awk and then I tried this in R but no results.Ill appreciate any help. TIA!
Code:
index <- df2$Col1
df1[index]*df2$Col3[col(df1[index])]


Last edited by Don Cragun; 02-22-2016 at 04:04 AM.. Reason: Drop duplicated text.
# 4  
Old 02-22-2016
Help me understand what you are saying in post#3.

On top, how do you select/identify the first column of your output?
# 5  
Old 02-22-2016
In the output file I need
1) Column "ID2" from file1 : the unique record id
2)Columns ending with "_A": The values of these columns need to be multiplied with the 3rd column of file 2.
3) Column id of file 1 (starting from column 6th) matches with the row id (except for "_A") of file2.
4) From 6th column onward in file1, every alternate column is to be used for the multiplication (6th, 8th, 10th and so on)
Hope that helps to better understand the problem!
# 6  
Old 02-22-2016
Does this do what you want?
Code:
awk '
FNR == NR       {T[NR] = $3
                 NT = NR
                 next
                }
                {printf "%s", $2
                 for (i=1; i<=NT; i++) printf "%s%s", FS, (FNR > 1)?$(4+2*i)*T[i]:$(4+2*i)
                 print ""
                }
' file2 file1
ID2 MI1_A MI2_A
1 0.4 -0.4
2 0.8 0

# 7  
Old 02-22-2016
I'm having trouble understanding your example.

In File1 we are using data from columns with headings:
Code:
ID2 M11_A M12_A

and multiplying values in those columns with data from rows with the data in the 1st two columns containing the data:
Code:
M11 A
M12 B

and producing output with the headings:
Code:
ID2 M1_A M2_A

Why are all three of these sets of names different? I can understand if you're saying we should completely ignore the 1st two columns in File2, but I'm not sure that I understand the transformation that you want to happen when moving headings from File1 to your output file. Is it just that 2nd character of each of the headings (except ID2) copied from File1 are to be deleted when printing the headings in the output file? Why are the headings for the fields used in File1 copied to the output file unchanged (like RudiC did in his suggestion)?
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Homework & Coursework Questions

Multiplication Table in UNIX

How can I produce this kind of output? Enter a number: 3 MULTIPLICATION TABLE: 0 1 2 3 1 1 2 3 2 2 4 6 3 3 6 9 When you enter a number, it should show you the corresponding multiplication table. Plus we need to use for loops that I do not actually know. Thanks in advance! Here is my... (2 Replies)
Discussion started by: larkha
2 Replies

2. UNIX for Beginners Questions & Answers

Matrix multiplication

I have two files. Row id in File1 matches the column id in file2 (starting from column7 )except the last 2 characters. File1 has 50 rows and File 2 has 56 columns. If the id matches I want to multiply the value in column3 of File1 to the entire column in File2. and in the final output print only... (11 Replies)
Discussion started by: Akang
11 Replies

3. UNIX for Dummies Questions & Answers

Merge matrices

Hello all, I have square matrices that look like the following, I want to merge these matrices together, and add the file names as headers. This is a simple example with two variables, actually I have ~1500 variables and 10 files. The order of variables in the matrices are consistent. Please... (2 Replies)
Discussion started by: senhia83
2 Replies

4. Shell Programming and Scripting

Multiplication of array elements

Hi, I can't find out how to create correct code to get multiplication of each elements of array. Let's say I enter array into command line (2 3 4 5 6 8) and i need output 2*3*4*5*6*8=5760. I tried this one, but answer is 0. for i in $@; do mult=$((mult*i))done echo "mult: " $mult ... (4 Replies)
Discussion started by: rimasbimas
4 Replies

5. UNIX for Advanced & Expert Users

Vector base Cosine Similarity for two Matrices -- R in UNIX

Dear All, I am facing a problem and I would be Thankful if you can help Hope this is the right place to ask this question I have two matrices of (row=10, col=3) and I want to get the cosine similarity between two lines (vectors) of each file --> the result should be (10,1) of cosine measures I... (10 Replies)
Discussion started by: A-V
10 Replies

6. Programming

C multiplication with GCC

Hi all, newbie here. Does anyone know if it is possible to use GCC or Clang to multiply two unsigned numbers and have it use for intel instructions, the mull instruction or an imul. I can't figure how to word this to accomplish this task: (int)(((unsigned long long)result * (unsigned)2290649225)... (4 Replies)
Discussion started by: pheonix
4 Replies

7. UNIX for Dummies Questions & Answers

Multiplication using bc in a for loop

Hi, I would like to carry out a multiplication in a for loop but some how I get always zero. The result of the multiplication must be assigned to the variable x. Here is teh code for (( i=1;i<=15;i++)); do x=$( printf "%s\n " 'scale = 10; i*5.0*335.0*3.0/1000.0' | bc) echo $x $i... (5 Replies)
Discussion started by: f_o_555
5 Replies

8. UNIX for Dummies Questions & Answers

Exact Multiplication

Hi, I am writing a script in Bourne shell #!/bin/sh used=`quota -v | tail -1 | awk '{print $2}'` total=`quota -v | tail -1 | awk '{print $3}'` echo "$used" echo "$total" perc=`expr ${used} / ${total} * 100 | bc` echo "$perc" I want to get a percentage of quota used to total limit I... (5 Replies)
Discussion started by: desai.rishabh
5 Replies

9. Shell Programming and Scripting

using awk multiplication

Suppose i have a file A 1*2*3*4 2*4*4*22 and second file B 2*3*4*5 4*4*6*7 By multiplying file A by file B that is file A by first column in file B respectively output shud be 2*6*12*20 8*16*24*154 my code is =$1 next } {for (f=1;f<=NF;f++) (2 Replies)
Discussion started by: cdfd123
2 Replies

10. Linux

Multiplication with Fractions

Hello there, how do i multiply a fraction and a whole number? Example 20% of 50,000. I had gotten 0.2 using the following: chk=echo 20 100 | awk `{print $1/$2}` echo $chk $chk \* 50000 displays the error: non-numeric expression. (1 Reply)
Discussion started by: alby
1 Replies
Login or Register to Ask a Question