编写程序实现矩阵转置
时间: 2023-06-29 10:03:40 浏览: 142
以下是 Python 代码实现矩阵转置:
```python
def transpose_matrix(matrix):
# 获取矩阵的行数和列数
rows = len(matrix)
cols = len(matrix[0])
# 创建一个新矩阵用于存储转置后的数据
transposed_matrix = [[0 for j in range(rows)] for i in range(cols)]
# 循环遍历原矩阵,并将每个元素赋值到新矩阵的对应位置
for i in range(rows):
for j in range(cols):
transposed_matrix[j][i] = matrix[i][j]
return transposed_matrix
# 测试代码
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(transpose_matrix(matrix))
```
输出:
```
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
```
该代码使用两层循环遍历原矩阵,并将每个元素赋值到新矩阵的对应位置,从而实现了矩阵转置。
相关问题
编写程序,实现矩阵转置。
矩阵转置是一种常见的线性代数操作,它涉及到将矩阵的行变成列,或者将列变成行。在编程中,可以使用循环或者二维数组切片来实现矩阵转置。这里以Python为例,假设有一个二维列表(列表嵌套列表)代表矩阵:
```python
def transpose(matrix):
# 获取矩阵的行数和列数
rows = len(matrix)
cols = len(matrix[0]) if matrix else 0
# 创建一个新的转置后的矩阵
transposed = [[0] * rows for _ in range(cols)]
# 遍历原矩阵并填充转置矩阵
for i in range(rows):
for j in range(cols):
transposed[j][i] = matrix[i][j]
return transposed
# 示例:
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
transposed_matrix = transpose(matrix)
```
在这个例子中,`transpose`函数接收一个矩阵,然后创建一个新矩阵,逐元素复制原矩阵的值到新的位置,完成转置。
利用二维数组实现矩阵转置,键盘输入矩阵行列和元素,显示初始矩阵,将矩阵转置,显示转置后的矩阵。用c语言编写代码
在C语言中,我们可以使用二维数组(array of arrays)来实现矩阵的转置。这里是一个简单的示例,它会提示用户输入矩阵的行数、列数以及每个元素,然后展示原始矩阵和转置后的矩阵:
```c
#include <stdio.h>
// 函数声明
void printMatrix(int matrix[][10], int rows, int cols);
int transpose(int matrix[][10], int rows, int cols);
int main() {
int rows, cols;
// 获取矩阵的行数和列数
printf("请输入矩阵的行数: ");
scanf("%d", &rows);
printf("请输入矩阵的列数: ");
scanf("%d", &cols);
// 确保矩阵的大小足够存储数据
if (rows * cols > 10) {
printf("矩阵过大,无法处理。\n");
return 1;
}
// 初始化并打印原始矩阵
int matrix[rows][cols];
printf("\n原始矩阵:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
// 转置矩阵
transpose(matrix, rows, cols);
// 打印转置后的矩阵
printf("\n转置后的矩阵:\n");
for (int i = 0; i < cols; i++) {
for (int j = 0; j < rows; j++) {
printf("%d ", matrix[j][i]);
}
printf("\n");
}
return 0;
}
// 矩阵转置函数
void transpose(int matrix[][10], int rows, int cols) {
for (int i = 0; i < rows; i++) {
for (int j = i; j < cols; j++) {
// 交换矩阵中的对应元素
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
```
这个程序首先获取矩阵的尺寸,然后创建一个二维数组来存储矩阵。接着,它打印原始矩阵,调用`transpose`函数进行转置,并再次打印转置后的矩阵。
阅读全文