如何在matlab中实现共轭矩阵转置函数?

时间:2016-12-02 16:46:32

标签: arrays matlab matrix transpose

我是matlab的新手,我的问题是我正在尝试实现共轭矩阵转置函数('),但我不知道如何仅用虚数来改变符号。我知道这可能是一个愚蠢的问题,但感谢任何提示和建议。

我试过这样的事情,但是我遇到了这些错误:

  • 错误:复杂矩阵类型无效为索引值

  • 错误:分配失败,或者没有'= matrix'的方法

    function [ result ] = transpose_matrix( a )
    
     [Row,Col] = size(a);
     result = zeros(Col, Row); 
     iY=1;
    
     for iRow=1:Row
      iX=iRow;
       for iCol=1:Col
        result(iX)=a(iY);
        iX=iX+Row;
        iY=iY+1;
       end
     end
      imag(result)=imag(result)*-1;
    end
    

1 个答案:

答案 0 :(得分:2)

MATLAB很困惑,因为以下语句试图将imag视为一个变量result作为索引,因为它位于赋值的左侧。

imag(result) = imag(result) * (-1);

另外,值得注意的是imag会返回实数,这是虚数组件的大小。修改imag的输出后,您需要乘以sqrt(-1)才能将其恢复为虚数

imag(a) * (-1) * 1i;

现在只修改result的虚构组件,您只想简单地添加这个新的虚构组件,其中包含result的实际组件。

result = real(result) + imag(result) * (-1) * 1i;

或更简单:

result = real(result) - imag(result) * 1i;

潜在的替代方案

如果您可以使用普通transpose功能,则可以使用以下内容替换整个功能:

result = transpose(a);
result = real(result) - imag(result) * 1i;