matlab算法(二维傅立叶级数变换)

说明

Y = fft2(X) 使用快速傅里叶变换算法返回矩阵的二维傅里叶变换,这等同于计算 fft(fft(X).’).’。如果 X 是一个多维数组,fft2 将采用高于 2 的每个维度的二维变换。输出 Y 的大小与 X 相同。\n\n Y = fft2(X,m,n) 将截断 X 或用尾随零填充 X,以便在计算变换之前形成 m×n 矩阵。Y 是 m×n 矩阵。如果 X 是一个多维数组,fft2 将根据 m 和 n 决定 X 的前两个维度的形状

从数学意义上看,傅里叶变换试讲一个图像转换为一系列周期函数来处理的。从物理效果上看,傅里叶变换从空间域转换到频率域。换句话说傅里叶变换是将图像的灰度分布函数转换为图像的频率分布函数。

代数形式傅立叶变换

matlab算法(二维傅立叶级数变换)_第1张图片

 矩阵形式的傅立叶变换

matlab算法(二维傅立叶级数变换)_第2张图片

 

如: x=[0,511]计算其二维离散傅里叶变换

代码程序;

x = 0:511;

[Y, X] = meshgrid(x,x);

 f1 = cos(pi/4*X);

 F1 = fft2(f1);

 F1c = fftshift(F1);

 [r1,c1] = find(abs(F1c)>0.1);

matlab算法(二维傅立叶级数变换)_第3张图片

最后,对于流程,其实是和傅里叶一样的,关键在于低频区域\n通过傅里叶变换的频谱图,低频分布在四个角上,而通过余弦变换。可以看出,逆变换后的图,虽然模糊,但是大部分的信息量已经提取出来了

 

算法二:如何求解椭圆上点到椭圆交点的距离问题

首先,给定起点A和终点B的椭球极坐标,计算其直角坐标,并计算B的外法向量记为B计算A点在二维极坐标中以A为中心的一定宽度方格内的点Mi的极坐标计算所有Mi的直角坐标,并且计算出向量AMi,并将其全部化为单计算BW*AMi的值,并找出使该值最小的Mi点作为下一个A点,重复步骤1变量与符号说.代指椭球表面的运动点的当前终点椭球运动点在某次运动中可选择的单位方向向量集…………………………………………………椭球终点的垂直于表面的法向量每次运动点移动的欧式距终点判断值总路径的长度\n\n模型建立与算法设计

matlab算法(二维傅立叶级数变换)_第4张图片

当A要向B靠近时,求使AMi的单位方向向量与BW乘积最大的AMi作为从当前运动点指向下一个运动点的向量。对于共线的向量AMi的情况 ,取AMi长度较小的一方指向的点作为下一个A点,这样可以通过减小步长来适当降低误差。注意注意,这里的A点周围的单位向量其实并不在一个平面内,因为我们找的是椭球上A相邻极坐标的点,所以只是椭球上从一个点出发到周围多个点的连线,我们只是用这些连线形成的向量来帮我们判断下一步的方向以及下一步所到的点。

代码程序:

clc
clear
syms theta;
a=5;
b=3;
c=sqrt(a^2-b^2);
e=c/a;
p=abs(a^2/c-c)
result=int(e*p/(1-e*cos(theta)),0,2*pi)/2/pi
theta_div=0:0.01:2*pi;
r_div=e*p./(1-e*cos(theta_div));
plot(theta_div,r_div)
hold on;
plot(theta_div,result)
% hold off;
% ezplot('x^2/(53^2)+ y^2/(3^2) = 1',[-53 53 -3 3])

matlab算法(二维傅立叶级数变换)_第5张图片

你可能感兴趣的:(matlab,算法,开发语言)