傅里叶变换基函数可视化


% 用图像绘制:
figure(1);
M = 16;%图片的宽度
N = 16;%图片的高度
A = zeros(M,N);

for k = 0:M
    for l = 0:N
            for x = 1:M
                for y = 1:N
                  subplot(M,N,(k*(N)+l+1)); %画子图
                  A(x,y) = cos(2*pi*k*x/M + 2*pi*l*y/N) + sin(2*pi*k*x/M + 2*pi*l*y/N);%求第(k,l)个傅里叶基函数在(x,y)处的值。为可视化虚部也看做实数
                end
            end
            fprintf('%d',k)
            fprintf('%d\n',l)
            colormap('Cool');%选择色调,这里为Cool
            imagesc(A); % 由A(x,y)的值确定颜色
            %set(gca,'xaxislocation','top');  % 把x轴换到上方
            set(gca,'ydir','reverse');       % 把y轴刻度倒置
            title( {['B(', num2str(k), ',',num2str(l),')']})
    end
end





另一种可视化

N = 4;
h = zeros(N,N);
figure(1);
for u = 1:N
    for v = 1:N
        for x = 1:N
            for y = 1:N
                I(x,y) = exp(j*2*pi*((u-1)*(x-1)+(v-1)*(y-1))/N);
            end
        end
        
        subplot(N,N,v+N*(u-1)),imshow(I);title(['u=',num2str(u-1),' v=',num2str(v-1)]);
    end
end

原理以及参考文献

根据如下公式进行计算即可

https://wenku.baidu.com/view/a8f7916f793e0912a21614791711cc7931b778b8.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
MATLAB提供了丰富的工具和函数用于傅里叶变换可视化。下面以一个示例来演示如何通过MATLAB实现傅里叶变换可视化。 首先,我们需要准备一个输入信号。可以使用`linspace`函数创建一个时间序列,然后通过定义一个函数来生成相应的信号。例如,我们可以生成一个包含两个频率分量的正弦信号,如下所示: ```matlab t = linspace(0, 2*pi, 1000); % 创建一个时间序列 x = sin(10*t) + 2*sin(20*t); % 生成一个包含两个频率分量的正弦信号 ``` 接下来,我们使用`fft`函数对信号进行傅里叶变换,并使用`abs`函数获取变换结果的振幅谱。对于复数结果,我们可以使用`abs`函数计算模值。例如: ```matlab X = fft(x); % 对信号进行傅里叶变换 X_amp = abs(X); % 获取傅里叶变换结果的振幅谱 ``` 然后,我们可以使用`plot`函数绘制原始信号和傅里叶变换结果的振幅谱。例如: ```matlab subplot(2, 1, 1); % 创建一个2行1列的子图,并选取第1个子图 plot(t, x); % 绘制原始信号 title('原始信号'); xlabel('时间'); ylabel('幅值'); subplot(2, 1, 2); % 选取第2个子图 plot(X_amp); % 绘制傅里叶变换结果的振幅谱 title('傅里叶变换结果'); xlabel('频率'); ylabel('振幅'); ``` 最后,我们可以使用`fftshift`函数将频谱移动到中心位置。此步骤可使频谱在水平轴上显示为从负频率到正频率。例如: ```matlab f = linspace(-0.5, 0.5, length(X_amp)); % 创建一个与变换结果长度相同的频率序列 X_amp_shifted = fftshift(X_amp); % 将振幅谱移动到中心位置 figure; % 创建一个新的图形窗口 plot(f, X_amp_shifted); % 绘制移动后的振幅谱 title('中心化的傅里叶变换结果'); xlabel('频率'); ylabel('振幅'); ``` 通过以上代码,我们可以用MATLAB实现傅里叶变换可视化,包括绘制原始信号、傅里叶变换结果的振幅谱以及移动后的中心化振幅谱。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alocus_

如果我的内容帮助到你,打赏我吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值