复杂的matlab图像处理

complicated matlab image processing

我有一个很奇怪的问题。 假设我有一个如下所示的示波图。
(来源:engineeringvista.com

我需要 - 以某种方式 - 捕获组成信号的点,然后尝试进行傅里叶分析并绘制信号的谐波。 你认为这样的操作可以在matlab或者其他软件中完成吗?

此论坛不是“给我代码”服务!!!...

话虽如此,这正是您所要求的,对代码进行了大量注释并绘制了图像处理步骤:).....

%% Processing
% Reading Image
X0=imread('Pentode 10kHz.gif');
X1=512*(X0([21:219],[15:263]));
imshow(512*(1-X1));
X2=X1;
% Removing Division Dotted Lines and Axis
X2(5:5:end,:)=[];
X2(:,5:5:end)=[];
imshow(512*(1-X2));

%% Evaluating
% Obtain Maximums per Points
[~,i0]=max(X2);
% Setting the Proper Scaling
[lx,lt]=size(X2);
xmax=8*2; %2V per division, 8 divisions
tmax=10*20e-6; % 20us per division, 10 divisions
% Applying Time Scaling
t0=(1:lt)'/lt*tmax; % 200us total
% Remove Spurious Points
t0=t0(i0>1);
% Applying Volt Scaling
x0=xmax/2-i0(i0>1)'/lx*xmax;

%% Signal
plot(t0,x0)
xlabel('Time [s]');
ylabel('Volts [V]')

%% Fourier Transform
ln=length(x0);
h=fftshift(fft(x0))/1000; % f in kHz
h0=abs(h);p0=phase(h);
fmax=1/tmax*ln/2/1000; % F in kHz
f1=(0:(ln/2+1))'/ln*fmax;
h1=[h0(ln/2);2*h0(ln/2:end)];
plot(f1,h1)
axis([0 100 0 1])
xlabel('Frequency [kHz]')
ylabel('Spectral Magnitude [x/kHz]')

最后检查傅立叶变换。注意正确的比例,以及 10kHz 左右的单点,这是正确的值。请注意,因为只有两个信号周期,FT 不是确认频率的最佳方法,是的,在这种情况下的周期是。

问候......