2017-12-22 14 views
-2

私は以下、この例のように、2Dマトリックス:水平2D行列変換(スケール) - JAVASCRIPT

00000000000000000000000000000000000000000000000000 
00110000011000111111000110000000110000001111100000 
00110000011000110000000110000000110000010000010000 
00110000011000110000000110000000110000010000010000 
00111111111000111111000110000000110000010000010000 
00110000011000110000000110000000110000010000010000 
00110000011000110000000110000000110000010000010000 
00110000011000111111000111111000111111001111100000 
00000000000000000000000000000000000000000000000000 

と私は、その特定の因子(e.g 2.0 or 0.5, ...)と水平行列をスケーリングすることによって、この変換行列をしたいです行列は、その後次のようになります。

000000000000000000000000000000000000000000000000000000000000000000000000000000 ... 
00111100000000000111100000011111111111111000000111100000000000000 ... 
00111100000000000111100000011110000000000000000111100000000000000 ... 
00111100000000000111100000011110000000000000000111100000000000000 ... 
00111111111111111111100000011111111111111000000111100000000000000 ... 
00111100000000000111100000011110000000000000000111100000000000000 ... 
00111100000000000111100000011110000000000000000111100000000000000 ... 
00111100000000000111100000011111111111111000000111111111111110000 ... 
0000000000000000000000000000000000000000000000000000000000000000000000000000000 ... 

または

00000000000000000000000000000000000 
00100010011110010000010000001110000 
00100010010000010000010000010001000 
00100010010000010000010000010001000 
00111110011110010000010000010001000 
00100010010000010000010000010001000 
00100010010000010000010000010001000 
00100010011110011110011110001110000 
00000000000000000000000000000000000 
私が継続するか見当もつかないので、だから私はいくつかのコードのアイデアについて、スーパー感謝するでしょう

var matrix = [ 
    '001000100001', 
    '001111101100', 
    '001111101100', 
    '001000100001' 
] 

var matrix = [ 
 
'00000000000000000000000000000000000000000000000000', 
 
'00110000011000111111000110000000110000001111100000', 
 
'00110000011000110000000110000000110000010000010000', 
 
'00110000011000110000000110000000110000010000010000', 
 
'00111111111000111111000110000000110000010000010000', 
 
'00110000011000110000000110000000110000010000010000', 
 
'00110000011000110000000110000000110000010000010000', 
 
'00110000011000111111000111111000111111001111100000', 
 
'00000000000000000000000000000000000000000000000000'] 
 

 

 
Array.prototype.scale_horizontal = function(factor) { 
 
    var matrix=this; 
 
    var new_matrix=new_matrix(matrix.length, matrix[0].length*factor, 0) 
 
    for (var y=0; y<matrix.length; y++) { 
 
    for (var x=0; x<matrix[y].length; x++) { 
 
    // no idea 
 
    } 
 
    } 
 

 
} 
 

 

 

 
function new_matrix(rows, cols, value) { 
 
\t var arr = []; 
 
\t for (var i = 0; i < rows; i++) { 
 
\t \t arr.push([]); 
 
\t \t arr[i].push(new Array(cols)); 
 
\t \t for (var j = 0; j < cols; j++) arr[i][j] = value; 
 
\t };return arr; 
 
}

私のjavascriptの "マトリックス" - - arrayは次のようになりますこの関数をコーディングする。事前に

どうもありがとう、ジョナス

+0

は「ロジックです常に2つの00で開始し、同じ数のチャンクに係数 'を掛けます。非整数の場合はどうでしょうか?エラー?切り上げする?丸めますか?あなたはいつも最初の2次元行列から始めますか、あるいは複数の変換がお互いにうまくいくのでしょうか? – Shilly

答えて

0

あなたは一つの関数にそれをすべて置くことができます。

function scaleHorizontal(matrix, factor) { 
    var scaledMatrix = []; 
    for(var i = 0; i < matrix.length; i++) { 
     var row = ''; 
     for(var j = 0; j <= matrix[i].length - 1; j += (1/factor)) { 
      row += matrix[i][Math.round(j)]; 
     } 
     scaledMatrix.push(row); 
    } 
    return scaledMatrix; 
} 

出力例:

> scaleHorizontal(matrix, 0.25) 
["0000000000000", 
"0000101010110", 
"0000001010000", 
"0000001010000", 
"0110101010000", 
"0000001010000", 
"0000001010000", 
"0000101111110", 
"0000000000000"] 
関連する問題