我是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
答案 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;