Here you can find the source of matrixToVectorArray(int M, int N, float[][] a, float[] b)
Parameter | Description |
---|---|
M | number of data points in x direction |
N | number of data points in y direction |
a | 2D array |
b | 1D array |
public static void matrixToVectorArray(int M, int N, float[][] a, float[] b)
//package com.java2s; /*/* ww w . j a v a2s. c om*/ * Copyright 2016 Universidad Nacional de Colombia * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ public class Main { /** * Converts a 2D array into a 1D array leaving the result in {@code b}. The * information on the 1D array is distributed as the rows of the 2D array in * sequence. * * @param M number of data points in x direction * @param N number of data points in y direction * @param a 2D array * @param b 1D array */ public static void matrixToVectorArray(int M, int N, float[][] a, float[] b) { checkDimension(a); if (a.length != M || a[0].length != N || b.length == 0 || b.length != (M * N)) { throw new IllegalArgumentException( "The number of data points in both arrays must be equal and different from zero."); } for (int i = 0; i < M; i++) { System.arraycopy(a[i], 0, b, N * i, N); } } /** * Converts a 2D array into a 1D array leaving the result in {@code b}. The * information on the 1D array is distributed as the rows of the 2D array in * sequence. * * @param M number of data points in x direction * @param N number of data points in y direction * @param a 2D array * @param b 1D array */ public static void matrixToVectorArray(int M, int N, double[][] a, double[] b) { checkDimension(a); if (a.length != M || a[0].length != N || b.length == 0 || b.length != (M * N)) { throw new IllegalArgumentException( "The number of data points in both arrays must be equal and different from zero."); } for (int i = 0; i < M; i++) { System.arraycopy(a[i], 0, b, N * i, N); } } private static void checkDimension(float[][] a) { if (a.length == 0) { throw new IllegalArgumentException("Arrays dimension must be greater than 0."); } else if (a[0].length == 0) { throw new IllegalArgumentException("Arrays dimension must be greater than 0."); } } private static void checkDimension(double[][] a) { if (a.length == 0) { throw new IllegalArgumentException("Arrays dimension must be greater than 0."); } else if (a[0].length == 0) { throw new IllegalArgumentException("Arrays dimension must be greater than 0."); } } }