Matrix multiplication


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Matrix multiplication
# 1  
Old 03-03-2016
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 Column2 and column7 onwards from file2. Any awk or R suggestions?

Code:
File1
P1  A   -0.468018   -3.49806    
P2  A   0.0903727   0.675471    
P3  C   0.441187    3.29752 
P4  C   0.240075    1.79437 


File2
ID1 ID2 ID3 ID4 ID5 ID6 P1_A P2_A P3_C........
0 A01 0 0 0 0 0 2 1 
0 A04 0 0 0 0 1 1 0 
0 E05 0 0 0 0 0 1 2 
0 G06 0 0 0 0 2 0 2 

Output(I need the multiplication values to be printed to the final output file. Like in row2 & column2 of output file 0*-0.468018=0, so i want 0 to be printed and so on.)
ID2  P1 P2 P3........
A01  0*-0.468018 2*0.0903727 ....
A04  1*-0.468018 1*0.0903727...
E05  0*-0.468018 1*0.0903727....
G06  2*-0.468018 0*0.0903727...

This is what i have tried in R. But it doesn't give the desired output.I'll appreciate any help. TIA!
Code:
for(i in 1:nrow(file2)){
file2[i,2:6]<-file2[,2:6]*file1[match(substr(colnames(file2)[i],1,2),file1[,1]),3]
}
file2

file2

Last edited by Akang; 03-03-2016 at 10:53 PM..
# 2  
Old 03-04-2016
What's wrong with the solution presented here ? After SMALL adaption, it results in
Code:
ID2 P1_A P2_A P3_C........
A01 0 0.180745 0.441187
A04 -0.468018 0.0903727 0
E05 0 0.0903727 0.882374
G06 -0.936036 0 0.882374

# 3  
Old 03-04-2016
@RudiC Nothing wrong..but I am pretty new to programming. So am struggling with adapting the awk script to my current need.
# 4  
Old 03-04-2016
Any attempts/ideas/thoughts? What would be the logics needed?
# 5  
Old 03-04-2016
1. Partial id matching, like i tried in R using match(substr)
2. if id matches,store the value file1$3
3.Multiply F[file1]*C[file2]
4.Print
5.Repeat till the end of both files

That's what I can think of.
# 6  
Old 03-04-2016
I was talking of ideas how to mofdify that quoted script.
Use $1 without suffix for indexing T in the first file, and use a substr of $i in the second.
# 7  
Old 03-04-2016
I changed
Code:
T[$1 SFX] = $3 to T[$1] = $3

but I dont understand
use a
Code:
substr  of $i

in the second

---------- Post updated at 05:42 PM ---------- Previous update was at 05:28 PM ----------

I changed
Code:
T[$1 SFX] = $3 to T[$1] = $3

but I dont understand
use a
Code:
substr  of $i

in the second

---------- Post updated at 05:48 PM ---------- Previous update was at 05:42 PM ----------

I changed
Code:
T[$1 SFX] = $3 to T[$1] = $3

but I dont understand
use a
Code:
substr  of $i

in the second

---------- Post updated at 05:55 PM ---------- Previous update was at 05:48 PM ----------

I changed
Code:
T[$1 SFX] = $3 to T[$1] = $3

but I dont understand
use a
Code:
substr  of $i

in the second
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 Dummies Questions & Answers

Multiplication of two matrices

Hi there! I have two files like below File1(with a header, ~1000 rows, ~50 columns) 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) MI1 A 0.4 3.1 MI2 B -0.2 0.1 Output ID2 M1_A M2_A 1 1*0.4 2*-0.2 2 2*0.4 0*-0.2 ... (22 Replies)
Discussion started by: Akang
22 Replies

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

4. Ubuntu

How to convert full data matrix to linearised left data matrix?

Hi all, Is there a way to convert full data matrix to linearised left data matrix? e.g full data matrix Bh1 Bh2 Bh3 Bh4 Bh5 Bh6 Bh7 Bh1 0 0.241058 0.236129 0.244397 0.237479 0.240767 0.245245 Bh2 0.241058 0 0.240594 0.241931 0.241975 ... (8 Replies)
Discussion started by: evoll
8 Replies

5. UNIX for Dummies Questions & Answers

Matrix multiplication with different files

Hi, i have file1 which looks like: x1 y1 z1 x2 y2 z2 ...(and so on) and file2 which looks like: a11 a12 a13 a21 a22 a23 a31 a32 a33 and i want to replace file1 with the following values: x1' y1' z1' x2' y2' z2' ...(and so on) (2 Replies)
Discussion started by: ezitoc
2 Replies

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

7. Shell Programming and Scripting

diagonal matrix to square matrix

Hello, all! I am struggling with a short script to read a diagonal matrix for later retrieval. 1.000 0.234 0.435 0.123 0.012 0.102 0.325 0.412 0.087 0.098 1.000 0.111 0.412 0.115 0.058 0.091 0.190 0.045 0.058 1.000 0.205 0.542 0.335 0.054 0.117 0.203 0.125 1.000 0.587 0.159 0.357... (11 Replies)
Discussion started by: yifangt
11 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