「矩阵置换java」矩阵置换是什么意思
本篇文章给大家谈谈矩阵置换java,以及矩阵置换是什么意思对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java编程的矩阵变换问题
/*我的想法是,先把二维矩阵转换成一维矩阵,这个循环一下就可以了,然后把输入的二维位置也转换成一维的位置,依此往前替换,补0,然后把这个一维矩阵再转换成二维矩阵**/
public static void main(String[] args) {
int[][] erwei = new int[][]{{1,10,3},{4,55,6},{73,8,9}};
int[] yiwei = toyiwei(erwei);
int x=1,y=2,num=0;
//要移动的元素在一维矩阵上的位置
num = (y-1)*erwei.length+(x-1);
//替换
for(int i=num;iyiwei.length-1;i++){
yiwei[i] = yiwei[i+1];
}
//补0
yiwei[yiwei.length-1]=0;
//转换为二维矩阵
erwei = toerwei(yiwei,erwei.length,erwei[0].length);
//打印
for(int i=0;ierwei.length;i++){
for(int j=0;jerwei[i].length;j++){
System.out.print(erwei[i][j]+" ");
}
System.out.println();
}
}
//二维矩阵转换成一维矩阵
static int[] toyiwei(int[][] erwei)
{
int[] rs = new int[erwei.length*erwei[0].length];
for(int i=0;ierwei.length;i++){
for(int j=0;jerwei[i].length;j++){
rs[i*erwei.length+j] = erwei[i][j];
}
}
return rs;
}
//一维矩阵转换成二维矩阵
static int[][] toerwei(int[] yiwei,int a,int b)
{
int[][] erwei = new int[a][b];
for(int i=0;ia;i++){
for(int j=0;jb;j++){
erwei[i][j]=yiwei[i*a+j];
}
}
return erwei;
}
Java编程:交换矩阵里的两行?
1个3×3的整数矩阵,将它们存入数组 a 中,交换其第一行和最后一行后,再以矩阵格式输出。
java矩阵转置
你的转置意思是 行列交换?
public static Object[][] turnA(Object[][] a){
Object[][] b=new Object[a[0].length][a.length];
for(int i=0;ia.length; i++)
for(int j=0;ja[0].length;j++)
b[j][i]=a[i][j];
return b;
}
这个方法转置的是对象矩阵,因此不能传入基本变量的数组,需要用类型包装器包装。
e.g:
Integer[][] i=new Integer[3][5];
//int[][] i=new int[4][3];
//Can't use here; Integer,Double,String,byte and so on..
Random r=new Random();
for(int j=0;ji.length;j++){
Arrays.fill(i[j], r.nextInt(100));
System.out.println(Arrays.toString(i[j]));
}
Object[][] o=turnA(i);
for(int j=0;jo.length;j++){
System.out.println(Arrays.toString(o[j]));
这是static void main里的一段验证程序,程序最前面需要
import java.util.*;
java的矩阵转置找问题
你的Java矩阵转置程序我帮你改好了,主要问题是应该把矩阵中以主对角线对称的数两两交换,而不是简单赋值,冲掉原来的数,而且for-j循环只要访问主对角线下方的数就可以了,不要访问全矩阵的数,那样会使矩阵主对角线下方的数交换两次,从而等于没有转置.
完整的Java矩阵转置程序如下(改动的地方见注释)
package cn.itcast.chapter01;
public class ZhuanZhi {
public static void main(String[] args) {
int a[][]={{1,2,3},{4,5,6},{7,8,9}};
for(int i=0;ia.length;i++)
{
for(int j=0;ji;j++)//这里把for(int j=0;ja[i].length;j++)改成for(int j=0;ji;j++)只访问主对角线下方的数
{
//这里交换主对角线下方的数和主对角线上方的数
int temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
}
//这里单独输出转置后的矩阵
for(int i=0;ia.length;i++)
{
for(int j=0;ja[i].length;j++)
{
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
}
运行结果
如何用java编写一个矩阵的转置?
int a[][] = {{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4}};
int b[][] = new int [4][7];
for (int i = 0; i 4; i++) {
for (int j = 0; j 7; j++) {
b[i][j] = a[j][i];
}
}
System.out.println("矩阵a:");
for (int i = 0; i 7; i++) {
for (int j = 0; j 4; j++) {
if (j 3) {
System.out.print(a[i][j] + " ");
} else {
System.out.println(a[i][j] + " ");
}
}
}
System.out.println("矩阵a转置:");
for (int i = 0; i 4; i++) {
for (int j = 0; j 7; j++) {
if (j 6) {
System.out.print(b[i][j] + " ");
} else {
System.out.println(b[i][j] + " ");
}
}
}
代码写得烂不要喷我,我想解决思路就是这样吧!
关于矩阵置换java和矩阵置换是什么意思的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。