请求牛人解答 DAC0832正弦信号发生器程序

请求牛人解答 DAC0832正弦信号发生器程序,第1张

1.这个程序频率值是怎么设定的?

就是通过key_up ,key_dw来设定的,type【】里面的数已经按照不同频率的正弦波,算出不同点的值(用于da转换),用查表的方法来设定频率值(到底要的是哪一个频率值,通过counter的大小选择type里的某一串数送给da来决定)

2. while(1)

{

if(key_up == 0) if(step<4096) step++

if(key_dw == 0) if(step>1) step--

while((!key_up)||(!key_dw))

}

这是什么意思?4096这些是什么意思。。。

key_up ,key_dw 这两个端口应该是接按键了吧,采用查询的方法判断键是否按下,

while((!key_up)||(!key_dw))按键按下后等待按键释放!4069的意思,比如说你要访问一组数组,数组只有10个元素,你能访问第十一个元素吗?去学一下什么是type型的数,就知道为何是4069了。

3.程序看不太懂,急需大致讲解。

单片机和c语言你要是一点也不会,我肯定给你讲不懂的,你要是会的话,多看几遍肯定就会了

希望能帮到你!

#include<reg51.h>

#include<absacc.h> //定义绝对地址访问的头文件

#define dac1 XBYTE[0xdfff] // X 轴0832一级琐存地址

unsigned char code type[256]={ //一堆数,一堆不同频率正弦波的正弦值

0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb0,0xb3,0xb6,0xb9, 0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,

0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf4,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,

0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe3,0xe1,0xde,0xdc,0xda,0xd8,0xd6,0xd3,

0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,

0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83,0x80,0x7d,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,

0x5b,0x58,0x55,0x52,0x4f,0x4c,0x49,0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,

0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x14,0x12,0x10,0xf,0xd,0xc,0xb,0x9,0x8,0x7,0x6,0x5,0x4,

0x3,0x3,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x2,0x3,0x3,0x4,0x5,0x6,0x7,

0x8,0x9,0xa,0xc,0xd,0xe,0x10,0x12,0x13,0x15,0x17,0x18,0x1a,0x1c,0x1e,0x20,0x23,0x25,0x27,0x29,0x2c,

0x2e,0x30,0x33,0x35,0x38,0x3b,0x3d,0x40,0x43,0x46,0x48,0x4b,0x4e,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,

0x66,0x69,0x6c,0x6f,0x73,0x76,0x79,0x7c}

unsigned char i,j

unsigned int counter,step

sbit key_up = P3^2

sbit key_dw = P3^3//按键定义

//定时器0初始化

void Init_Timer0(void)

{

TMOD = (TMOD &0XF0) | 0X01

TH0 = 0xff

TL0 = 0xff

TR0 =1

ET0 =1

}

main()

{

Init_Timer0()

step=2

EA = 1

while(1) //判断按键

{

if(key_up == 0) if(step<4096) step++

if(key_dw == 0) if(step>1) step--

while((!key_up)||(!key_dw))

}

}

// 系统OS定时中断服务

void OS_Timer0(void) interrupt 1 using 2//定时子程序

{

TH0 = 0xff

TL0 = 0xff

counter = counter + step

dac1=type[(unsigned int)counter>>8] //根据键值,选择某一个频率的正弦波,送入da转换!

}

fc模拟器有好几种,比较常用的有SMYNES ,VirtuaNES ,NESten等等,这个模拟器功能很全。运行流畅,即使是低配置的电脑也照样能运行完美,支持绝大部分FC游戏

软件介绍

说起超级玛丽、魂斗罗、双截龙,我们都不会陌生吧,这多么经典的游戏陪伴我们度过了一段美好的童年时光,不时地把这些游戏再次翻出来玩个通关,感觉的确很过瘾。智能手机上早早就出现了FC游戏的模拟器,当听到旁边手机上发出魂斗罗片头音乐,再看着他那玩游戏投入的样子,不仅羡慕不已

如今,手机上也能玩任天堂游戏了。这是完全JAVA版的!

一款免费的手机java(j2me)平台FC模拟器,可以直接读取存储卡上的nes游戏文件,支持游戏存档;

软件自带一个超级经典的Nes游戏《超级玛丽》;

玩游戏之前先需要进行参数设置,比如按键设置,屏幕设置等等;

按键介绍

软件默认按键设置:

2键:菜单指令向上/角色向上移动

8键:菜单指令向下/角色向下移动

4键:菜单指令向左/角色向左移动

6键:菜单指令向右/角色向右移动

5键:确定/开始/对话/开启宝箱

其它按键(射击、跳跃等)可自己设置;

使用方法

1、下载一个FC的游戏ROM。这里我下载了一个超级玛丽的游戏ROM。

2、将nes文件拷贝到roms目录下。

3、在package.txt中添加ROM的文件名。只添加文件名称,不加.nes,要注意区分大小写和空格,添加完毕后保存,关闭文件。

双击makejar.bat后,会自动生成一个vnes.jar文件。只要将这个文件传到手机上,就可以玩了!

注意事项

使用小帖士:

1、在添加一个超级玛丽游戏(ROM大小为41KB)后,加上该程序自带的一个名为INES Demo的演示程序,最后得到的jar文件为94KB。如果你的手机是JAVA 1.0版的(最大支持64KB),可以找更小一点的游戏ROM,并删除自带的演示程序。

2、删除INES Demo的方法:在roms目录下删除INES Demo.nes文件;在package目录下删除INES Demo.nes文件;在package.txt文件中删除“INES Demo”。删除其他游戏ROM的方法相同。

3、该模拟器在实际的使用中可能会出现程序死锁或无法运行的情况,估计是软件BUG造成的。为避免这种情况,请大家一定要:严格按照 *** 作程序来 *** 作;如果出现以上情况,删除全部文件,重新从压缩包 vNesJ2ME.zip 里解压,再进行 *** 作。

软件截图

5555d228bbe6f72bf89db2a93919ceb3.jpg

538d3a2e9651c221f4d41748c5841aa6.jpg

456ee0261503cfb40366e5bb526a416a.jpg

特别说明

相关资源:使用java模拟nes(小霸王模拟器).zip_java版nes模拟器-其他代码类...

文章知识点与官方知识档案匹配

Java技能树首页概览

92407 人正在系统学习中

打开CSDN APP,看更多技术内容

使用java模拟nes(小霸王模拟器).zip_java版nes模拟器-其他代码类...

nes模拟器java版附源代码 4星 · 用户满意度95% java编写的nes模拟器gui版的,仅供参考,切勿用在非法用途。 java做的fc模拟器源代码 5星 · 资源好评率100% 用java做的fc模拟器源代码,希望能帮到有需要的朋友~ ...

继续访问

javanes游戏模拟器免费下载_javanes模拟器-Java文档类资源-CSDN文库

java nes游戏模拟器免费下载 jar文件 RSEJK上传 d555hjkhkh 2018-02-09 nes模拟器,是个好东西 RSEJK 粉丝: 1 资源:3 前往需求广场,查看用户热搜 上传资源 快速赚钱 我的内容管理收起

继续访问

LiteNESEmulator:FC模拟器Java实现

LiteNESEmulator FC模拟器Java实现 已实现的功能模块 CPU,PPU,APU,内存 手柄输入控制(P1,P2) 6502组装调试器(反汇编),名称表,图案表,精灵等可视化以及内存的转储 游戏的加速模式以及存档与读档 基于xBRZ算法的图像增强 金手指的支持 基于UDP协议的网络联机(包含创建,加入,退出,销毁游戏房间的 *** 作) 已实现的Mapper 映射器0 映射器1 Mapper2 Mapper3 映射器4 映射器163

java fc模拟器

代码不是我写的,希望对对这方面有兴趣的人有些作用。

使用java模拟nes(小霸王模拟器).zip

用java 模拟 nes模拟器(小霸王模拟器) 模拟6502cpu,ppu,apu 实现了mapper4映射 内附魂斗罗rom,代码可能有部分bug,优化没有制作,仅供参考

JSNES:用JavaScript编写的NES模拟器

今天在最不可能的,可能是毫无意义的,但仅仅是惊人的使用JavaScript奖将归本Firshman和他的任天堂娱乐系统模拟器,JSNES。 访问JSNES网页... 该仿真器是基于Java的端口vNES项目。 它使用HTML canvas虽然声音尚不支持屏幕渲染元素(对不起,Internet Explorer用户)。 有17个游戏尝试。 大多数人会在Firefox 3.5或Safari 4...

继续访问

nes模拟器java版_JAVA版手机FC/Nes模拟器vN

说起超级玛丽、魂斗罗、双截龙,我们都不会陌生吧,这多么经典的游戏陪伴我们度过了一段美好的童年时光,不时地把这些游戏再次翻出来玩个通关,感觉的确很过瘾。智能手机上早早就出现了FC游戏的模拟器,当听到旁边手机上发出魂斗罗片头音乐,再看着他那玩游戏投入的样子,不仅羡慕不已。如今,我的手机上也能玩任天堂游戏了。这是完全JAVA版的!一、首先在这里下载该模拟器:下载地址:http://www.51nes.c...

继续访问

nes模拟器java版_【Java JDK和VirtuaNES(FC模拟器)哪个好用】Java JDK和VirtuaNES(FC模拟器)对比-ZOL下载...

fc模拟器virtuanes怎么录像打开游戏,在你想要开始录像的地方点上面的电影→录像(此时选择你想把录像文件放置的位置和文件名),他就开始录了,在你想录的结尾再点电影→停止这个时候,在你选的位置就会出现一个.vmv文件,这是基本的模拟器自带录像,如果你只想用模拟器看录像的话,载入rom,点电影→重放,选择你保存下来的vmv文件,就能在模拟器里直接看你玩过的录像了。但是新版virtuanes还有一...

继续访问

nes模拟器java怎么用_nes 红白机模拟器 第7篇 编译使用方法

模拟器,基于 InfoNES ,作者添加修改以下功能:1, joypad 真实手柄驱动程序(字符型设备驱动)2,原始图像只有256*240 ,添加 图像放大算法,这里实现了2种,a, 最近邻插值 b, 双线性插值(因为2440 速度太慢,采用双线性插值时,大概要3秒算一帧,等以后用 4412 在测试实际效果,本文还会更新)3,声音支持,原 InfoNES 中,使用 oss 播放声音,添加 使用 a...

继续访问

nes模拟器java怎么用_PC版FC模拟器怎么用 VirtuaNES使用设置教程

FC又名红白机,简称NES国内也叫小霸王,是一款经典的游戏主机,上面也有很多好游戏,下面电玩男就告诉大家怎么使用电脑来玩FC游戏,VirtuaNES应该说是在电脑上最好的FC模拟器,它实用简单,我们的FC录像也一般都是用它看的.下面以VirtuaNES0.9为例.一.准备工作1.将下载的文件模拟器解压缩,双击这个图标进入。2.d出"选项"菜单,我们目前需要设置的有“控制器”,“文件夹”,“尺寸”。...

继续访问

最新发布 NES模拟器[H_NES]

最近捣鼓出来个NES模拟器,完全由C编写。可在STM32H750VBT上运行,搭配双QuadFlash可以运行更大的游戏。高速的SPI(80MHz)使得渲染帧率达到全速的60FPS,并且通过SAI输出IIS格式的音频信号

继续访问

Fc坦克大战java_FC版BattleCity(坦克大战)的Java实现!!!!!(二) | 学步园

今天的成果:完成主程序框架搭建,完成主游戏类的框架搭建,完成数据 *** 作线程的框架。目前实现了开始选择菜单:1P、2P、编辑地图选择关口frame,读取map文件,目前map文件的格式为txt格式,26×26的地图,另外有一行是关口的坦克信息。map后期需要压缩,改变存储格式为二进制,压缩大小,统一用一个map文件来存储,自定义地图的时候关口显示好像是第一关,应该需要一个临时的地图存储数据结构………...

继续访问

手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏02支持中文及显示FPS

项目源码 项目源码 支持中文 新建res文件夹,添加支持中文的字体文件simsun.ttf 修改GameApp.java public class GameApp { private boolean _gameRunning = trueprivate Frame _frmprivate Font _fontpublic GameApp(){ try{ _font = Font.createFont(Font.TRUETYPE_FONT, getClass().getClas

继续访问

Java nse模拟器,JAVA基础二.md

1. 创建Thread的方式:继承Thread类,重写run方法;实现Runable接口,重写run方法。2. 实现了或继承了Collection接口的是List、Set、Queue3. 多态表现形式是重写4. java数据库连接库JDBC用到了桥接模式5. try{}catch{}会增加额外的开销6. 子类可以访问父类受保护的成员7. .接口中声明的'变量'必须为public final sta...

继续访问

Java版SLG游戏开发入门[0]--让绘制的窗口响应鼠标事件

什么是SLG呢?也就是Simulation Game的缩写,即模拟策略游戏。 以我这种准骨灰级玩家的视点来看(鄙人88年开始玩FC,时年6岁),早期的SLG游戏,大体只是《三国志》(I由1985年开始发售)这类发布指令扩充军备并战斗的“命令下达式游戏”,并没有什么分类上的难度。但自从《火焰纹章》(1990年开始发售)出现伊始,即策略游戏与传统RPG的分野变得模糊起来,这种具有故事情节的战棋策

继续访问

java按键机nes模拟器_NES 模拟器开发教程 12 - 输入设备

NES 支持许多设备,最常见的还是官方手柄,它有 8 个按键:ABSELECTSTARTUPDOWNLEFTRIGHT读取的时候比较奇怪,按道理来讲 8 个按键刚好可以用 1 个 byte 表示,读一次就可以了,但是 NES 读取的时候却是串行的,读 8 次,每次读一个按键,这样做应该是为了兼容性第三方控制器1. 寄存器手柄的寄存器位于 CPU 总线的 0x4016 和 0x4017,分别对应 1...

继续访问

使用C++开发的NES(FC)模拟器

It is exciting!

继续访问

JAVA NES模拟器

一款免费的手机java(j2me)平台FC/NES游戏模拟器,可以直接读取存储卡上的nes游戏文件,支持游戏存档; 软件自带一个超级经典的Nes游戏《超级玛丽》; 玩游戏之前先需要进行参数设置,比如按键设置,屏幕设置等等; 软件默认按键设置: 2键:菜单指令向上/角色向上移动 8键:菜单指令向下/角色向下移动 4键:菜单指令向左/角色向左移动 6键:菜单指令向右/角色向右移动 5键:确定/开始/对话/开启宝箱 其它按键(射击、跳跃等)可自己设置;

java手机nes模拟器

qazwsxedcrfvtgbyhnujmik,ol

nes模拟器java怎么用_virtuanes模拟器怎么使用?virtuanes模拟器图文教程(附软件下载)...

virtuanes是什么:目前最流行的FC/NES模拟器,很强大,在0.9X 系列中作者加入了将 Vnes 专用的录象格式转换为 AVI 文件的功能(支持视频编码器)修正了个别 Mapper 值游戏运行错误的问题。支持了 Ips 补丁功能。功能非常强大推荐所有的 FC 迷使用它来进行游戏。 曾经有过一个改版叫做VirtuaNesex TPU,0.93版中已经集成该改版,最新版本为0.97。...

CS

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%产生Stripmap SAR的回波

clear all

clc

thetaT=0%T平台波束斜视角

thetaT=thetaT*pi/180%rad

thetaR=0%R平台波束斜视角

thetaR=thetaR*pi/180

c=3e8%光速

fc=1.5e9%载频

lambda=c/fc%波长

%%测绘带区域

X0=200%方位向[-X0,X0]

Rtc=3000

Rrc=3000

Rc=(Rtc+Rrc)/2

R0=150%距离向[Rc-R0,Rc+R0]

%%距离向(Range),r/t domain

Tr=1.33e-6%LFM信号脉宽1.33us (200m)

Br=150e6%LFM信号带宽 150MHz

Kr=Br/Tr%调频斜率

Nr=1024

r=Rc+linspace(-R0,R0,Nr)

t=2*r/c%t域序列

dt=R0*4/c/Nr%采样周期

f=linspace(-1/2/dt,1/2/dt,Nr)%f域序列

%%方位向(Azimuth,Cross-Range),x/u domain

v=100%SAR 平台速度

Lsar=300%合成孔径长度

Na=512

x=linspace(-X0,X0,Na)%u域序列

u=x/v

du=2*X0/v/Na

fu=linspace(-1/2/du,1/2/du,Na)%fu域序列

ftdc=v*sin(thetaT)

ftdr=-(v*cos(thetaT))^2/lambda/Rtc

frdc=v*sin(thetaR)

frdr=-(v*cos(thetaR))^2/lambda/Rrc

fdc=ftdc+frdc%Doppler调频中心频率

fdr=ftdr+frdr%Doppler调频斜率

%%目标位置

Ntar=3%目标个数

Ptar=[Rrc,0,1 %距离向坐标,方位向坐标,sigma

Rrc+50,-50,1

Rrc+50,50,1]

%%产生回波

s_ut=zeros(Nr,Na)

U=ones(Nr,1)*u%扩充为矩阵

T=t'*ones(1,Na)

for i=1:1:Ntar

rn=Ptar(i,1)xn=Ptar(i,2)sigma=Ptar(i,3)

rtn=rn+Rtc-Rrc

RT=sqrt(rtn^2+(rtn*tan(thetaT)+xn-v*U).^2)

RR=sqrt(rn^2+(rn*tan(thetaT)+xn-v*U).^2)

R=RT+RR

DT=T-R/c

phase=-pi*Kr*DT.^2-2*pi/lambda*R

s_ut=s_ut+sigma*exp(j*phase).*(abs(DT)<Tr/2).*(abs(v*U-xn)<Lsar/2)

end

%方位向fft

s_kt=fftshift(fft(fftshift(s_ut).')).'

%CS变换

kc=4*pi/lambda

kc=kc*ones(1,Na)

kx=fu/v

p_kx0=-sqrt(kc.^2-kx.^2)%相位项泰勒展开的系数函数

p_kx1=2*kc/c/p_kx0

p_kx2=-2.*kx.^2/c^2./p_kx0.^3

C_kx=-(c*p_kx1/2+1)

Ks_r=1-2*Kr*Rc.*p_kx2

Ks_kx_r=Kr/pi./Ks_r

r0=Rc

s2_ut=exp(j*pi*C_kx.*ones(Nr,1)*Ks_kx_r.*(t'*ones(1,Na)-2*r0*(1+C_kx)/c).^2)%设计的线性调频信号

S_cs=s_kt.*s2_ut

%距离向fft

S_kw=fftshift(fft(fftshift(S_cs)))

%距离向匹配滤波

w=2*pi*f

rmc_r=exp(j.*w*2*C_kx*r0/c).*exp(j.*w.^2/4/pi/Kr/(1+C_kx))

rmc_r=rmc_r'*ones(1,Na)

S_rmc=S_kw.*rmc_r

%距离向ifft

S_kt=fftshift(ifft(fftshift(S_rmc)))

d_kxr=4*pi/c^2*Kr*C_kx*(1+C_kx).*(Rc-r0).^2%CS变换带来的相位误差

S_kt=S_kt.*exp(-j*d_kxr)%消除相位误差

%方位向匹配滤波

FU=ones(Nr,1)*fu

H_kx=exp(j*pi/fdr*(FU-fdc).^2)%方位向压缩因子

I_ut=S_kt.*H_kx

I_ut=fftshift(ifft(fftshift(I_ut.'))).'

subplot(221)

G=20*log10(abs(s_ut)+1e-6)

gm=max(max(G))

gn=gm-40%显示动态范围40dB

G=255/(gm-gn)*(G-gn).*(G>gn)

imagesc(x,r-Rc,-G),colormap(gray)

grid on,axis tight,

xlabel('Azimuth')

ylabel('Range')

title('(a)原始信号')

subplot(222)

G=20*log10(abs(S_rmc)+1e-6)

gm=max(max(G))

gn=gm-40%显示动态范围40dB

G=255/(gm-gn)*(G-gn).*(G>gn)

imagesc(x,r-Rc,-G),colormap(gray)

grid on,axis tight,

xlabel('Azimuth')

ylabel('Range')

title('(b)距离向匹配滤波后频谱')

subplot(223)

G=20*log10(abs(S_kt)+1e-6)

gm=max(max(G))

gn=gm-40%显示动态范围40dB

G=255/(gm-gn)*(G-gn).*(G>gn)

imagesc(x,r-Rc,G),colormap(gray)

grid on,axis tight,

xlabel('Azimuth')

ylabel('Range')

title('(c)消除相位误差后频谱')

subplot(224)

G=20*log10(abs(I_ut)+1e-6)

gm=max(max(G))

gn=gm-60%显示动态范围40dB

G=255/(gm-gn)*(G-gn).*(G>gn)

imagesc(x,r-Rc,G),colormap(gray)

grid on,axis tight,

xlabel('Azimuth')

ylabel('Range')

title('(d)目标图象')

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

RD

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%产生Stripmap SAR的回波

clear all

thetaT=0%T平台波束斜视角

thetaT=thetaT*pi/180%rad

thetaR=0%R平台波束斜视角

thetaR=thetaR*pi/180

c=3e8%光速

fc=1.5e9%载频

lambda=c/fc%波长

%%测绘带区域

X0=200%方位向[-X0,X0]

Rtc=3000

Rrc=3000

Rc=(Rtc+Rrc)/2

R0=150%距离向[Rc-R0,Rc+R0]

%%距离向(Range),r/t domain

Tr=1.5e-6%LFM信号脉宽 1.5us (200m)

Br=150e6%LFM信号带宽 150MHz

Kr=Br/Tr%调频斜率

Nr=512

r=Rc+linspace(-R0,R0,Nr)

t=2*r/c%t域序列

dt=R0*4/c/Nr%采样周期

f=linspace(-1/2/dt,1/2/dt,Nr)%f域序列

%%方位向(Azimuth,Cross-Range),x/u domain

v=100%SAR 平台速度

Lsar=300%合成孔径长度

Na=1024

x=linspace(-X0,X0,Na)%u域序列

u=x/v

du=2*X0/v/Na

fu=linspace(-1/2/du,1/2/du,Na)%fu域序列

ftdc=v*sin(thetaT)

ftdr=-(v*cos(thetaT))^2/lambda/Rtc

frdc=v*sin(thetaR)

frdr=-(v*cos(thetaR))^2/lambda/Rrc

fdc=ftdc+frdc%Doppler调频中心频率

fdr=ftdr+frdr%Doppler调频斜率

%%目标位置

Ntar=3%目标个数

Ptar=[Rrc,0,1 %距离向坐标,方位向坐标,sigma

Rrc+50,-50,1

Rrc+50,50,1]

%%产生回波

s_ut=zeros(Nr,Na)

U=ones(Nr,1)*u%扩充为矩阵

T=t'*ones(1,Na)

for i=1:1:Ntar

rn=Ptar(i,1)xn=Ptar(i,2)sigma=Ptar(i,3)

rtn=rn+Rtc-Rrc

RT=sqrt(rtn^2+(rtn*tan(thetaT)+xn-v*U).^2)

RR=sqrt(rn^2+(rn*tan(thetaT)+xn-v*U).^2)

R=RT+RR

DT=T-R/c

phase=pi*Kr*DT.^2-2*pi/lambda*R

s_ut=s_ut+sigma*exp(j*phase).*(abs(DT)<Tr/2).*(abs(v*U-xn)<Lsar/2)

end

%%距离压缩

p0_t=exp(j*pi*Kr*(t-2*Rc/c).^2).*(abs(t-2*Rc/c)<Tr/2)%距离向LFM信号

p0_f=fftshift(fft(fftshift(p0_t)))

s_uf=fftshift(fft(fftshift(s_ut)))%距离向FFT

src_uf=s_uf.*(conj(p0_f).'*ones(1,Na))%距离压缩

src_ut=fftshift(ifft(fftshift(src_uf)))%距离压缩后的信号

src_fut=fftshift(fft(fftshift(src_ut).')).'%距离多普勒域

%%二次距离压缩,距离迁移校正原理仿真

src_fuf=fftshift(fft(fftshift(src_uf).')).'%距离压缩后的二维频谱

F=f'*ones(1,Na)%扩充为矩阵

FU=ones(Nr,1)*fu

p0_2f=exp(j*pi/fc^2/fdr*(FU.*F).^2+j*pi*fdc^2/fc/fdr*F-j*pi/fc/fdr*FU.^2.*F)

s2rc_fuf=src_fuf.*p0_2f

s2rc_fut=fftshift(ifft(fftshift(s2rc_fuf)))%距离多普勒域

%%方位压缩

p0_2fu=exp(j*pi/fdr*(FU-fdc).^2)%方位向压缩因子

s2rcac_fut=s2rc_fut.*p0_2fu%方位压缩

s2rcac_fuf=fftshift(fft(fftshift(s2rcac_fut)))%距离方位压缩后的二维频谱

s2rcac_ut=fftshift(ifft(fftshift(s2rcac_fut).')).'%方位向IFFT

subplot(221)

G=20*log10(abs(s_ut)+1e-6)

gm=max(max(G))

gn=gm-40%显示动态范围40dB

G=255/(gm-gn)*(G-gn).*(G>gn)

imagesc(x,r-Rc,-G),colormap(gray)

grid on,axis tight,

xlabel('Azimuth')

ylabel('Range')

title('(a)原始信号')

subplot(222)

G=20*log10(abs(src_fut)+1e-6)

gm=max(max(G))

gn=gm-40%显示动态范围40dB

G=255/(gm-gn)*(G-gn).*(G>gn)

imagesc(fu,r-Rc,-G),colormap(gray)

grid on,axis tight,

xlabel('Azimuth')

ylabel('Range')

title('(b)距离多普勒域频谱')

subplot(223)

G=20*log10(abs(s2rc_fut)+1e-6)

gm=max(max(G))

gn=gm-40%显示动态范围40dB

G=255/(gm-gn)*(G-gn).*(G>gn)

imagesc(fu,r-Rc,-G),colormap(gray)

grid on,axis tight,

xlabel('Azimuth')

ylabel('Range')

title('(c)RMC后的RD域频谱')

subplot(224)

G=20*log10(abs(s2rcac_ut)+1e-6)

gm=max(max(G))

gn=gm-60%显示动态范围40dB

G=255/(gm-gn)*(G-gn).*(G>gn)

imagesc(x,r-Rc,G),colormap(gray)

grid on,axis tight,

xlabel('Azimuth')

ylabel('Range')

title('(d)目标图象')


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8121897.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存