我正在处理Matlab中的复数,我的角度有些问题。
我有一个角度矢量,Ph。然后我想构造一个复数的矢量C:
C=exp(j*Ph).
问题是Ph包含负相,因为它具有奇对称性,因此可以进一步用于使用IFFT合成信号。这个负相位在矢量C中被包裹到0-2pi,失去了它们奇怪的对称性。
有什么方法可以阻止Matlab包装角度吗?
可能无法做到这一点,因为我们知道在数学上-30º的相位与330º的相位相同。但我想知道包裹相是否正在破坏他们想要的奇怪对称性。
我附上一张说明我问题的图片,谢谢!
答案 0 :(得分:1)
如果您有Mapping Toolbox,那么有一个wrapToPi函数可以执行您想要的操作。
没有它,你需要实现自己的:
function [ lambdaWrapped ] = myWrapToPi( lambda )
lambdaWrapped = lambda - floor(lambda / (2*pi)) * 2*pi;
lambdaWrapped(lambdaWrapped > pi) = lambdaWrapped(lambdaWrapped > pi) - 2*pi;
end
第一行包含0-2pi的所有内容,下一行采用大于pi的值并将它们移动到-pi到0范围。
phase = linspace(0, 2*pi, 100);
plot(phase);
plot(myWrapToPi(phase));