在perl中转置矩阵

swa*_*l90 1 perl matrix

我正在尝试对文件中包含的数据执行转置.数据如下:

1 2 3 4 5

2 3 4 5 6

4 5 6 7 9

4 3 7 6 9

我得到的结果如下,这是不正确的.我没有得到代码中的错误,因为最后一列未正确转置.解决方案......

在此输入图像描述

码:

#!/usr/bin/perl
use strict;
use warnings;

my @dependent;    # matrix of dependent variable

# Reading the data from text file to the matrix
open( DATA, "<example.txt" ) or die "Couldn't open file , $!"; #depenedent

# Storing data into the array in matrix form
while ( my $linedata = <DATA> ) {
    push @dependent, [ split '\t', $linedata ];
}
my $m = @dependent;
#print  "$m\n";
my $n = @{ $dependent[1] };
#print  $n;


#print "Matrix of dependent variables Y \n";
for ( my $i = 0; $i < $m; $i++ ) {
    for ( my $j = 0; $j < $n; $j++ ) {
        #print $dependent[$i][$j]," ";
    }
    #print "\n";
}

my @transpose;
for ( my $i = 0; $i < $n; $i++ ) {
    for ( my $j = 0; $j < $m; $j++ ) {
        $transpose[$i][$j] = $dependent[$j][$i];
    }
}


for ( my $i = 0; $i < $n; $i++ ) {
    for ( my $j = 0; $j < $m; $j++ ) {
        print $transpose[$i][$j], " ";
    }
    print "\n";
}
Run Code Online (Sandbox Code Playgroud)

hob*_*bbs 6

在分割之前,在阅读时扼杀数据; 您的奇怪输出是由输入的每一行的最后一个元素引起的,它仍然附加了换行符.

就像旁注一样,DATA选择文件句柄并不是一个很好的名字; perl已经定义了一个名为DATA特殊内置文件句柄,用于读取嵌入在脚本或模块中的数据,因此自己使用该名称会导致混淆:)