だから私は単純なサイン関数 pi/2 をシフトしたい単純なプログラムを持っています。これは、バイアス (つまり、A*sin(2*pi*周波数 + バイアス)) を挿入するだけで非常に簡単であることがわかりました。しかし、このプログラムは、理論をテストするための簡単な方法です。複雑な磁気データをシフトする必要がありますが、シフトは周波数に依存します. その方法を理解するために, この正弦波を設定されたシフトだけシフトしたいのですが, 周波数領域でそれを行いたい. 以下のコードはエラーを示していませんが, エラーはあります.データを適切にシフトしないと、マグニチュードに影響します. コードは以下の通りです. ありがとう!
clear all
time = 1:0.01:2*pi; %Create time vector
mag = sin(2*pi*time);
Y = fft(mag); %transform
Pnewr = pi/2;
%t = angle(mag);
t = imag(Y);
%t_fin = t-Pnewr; %Subtract the pahse delay from the original phase vector
R=real(Y);
I=t;
k = I./R
Phi = tan(k);
PhiFinal = Phi-Pnewr;
PhiFinal = PhiFinal'
IFinal = R * atan(PhiFinal);
spec=complex(R,IFinal);
Finalspec = ifft(spec); %Invert the transform
Final = Finalspec;
plot(time,mag);
hold on
plot(time,Final,'r')
grid on