Matrix column Shift - Java java.lang

Java examples for java.lang:Math Matrix

Description

Matrix column Shift

Demo Code

/*******************************************************************************
 * Copyright 2013 Karlsruhe Institute of Technology. This Work has been partially supported by the EIT ICT Labs funded research project Towards a Mobile Cloud (activity CLD 12206).
 * //from ww  w  .  j av a  2s  . c om
 * 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.
 ******************************************************************************/
//package com.java2s;

public class Main {
    public static int[][] columnShift(int[][] input, int shiftBy) {
        if (shiftBy == 0) {
            return input;
        }

        int rows = input.length;
        int columns = input[0].length;
        for (; shiftBy < 0; shiftBy += columns) {
            // Using % mod operator to come back to a +ve column value wont work.
            // So we're shifting the shiftBy value (above) until it's in the appropriate
            // range 0 .. columns-1
        }
        int[][] output = new int[rows][columns];
        for (int r = 0; r < rows; r++) {
            for (int c = 0; c < columns; c++) {
                output[r][(c + shiftBy) % columns] = input[r][c];
            }
        }
        return output;
    }

    public static double[][] columnShift(double[][] input, int shiftBy) {
        if (shiftBy == 0) {
            return input;
        }

        int rows = input.length;
        int columns = input[0].length;
        for (; shiftBy < 0; shiftBy += columns) {
            // Using % mod operator to come back to a +ve column value wont work.
            // So we're shifting the shiftBy value (above) until it's in the appropriate
            // range 0 .. columns-1
        }
        double[][] output = new double[rows][columns];
        for (int r = 0; r < rows; r++) {
            for (int c = 0; c < columns; c++) {
                output[r][(c + shiftBy) % columns] = input[r][c];
            }
        }
        return output;
    }
}

Related Tutorials