Sponsored Content
Top Forums Shell Programming and Scripting diagonal matrix to square matrix Post 302351613 by rwu on Wednesday 9th of September 2009 05:47:38 AM
Old 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

matrix pointer

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

Matrix

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

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

4. Shell Programming and Scripting

awk? adjacency matrix to adjacency list / correlation matrix to list

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

Table to Matrix

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

Square matrix to columns

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

Maybe by AWK: printing help diagonal matrix characters into line

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

MATRIX to CSV

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

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
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)
All times are GMT -4. The time now is 10:08 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy