如何转置非方矩阵?
我有这段用于转置矩阵的代码:
for(j=0; j<col; j++) {
for(k=0; k<row; k++) {
mat2[j][k] = mat[k][j];
}
它似乎适用于方阵,但不适用于非方阵。帮我!
I have this code for transposing a matrix:
for(j=0; j<col; j++) {
for(k=0; k<row; k++) {
mat2[j][k] = mat[k][j];
}
It seems to work on a square matrix but not on a nonsquare matrix. Help me!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
它适用于非方矩阵,但您必须确保
mat2
中的行数与mat
中的列数匹配,反之亦然。即,如果mat
是NxM
矩阵,则mat2
必须是MxN
矩阵。It will work for a non-square matrix, but you have to ensure that the number of rows in
mat2
matches the number of columns inmat
, and vice versa. I.e., ifmat
is anNxM
matrix, thenmat2
must be anMxN
matrix.这是您在应用程序中使用的实际代码吗?因为这是错误的。
for 语句的语法是:
在您的情况下,您应该使用类似这样的内容:
这样就可以转置您的矩阵。
当然,这样你需要事先知道矩阵的维度。另一种方法可能是使用一些用户提供的数据动态初始化矩阵,如下所示:
这样您将动态初始化矩阵,然后可以像以前一样对其进行转置。
Is that the actual code you have used in your application? Because it's wrong.
The syntax for the
for
statement is:In your case you should use something like this:
This way this could transpose your matrix.
Naturally this way you need to know beforehand the dimensions for the matrix. Another way could be to dinamically initialize your matrix by using some User provided data, like this:
This way you'll dinamically initialize a matrix and then you can transpose it the same way as before.
如果 col 是 mat2 中的行数(以及 mat 中的列数),而 row 是 mat2 中的列数(以及 mat 中的行数),那么这应该可行。
你需要一个额外的紧密卷发,但我假设你的代码中有这个。
If col is the number of rows in mat2 (and columns in mat) and row is the number of columns in mat2 (and rows in mat), then this should work.
You need an extra close curly, but I assume you have that in your code.
在 C++ 中转置具有预定义维度的非方矩阵的代码如下所示:
您可以替换为适当的标头和打印/扫描语句,以用 C 编写代码,或者从用户处获取输入并实现相同的代码。
Code for the transpose of a non square matrix with predefined dimensions in c++ would look something as follows :
You can replace with the appropriate header and print/scan statements to write the code in C and alternatively take input from the user and implement the same.