如何在matlab中实现共轭矩阵转置函数?
How to implement conjugate matrix transpose function in matlab?
我是 matlab 的新手,我的问题是我正在尝试实现共轭矩阵转置函数 ('),但我不知道如何仅更改虚数的符号。我知道这可能是个愚蠢的问题,但感谢您提供任何提示和建议。
我试过类似的方法,但出现以下错误:
错误:复杂矩阵类型作为索引值无效
错误:赋值失败,或者“=矩阵”没有方法
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
MATLAB 很困惑,因为以下语句试图将 imag
视为变量,将 result
作为索引,因为它位于赋值的左侧。
imag(result) = imag(result) * (-1);
此外,重要的是要注意 imag
returns 一个 实数 这是虚部的大小。一旦你修改了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;
我是 matlab 的新手,我的问题是我正在尝试实现共轭矩阵转置函数 ('),但我不知道如何仅更改虚数的符号。我知道这可能是个愚蠢的问题,但感谢您提供任何提示和建议。
我试过类似的方法,但出现以下错误:
错误:复杂矩阵类型作为索引值无效
错误:赋值失败,或者“=矩阵”没有方法
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
MATLAB 很困惑,因为以下语句试图将 imag
视为变量,将 result
作为索引,因为它位于赋值的左侧。
imag(result) = imag(result) * (-1);
此外,重要的是要注意 imag
returns 一个 实数 这是虚部的大小。一旦你修改了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;