两个二进制矩阵的交错
Interlacing of two Binary Matrices
我有一个 2x14 二进制矩阵 P,我已将其存储到两个 2x7 阶矩阵 P1 和 P2 中。我需要交错这两个矩阵 P1 和 P2,即 P1 的第一个元素和 P2 的第一个元素被取出并存储到另一个矩阵中。当两个矩阵的第一行都完成后,我应该得到一个新的 2x7 阶矩阵 L1。
我取的矩阵是
0 0 0 0 0 0 1
0 0 0 0 0 1 1
这是 P1 矩阵。
0 0 0 0 0 1 0
0 0 0 0 1 0 0
这是P2矩阵。
交错 P1 和 P2 的第一行后,结果矩阵应为
0 0 0 0 0 0 0
0 0 0 0 1 1 0
这应该保存到 L1 矩阵中。
0 0 0 0 0 0 0
0 0 1 1 0 1 0
这应该保存到 L2 矩阵中。
我试过将整个矩阵保存到一个 2x14 矩阵中,但没有得到所需的输出。
这是将十进制数转换成位并保存成两个2x7矩阵。
public static void main(String[] args) throws Exception {
int[][] p = {{1, 2}, {3, 4}};
int[][] P = new int[2][14];
int[][] P1 = new int[2][7];
int[][] P2 = new int[2][7];
int[][] L1 = new int[2][14];
for (int r = 0; r < 2; ++r) {
for (int c = 0; c < 14; ++c) {
P[r][c] = (p[r][c / 7] >> (7 - c % 7 - 1)) & 1;
System.out.print(" " + P[r][c]);
}
System.out.println();
}
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 7; j++) {
P1[i][j] = P[i][j];
}
}
for (int i = 0; i < 2; i++) {
for (int j = 7; j < 14; j++) {
P2[i][j - 7] = P[i][j];
}
}
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 7; j++) {
System.out.print(" "+P1[i][j]);
}
System.out.println();
}
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 7; j++) {
System.out.print(" "+P2[i][j]);
}
System.out.println();
}
我试过的隔行扫描部分是。
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 14; j+=2) {
if(i==1&&j==0)
;
else
L1[i][j] = P1[i][j/2];
if(j/2==3)
L1[1][0] = P2[i][j/2];
else
L1[i][j+1] = P2[i][j/2];
}
}
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 14; j++) {
System.out.print(" " + L1[i][j]);
}
System.out.println();
}
为此,我得到的输出为
0 0 0 0 0 0 0 0 0 0 0 1 1 0
0 0 0 0 0 0 0 0 0 1 1 0 1 0
粗体部分应该在矩阵的第二行。
我想出了解决办法。
这是我所做的。
public class BinaryConv {
public static void main(String[] args) throws Exception {
int[][] p = {{1, 2}, {3, 4}};
int[][] P = new int[2][14];
int[][] P1 = new int[2][7];
int[][] P2 = new int[2][7];
int[] L1 = new int[28];
for (int r = 0; r < 2; ++r)
{
for (int c = 0; c < 14; ++c)
{
P[r][c] = (p[r][c / 7] >> (7 - c % 7 - 1)) & 1;
System.out.print(" " + P[r][c]);
}
System.out.println();
}
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 7; j++)
{
P1[i][j] = P[i][j];
}
}
for (int i = 0; i < 2; i++)
{
for (int j = 7; j < 14; j++)
{
P2[i][j - 7] = P[i][j];
}
}
System.out.println("The sub matrix 'P1' is");
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 7; j++)
{
System.out.print(" "+P1[i][j]);
}
System.out.println();
}
System.out.println("The sub matrix 'P2' is");
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 7; j++)
{
System.out.print(" "+P2[i][j]);
}
System.out.println();
}
int l=0;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 7; j++)
{
L1[l] = P1[i][j];
L1[l+1] = P2[i][j];
l+=2;
}
}
int k =0;
for (int i = 0; i < 2; i++)
{
for(int j=0;j<7;j++)
{
P1[i][j] = L1[k];
P2[i][j] = L1[k+14];
k++;
}
}
System.out.println("The interlaced binary matrix 'P1' is");
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 7; j++)
{
System.out.print(" "+P1[i][j]);
}
System.out.println();
}
System.out.println("The interlaced binary matrix 'P2' is");
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 7; j++)
{
System.out.print(" "+P2[i][j]);
}
System.out.println();
}
}
}
输出看起来像这样
0 0 0 0 0 0 1 0 0 0 0 0 1 0
0 0 0 0 0 1 1 0 0 0 0 1 0 0
子矩阵 'P1' 是
0 0 0 0 0 0 1
0 0 0 0 0 1 1
子矩阵 'P2' 是
0 0 0 0 0 1 0
0 0 0 0 1 0 0
交错的二进制矩阵 'P1' 是
0 0 0 0 0 0 0
0 0 0 0 1 1 0
交错的二进制矩阵'P2'是
0 0 0 0 0 0 0
0 0 1 1 0 1 0
我有一个 2x14 二进制矩阵 P,我已将其存储到两个 2x7 阶矩阵 P1 和 P2 中。我需要交错这两个矩阵 P1 和 P2,即 P1 的第一个元素和 P2 的第一个元素被取出并存储到另一个矩阵中。当两个矩阵的第一行都完成后,我应该得到一个新的 2x7 阶矩阵 L1。
我取的矩阵是
0 0 0 0 0 0 1
0 0 0 0 0 1 1
这是 P1 矩阵。
0 0 0 0 0 1 0
0 0 0 0 1 0 0
这是P2矩阵。
交错 P1 和 P2 的第一行后,结果矩阵应为
0 0 0 0 0 0 0
0 0 0 0 1 1 0
这应该保存到 L1 矩阵中。
0 0 0 0 0 0 0
0 0 1 1 0 1 0
这应该保存到 L2 矩阵中。
我试过将整个矩阵保存到一个 2x14 矩阵中,但没有得到所需的输出。
这是将十进制数转换成位并保存成两个2x7矩阵。
public static void main(String[] args) throws Exception {
int[][] p = {{1, 2}, {3, 4}};
int[][] P = new int[2][14];
int[][] P1 = new int[2][7];
int[][] P2 = new int[2][7];
int[][] L1 = new int[2][14];
for (int r = 0; r < 2; ++r) {
for (int c = 0; c < 14; ++c) {
P[r][c] = (p[r][c / 7] >> (7 - c % 7 - 1)) & 1;
System.out.print(" " + P[r][c]);
}
System.out.println();
}
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 7; j++) {
P1[i][j] = P[i][j];
}
}
for (int i = 0; i < 2; i++) {
for (int j = 7; j < 14; j++) {
P2[i][j - 7] = P[i][j];
}
}
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 7; j++) {
System.out.print(" "+P1[i][j]);
}
System.out.println();
}
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 7; j++) {
System.out.print(" "+P2[i][j]);
}
System.out.println();
}
我试过的隔行扫描部分是。
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 14; j+=2) {
if(i==1&&j==0)
;
else
L1[i][j] = P1[i][j/2];
if(j/2==3)
L1[1][0] = P2[i][j/2];
else
L1[i][j+1] = P2[i][j/2];
}
}
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 14; j++) {
System.out.print(" " + L1[i][j]);
}
System.out.println();
}
为此,我得到的输出为
0 0 0 0 0 0 0 0 0 0 0 1 1 0
0 0 0 0 0 0 0 0 0 1 1 0 1 0
粗体部分应该在矩阵的第二行。
我想出了解决办法。
这是我所做的。
public class BinaryConv {
public static void main(String[] args) throws Exception {
int[][] p = {{1, 2}, {3, 4}};
int[][] P = new int[2][14];
int[][] P1 = new int[2][7];
int[][] P2 = new int[2][7];
int[] L1 = new int[28];
for (int r = 0; r < 2; ++r)
{
for (int c = 0; c < 14; ++c)
{
P[r][c] = (p[r][c / 7] >> (7 - c % 7 - 1)) & 1;
System.out.print(" " + P[r][c]);
}
System.out.println();
}
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 7; j++)
{
P1[i][j] = P[i][j];
}
}
for (int i = 0; i < 2; i++)
{
for (int j = 7; j < 14; j++)
{
P2[i][j - 7] = P[i][j];
}
}
System.out.println("The sub matrix 'P1' is");
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 7; j++)
{
System.out.print(" "+P1[i][j]);
}
System.out.println();
}
System.out.println("The sub matrix 'P2' is");
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 7; j++)
{
System.out.print(" "+P2[i][j]);
}
System.out.println();
}
int l=0;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 7; j++)
{
L1[l] = P1[i][j];
L1[l+1] = P2[i][j];
l+=2;
}
}
int k =0;
for (int i = 0; i < 2; i++)
{
for(int j=0;j<7;j++)
{
P1[i][j] = L1[k];
P2[i][j] = L1[k+14];
k++;
}
}
System.out.println("The interlaced binary matrix 'P1' is");
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 7; j++)
{
System.out.print(" "+P1[i][j]);
}
System.out.println();
}
System.out.println("The interlaced binary matrix 'P2' is");
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 7; j++)
{
System.out.print(" "+P2[i][j]);
}
System.out.println();
}
}
}
输出看起来像这样
0 0 0 0 0 0 1 0 0 0 0 0 1 0
0 0 0 0 0 1 1 0 0 0 0 1 0 0
子矩阵 'P1' 是
0 0 0 0 0 0 1
0 0 0 0 0 1 1
子矩阵 'P2' 是
0 0 0 0 0 1 0
0 0 0 0 1 0 0
交错的二进制矩阵 'P1' 是
0 0 0 0 0 0 0
0 0 0 0 1 1 0
交错的二进制矩阵'P2'是
0 0 0 0 0 0 0
0 0 1 1 0 1 0