基于Matlab模拟球面变频条纹

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

基于Matlab模拟球面变频条纹

⛄ 代码

clear all, close all, clc;

%% 球面变频条纹图

ncols = 512;

% mrows = 576;

% ncols = 800;

mrows =512;

% rgb_image = zeros(480, 640, 3);

% mrows = 512;

% rgb_image = zeros(512, 512, 3);

% model = zeros(mrows,ncols);

% model(:,370:403) = 1;

% red = zeros(mrows, ncols);

% green = zeros(mrows, ncols);

% blue = zeros(mrows, ncols);

% X=linspace(0,ncols,ncols);

% Y=linspace(0,mrows,mrows);

% X=linspace(-256,256,512);

% Y=linspace(-256,256,512);

X=1:512;

Y=X;

% red = zeros(mrows, 32);

% green = zeros(mrows, 32);

% blue = zeros(mrows, 32);

% x=linspace(0,32,32);

% y=linspace(0,mrows,mrows);

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

N = 4;  % 相移数

s = 4;  % 变频数

% s = 1;  % 变频数

k = 4;  % 变频底数

jj = 0;

%   变频

pitch = fix(ncols/k^(s-1)); % 周期宽度

% pitch = 32; % 频率最大时的周期宽度

for i = 1:s

    t = k^(s-i);

    f0 = pitch*t;  

    f1=0.1583;

    fo = f0*ones(size(x,1),size(x,2));  

    %   相移

    for n = 0:N-1

        jj = jj+1;

        delta = 2*pi*n/N;

        l0=1000;d0=200;

        theta=atan(d0/l0);

%         f1=0.1583*f0;

        c=160000;

%       X=linspace(-120,120,512);Y=X;

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

%         for i=1:size(x,1)

%             for j=1:size(y,1)        

% %             a=1-((x(1,i)^2+y(j,1)^2)./c);

% %             b=a;

% %             if 300^2-x(i,j)^2-y(i,j)^2>=150;

% %                 h(j,i)=sqrt(300^2-x(i,j)^2-y(i,j)^2);

% %             else

% %                 h(j,i)=0;

% %             end 

%             z(i,j) =  3*(1-x(i,j)).^2.*exp(-(x(i,j).^2) - (y(i,j)+1).^2) ... 

%                   - 10*(x(i,j)/5 - x(i,j).^3 - y(i,j).^5).*exp(-x(i,j).^2-y(i,j).^2) ... 

%                   - 1/3*exp(-(x(i,j)+1).^2 - y(i,j).^2) 

%              phiz(i,j)=(z(i,j)*2*pi*f1*d0)./(z(i,j)-l0);

% %            phiz(j,i)=(h(j,i)*2*pi*f1*d0)./(h(j,i)-l0);

% %            phi0(j,i)=(2*pi*f1*x(j,i)^2*sin(theta)*cos(theta))./(l0+x(j,i)*sin(theta)*cos(theta));

%              phi0(i,j)=0;  

% %            phi(j,i)=phiz(j,i)+phi0(j,i);

%              phi(i,j)=phiz(i,j)+phi0(i,j);

% %            g(j,i)=a+b*cos(2*pi*f1*x(1,i)+phi(j,i));

%              ball(i,j) =0.5-0.5*cos((2*pi.*x(i,j)+phi(i,j)*4)/f0+delta);

%             end

%         end

%         z =  z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ...

%             - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ..                   .

%             - 1/3*exp(-(x+1).^2 - y.^2); %产生peaks函数

        z=50*peaks(512);

        phiz=(z*2*pi*f1*d0)./(z-l0);

        phi0=(2*pi*f1*x^2*sin(theta)*cos(theta))./(l0+x*sin(theta)*cos(theta));

%         p=mat2gray(ball);

        ball =0.05-0.05*cos((2*pi.*x+phiz)/f0+delta);

        ball1 = ((ball-min(min(ball)))/max(max(ball)));

%         p=uint8(ball);

        imwrite(ball1,strcat('ImageSine',num2str(jj),'.','bmp'));

%         p=mat2gray(ball);

%         imshow(p);

        figure,imshow(ball,[]);

%          imwrite(strcat('ImageSine',num2str(jj),'.','bmp'));

%          test=mat2gray(ball,[0 255]);

%         imwrite(test,strcat('ImageSine',num2str(jj),'.','bmp'));

    end

end

%% plot ball

% l0=2000;d0=500;

% theta=atan(d0/l0);

% f0=0.1583;c=160000;

% X=linspace(-120,120,512);Y=X;

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

% for i=1:size(x,1)

%     for j=1:size(y,1)        

%         a=1-((x(1,i)^2+y(j,1)^2)./c);

%         b=a;

%         if 100^2-x(1,i)^2-y(j,1)^2>=59

%             h(j,i)=abs(sqrt(100^2-x(1,i)^2-y(j,1)^2));

%         else

%             h(j,i)=-60;

%         end

%         phiz(j,i)=(h(j,i)*2*pi*f0*d0)./(h(j,i)-l0);

%         phi0(j,i)=(2*pi*f0*x(1,i)^2*sin(theta)*cos(theta))./(l0+x(1,i)*sin(theta)*cos(theta));

%         phi(j,i)=phiz(j,i)+phi0(j,i);

%         g(j,i)=a+b*cos(2*pi*f0*x(1,i)+phi(j,i));

%     end

% end

% imshow(mat2gray(g));

%% 16副变频条纹图产生 original

% figure,imshow(rgb_image,[]);

% figure,plot(rgb_image(400,:,1));

% grid on

%水平方向条纹

% if 0,

% j = 0;

% for i = 1:s

%     t = k^(s-i);

%     f0 = pitch*t;

%     

%     fo = f0*ones(size(Y,1),size(Y,2));

%     

%     %   相移

%     for n = 0:N-1

%         j = j+1;

%         delta = 2*pi*n/N;

% %         red(:,:) = 0.5-0.5.*cos(2*pi.*mod(X,fo)/f0+delta);

% %         green(:,:) = 0.5-0.5.*cos(2*pi.*mod(X,fo)/f0+delta);

% %         blue(:,:) = 0.5-0.5.*cos(2*pi.*mod(X,fo)/f0+delta);

% %         red(:,321:341) = 0.5-0.5.*cos(2*pi.*mod(X(:,321:341),fo(:,321:341))/f0+delta);

% %         green(:,321:341) = 0.5-0.5.*cos(2*pi.*mod(X(:,321:341),fo(:,321:341))/f0+delta);

% %         blue(:,321:341) = 0.5-0.5.*cos(2*pi.*mod(X(:,321:341),fo(:,321:341))/f0+delta);

% %         red(101:500,101:500) = 0.5-0.5.*cos(2*pi.*mod(X(101:500,101:500),fo(101:500,101:500))/f0+delta);

% %         green(101:500,101:500) = 0.5-0.5.*cos(2*pi.*mod(X(101:500,101:500),fo(101:500,101:500))/f0+delta);

% %         blue(101:500,101:500) =0.5-0.5.*cos(2*pi.*mod(X(101:500,101:500),fo(101:500,101:500))/f0+delta);

% %         red(101:500,101:500) = 1;

% %         green(101:500,101:500) = 1;

% %         blue(101:500,101:500) = 1;

%         r(:,:) = 0.5-0.5.*cos(2*pi.*mod(Y,fo)/f0+delta);

%         g(:,:) = 0.5-0.5.*cos(2*pi.*mod(Y,fo)/f0+delta);

%         b(:,:) = 0.5-0.5.*cos(2*pi.*mod(Y,fo)/f0+delta);

%         red(101:500,201:600) = r;

%         green(101:500,201:600) = g;

%         blue(101:500,201:600) = b;

%         red(101,:) = 0;

%         green(101,:) = 0;

%         blue(101,:) = 0;

%         rgb_image(:,:,1) = red;

%         rgb_image(:,:,2) = green;

%         rgb_image(:,:,3) = blue;

%         imwrite(rgb_image,strcat('hx',num2str(j),'.','bmp'));

%     end

% end

% end

⛄ 运行结果

​⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值