MATLAB 函数 mesh()用法

mesh是画三维图,我是某次做图像处理时用到它画频谱图,先给出一个简单的例程:

clc,clear;
m=(1:10);%x轴的长度
n=(1:10);%y轴的长度
[u,v]=meshgrid(m,n);%分别形成m*m的方阵,n*n的方阵
mesh(m,n,u+v);%画出z=x+y的三维图

meshgrid函数形成(x,y)的方阵,是m*n*2的一个矩阵,z=f(x,y)可以在[u,v]上取到所有的x,y值,当你需要画z=f(x,y)这样一个函数的时候就需要meshgrid;

注意:用mesh画图,x、y的长度要相等,即m=n;

下面是例程的结果:

MATLAB 函数 mesh()用法_第1张图片

再给出一个图像频谱图的例程:由于频谱图每个点的值不需要通过f(x,y)这样的函数来计算,所以不需要用到meshgrid;

注意:用mesh画图,x、y的长度要相等,即m=n;

clc,clear;
I = imread('test2.bmp');
f = fft2(double(I));%傅立叶变换
[M,N] = size(f);
m=max(M,N);
f1=zeros(m);

%为了使x,y的长度一样,把较短的行或者列补零
for x=1:m
    for y=1:m
        if (x >M)||(y>N)
            f1(x,y)=0;
        else
            f1(x,y)=f(x,y);
        end
    end
end

u=(1:m);
v=(1:m);
mesh(u,v,real(f1));%画图取频谱的实部
频谱图:中间那根红的就是直流分量

MATLAB 函数 mesh()用法_第2张图片

你可能感兴趣的:(matlab,应用)