Matrix 改变矩阵的秩

Matrix 改变矩阵的秩,matrix,fortran,Matrix,Fortran,我有一个一级数组,由 COMPLEX(KIND = DBL),DIMENSION(DIMJ)::INITIALSTATE 我怎样才能把它的等级隐藏起来 DIMENSION(DIMJ,1) 所以我可以对它执行矩阵运算——转置等等 请注意,更改是微不足道的。在这两种情况下,我们都有一个列向量。但是Fortran不会以第一种形式转换数组。假设DIMJ是一个初始化的整数 同样,很明显,我希望在操作后复数保持在正确的位置 是否可以在fortran中执行这样的操作?如果您只需要数组的临时只读版本,则始终

我有一个一级数组,由

COMPLEX(KIND = DBL),DIMENSION(DIMJ)::INITIALSTATE
我怎样才能把它的等级隐藏起来

DIMENSION(DIMJ,1)
所以我可以对它执行矩阵运算——转置等等

请注意,更改是微不足道的。在这两种情况下,我们都有一个列向量。但是Fortran不会以第一种形式转换数组。假设
DIMJ
是一个初始化的整数

同样,很明显,我希望在操作后复数保持在正确的位置


是否可以在fortran中执行这样的操作?

如果您只需要数组的临时只读版本,则始终可以使用
重塑

TRANSPOSEDSTATE = transpose(reshape(INITIALSTATE, (/ DIMJ, 1 /)))
但这不会改变
INITIALSTATE
变量的形状。而且,这与

TRANSPOSEDSTATE = reshape(INITIALSTATE, (/ 1, DIMJ /))

不需要
转置

太好了<代码>转置
也适用于复杂数组,对吗?也就是说,它既可以转置数组,又可以复数共轭数组中的元素?坦白说,我不知道。我自己试试。@JunaidAftab,
转置
对值(除了它们的位置以外)没有任何作用:没有针对任何其他参数对复数进行特殊处理。@francescalus那么,如何在fortran中使用列向量的复数共轭转置?@JunaidAftab
congg(转置(Z))
,或者使用一些外部库。在这两种情况下,我们都有一个列向量。不是真的。在Fortran中,秩1数组既不是列向量,也不是行向量,或者既是列向量又是行向量。在调用内在
matmul
的情况下,秩1数组被视为需要的(列或行),以使其与其他参数的矩阵乘法一致。可能的重复