09-09-2009
Something like this would probably be better done with perl, as you can put the whole matrix in memory.
If you still want to use a shell script, here is one. By the way, I think you meant a symmetric matrix, and not a diagonal matrix.
#!/bin/bash
PATH=/usr/bin:/bin
export PATH
# length of each number in the matrix
rlen=5
# Right-justify the matrix
awk '{ if (ne == "") { ne = NF; } indent = (NR - 1) * (rlen + 1); printf("%" indent "s", ""); print }' rlen="$rlen" > temp.$$
# Fill in the missing parts
cat -n temp.$$ | while read line; do
set -- $line
# Get the row number
n="$1"
# Discard the row number and the 1.000 value
shift 2
# Calculate the start and end positions of the column
# If you're using Bourne shell, you'll have to use expr or similiar.
s=$(( ( $n -1 ) * ( $rlen + 1 ) + 1 ))
e=$(( $s + $rlen - 1 ))
# Get the values of the column for the preceding rows in the matrix
head -$n temp.$$ | cut -c$s-$e | tr '\n' ' '
# Output the rest of the row from the input
echo $*
done
# Clean up
rm -f temp.$$
9 More Discussions You Might Find Interesting
1. Programming
Can anyone tell me what the following statements do?
float (*tab);
tab=(float (*)) calloc(MAXCLASS,
(MAXCLASS+1)*sizeof(float)); (3 Replies)
Discussion started by: littleboyblu
3 Replies
2. Shell Programming and Scripting
Hi All
I would like to merge multiple files with the same row and column size into a matrix format
In a folder I have multiple files in the following format
vi 12.txt
a 1
b 5
c 7
d 0
vi 45.txt
a 3
b 6
c 9
d 2
vi 9.txt
a 4 (7 Replies)
Discussion started by: Lucky Ali
7 Replies
3. Ubuntu
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
4. Shell Programming and Scripting
Hi everyone
I am very new at awk but think that that might be the best strategy for this. I have a matrix very similar to a correlation matrix and in practical terms I need to convert it into a list containing the values from the matrix (one value per line) with the first field of the line (row... (5 Replies)
Discussion started by: stonemonkey
5 Replies
5. Shell Programming and Scripting
Hi,
I have a table in the format:
1 0 -1 1 0
2 0 1 -1 0 0 0
3 0 1 1 0 0 0 0 0 0
etc.
I am trying to input this to a program, however it is complaining about the fact that it is not in matrix format. How do I add 0's to end of the rows to make them even?
Thanks in advance! (2 Replies)
Discussion started by: Rhavin
2 Replies
6. Shell Programming and Scripting
Hello all,
I am quite new in this but I need some help to keep going with my analysis.
I am struggling with a short script to read a square matrix and convert it in two collumns.
A B C D
A 0.00 0.06 0.51 0.03
B 0.06 0.00 0.72 0.48
C 0.51 0.72 0.00 ... (7 Replies)
Discussion started by: EvaAM
7 Replies
7. Shell Programming and Scripting
Hi Experts,
I want to print this charts diagonal data into straight lines.
This is a matrix 24X24 Horizontal and vertical.
- I want to print all the diagonal cutting characters into straight line:
Data:
E F S S A H A L L A T M C N O T S O B O D U Q H
I W I B N L O C N I L N L A N S I N... (9 Replies)
Discussion started by: rveri
9 Replies
8. Shell Programming and Scripting
Hello friends,
A big question for the UNIX INTELLIGENCE
I have a CSV file as follows:
VALUE,USER1,relatedUSER1,relatedUSER2
-1,userA,userB,userC
1,userN,userD,userB
0,userF,userH,userG
0,userT,userH,userB
1,userN,userB,userA
-1,userA,userF,userC
0,userF,userH,userG... (15 Replies)
Discussion started by: kraterions
15 Replies
9. UNIX for Beginners Questions & Answers
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
LEARN ABOUT DEBIAN
mcxmap
mcxmap(1) USER COMMANDS mcxmap(1)
NAME
mcxmap - permute or remap the indices of graphs and matrices.
SYNOPSIS
mcxmap -imx fname (input) [-o fname (output)] [-make-map (output map file name)] [-make-mapc (output map file name)] [-make-mapr (output map
file name)] [-cmul a (coefficient)] [-cshift b (translate)] [-rmul c (coefficient)] [-rshift d (translate)] [-mul e (coefficient)] [-shift f
(translate)] [-map fname (row/col map file)] [-rmap fname (row map file)] [-cmap fname (column map file)] [-mapi fname (row/col map file
(use inverse))] [-rmapi fname (row map file (use inverse))] [-cmapi fname (column map file (use inverse))] [-tab fname (read (and map) tab
file)]
DESCRIPTION
This utility relabels graphs or matrices. Its main use is in applying a map file to a given matrix or graph. A map file contains a so called
map matrix in mcl format that has some special properties (given further below). The functionality of mcxmap can also be provided by mcx, as
a mapped matrix (i.e. the result of applying a map matrix to another matrix) is simply the usual matrix product of a matrix and a map
matrix. However, mcx will construct a new matrix and leave the original matrix to be mapped alone. When dealing with huge matrices, consid-
erable gains in efficiency memory-wise and time-wise can be achieved by doing the mapping in-place. This is what mcxmap does. In the
future, its functionality may be embedded in mcx with new mcx operators.
The special properties of a map matrix are
o The column domain and row domain are of the same cardinality.
o Each column has exactly one entry.
o Each row domain index occurs in exactly one column.
These properties imply that the matrix can be used as a map from the column domain onto the row domain. An example map matrix is found in
the EXAMPLES Section.
OPTIONS
-o fname (output file)
Output file.
-imx fname (input file)
Input file.
-map fname (row/col map file))
-rmap fname (row map file)
-cmap fname (column map file)
-mapi fname (row/col map file (use inverse))
-rmapi fname (row map fil (use inverse))
-cmapi fname (column map fil (use inverse))
Different ways to specify map files.
-make-map (output map file name)
-make-mapc (output map file name)
-make-mapr (output map file name)
Generate a map that maps the specified domain onto the appropriate canonical domain and write the map matrix to file.
-cmul a (coefficient)
-cshift b (translate)
These options have affect if neither a column map file nor column canonification is specified. If any of the first two options is used,
column indices i are mapped to a*i+b.
-rmul c (coefficient)
-rshift d (translate)
These options have affect if neither a row map file nor row canonification is specified. If any of the first two options is used,
indices i are mapped to c*i+d.
-mul e (coefficient)
-shift f (translate)
If a map file is specified for a given domain, neither a map file nor canonification is specified. If any of the first two options is
used, the indices i will be mapped to e*i+f.
-tab fname (read (and map) tab file)
This option requires the -map option. mcxmap will output the mapped tab definition.
EXAMPLES
The matrix below has two canonical domains which are identical. It denotes a map of the canonical domain onto itself, in which node 0 is
relabeled to 8, node 1 is relabeled to 5, et cetera.
(mclheader
mcltype matrix
dimensions 12x12
)
(mclmatrix
begin
0 8 $
1 5 $
2 3 $
3 2 $
4 4 $
5 6 $
6 7 $
7 9 $
8 1 $
9 10 $
10 11 $
11 0 $
)
AUTHOR
Stijn van Dongen.
SEE ALSO
mcxio(5), mcx(1), mcxsubs(1), and mclfamily(7) for an overview of all the documentation and the utilities in the mcl family.
mcxmap 12-068 8 Mar 2012 mcxmap(1)