问题遇到的现象和发生背景
初学者,请问代码怎么修改
Fourier Analysis and Filtering
- Please remove small dark points in the image sampe6.jpg by raster filtering, and by frequency filter using Fourier transform.
- In the image sample1.jpg, please remove the horizontal noise.
翻译:
傅里叶分析和滤波
- 请通过光栅过滤去除图像 sampe6.jpg 中的小暗点,并使用傅里叶变换通过频率过滤去除图像中的小暗点。
- 在图片sample1.jpg中,请去除水平噪声。
问题相关代码,请勿粘贴截图
<p>思路:</p>
<p>先用fourier函数求傅里叶级数,得到傅里叶级数解析表达式,再取不同的频率w值,根据傅里叶级数求得不同频率的幅值和相位,将不同w的信号加和得到不同项数恢复的时域信号。</p>
<p>代码:</p>
<pre>
<code>%% 傅里叶级数求解
syms a b t
f = rectangularPulse(a,b,t)-0.5; % 矩形信号
f_FT = fourier(f); % 矩形信号傅里叶变换表达式
%% 时域信号
a = -0.25;
b = 0.25;
t = linspace(-0.5,0.5,1000); % 时间
y = subs( f ); % 时域信号
%% 前3项恢复
w1 = 2*pi*[1 3 5 ]; % 频率
w =w1;
Aw1 = 2*abs( double(subs(f_FT)) ); % 幅值
Pw1 = angle( double(subs(f_FT)) ); % 相位
y1 = 0;
for ii = 1:length(w1)
y1 = y1 + Aw1(ii) .* cos( w1(ii).*t + Pw1(ii) );
end
%% 前5项恢复
w2 = 2*pi*[1 3 5 7 9]; % 频率
w =w2;
Aw2 = 2*abs( double(subs(f_FT)) ); % 幅值
Pw2 = angle( double(subs(f_FT)) ); % 相位
y2 = 0;
for ii = 1:length(w2)
y2 = y2 + Aw2(ii) .* cos( w2(ii).*t + Pw2(ii) );
end
%% 前10项恢复
w3 = 2*pi*[1 3 5 7 9 11 13 15 17 19]; % 频率
w =w3;
Aw3 = 2*abs( double(subs(f_FT)) ); % 幅值
Pw3 = angle( double(subs(f_FT)) ); % 相位
y3 = 0;
for ii = 1:length(w3)
y3 = y3 + Aw3(ii) .* cos( w3(ii).*t + Pw3(ii) );
end
figure
plot(t,y,t,y1,t,y2,t,y3)
xlabel('时间/s')
ylabel('输出')
legend('原始信号','前3项','前5项','前10项')</code></pre>
<p>结果:</p>
<p style="text-align:center"><img alt="" height="420" src="https://img-ask.csdnimg.cn/upload/1621776465139.png" width="885" /></p>
<p> </p>