首页
📁归档
⏳时光机
📫留言
🚩友链
💰资助名单
推荐
🎧音乐
🏜️ 壁纸
❤ 捐助
Search
1
【NPN/PNP三极管】放大电路饱和失真和截止失真的区别
19,480 阅读
2
论文写作中如何把word里面所有数字和字母替换为新罗马字体
10,313 阅读
3
【高数】形心计算公式讲解大全
8,837 阅读
4
【概论】一阶矩、二阶矩原点矩,中心矩区别与概念
7,565 阅读
5
Vivado-FPGA Verilog烧写固化教程
7,088 阅读
🪶微语&随笔
励志美文
我的随笔
写作办公
📡电子&通信
嵌入式&系统
通信&信息处理
编程&脚本笔记
⌨️IC&系统
FPGA&ASIC
VLSI&IC验证
EDA&虚拟机
💻电子&计算机
IP&SOC设计
机器学习
软硬件算法
登录
21(共147篇)
找到
147
篇与
21
相关的结果
- 第 9 页
2021-05-27
通信原理—樊昌信第七版思维导图
通信原理思维导图 本导图仅仅是最简提纲,请自行结合课本扩展知识点 请勿截图电子版,请务必认真手写! 思维导图图片 思维导图高清PDF下载 TIIE云盘—通信原理思维导图 下载地址:http://d0.ananas.chaoxing.com/download/d410f1b0c2967f6712f1fecc14ebb87d?at_=1622097687188&ak_=f1f6a18cdf3f13f1af57dd57fd6035c4&ad_=c62f9762eb479cb7ba2c9f707c66c854&fn=%E9%80%9A%E4%BF%A1%E5%8E%9F%E7%90%86%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE 提取码:
通信&信息处理
刘航宇
5年前
0
3,934
5
2021-05-26
图像处理—矩阵卷积运算的具体过程
假设有一个卷积核h,就一般为3*3的矩阵: 图片 图片 图片
通信&信息处理
我的随笔
刘航宇
5年前
1
584
3
数字图像处理学习笔记
1.简述SUSAN角点检测算法的原理。对于如下图所示的大的尖角,设计一种估测其角度的方法 原理: SUSAN算法是一种直接利用灰度值进行角点检测的算法,它基于一个圆形模板,统计以每个像素为中心的模板邻域的灰度值与中心点灰度值相近点的个数。 估测办法: 1)先选取半径为R1圆形模板如下图1所示,将选取模板进行在图像的每个像素点上移动; 2)当模板核子位于图像中亮度一致的区域内时,SUSAN面积最大,其值为圆形模板的面积,随着模板核子离图像边缘越来越近,其面积越来越小。 3) 当模板中心靠近角点时,其面积值进一步减少,当模板中心落在角点上时,其面积达到局部最小值。 4) 根据C(r0,r)以及面积占比关系得出角度α1,然后分别选取R2、R3、R4模板重复以上过程,记录角度α2,α3,α4,α等于4个取平均 图片 2.简述利用一阶差分算子、二阶差分算子对图像边缘进行检测的依据;边缘检测中,为了减少噪声对边缘检测产生的影响,可采取那些措施? 检测依据: 边缘是图像上灰度变化最明显的地方,边缘检测利用此特点,对图像各像素点进行求微分或二阶微分来定位边缘像素点。由灰度变化特点,可将边缘类型分为阶梯状、脉冲状和屋顶状三种。对于阶梯状,图像边缘点对应一阶微分图像的峰值和二阶微分图像的零交叉处;对于脉冲状和屋顶状边缘,边缘点对应一阶导数的零交叉和二阶导数的峰值。如图2所示。其中边缘检测算子是利用图像边缘的突变性质来检测边缘的。主要分为两种类型,1)一阶导数为基础的边缘检测算子,通过计算图像的梯度值来检测图像边缘,如:差分边缘检测、Roberts 算子、Sobel 算子、Prewitt 算子;2)二阶导数为基础的边缘检测算子,通过寻求二阶导数中的过零点来检测边缘, 如:Laplacian 算子、LOG 算子、Canny 算子。 图片 使用该权值矩阵(高斯核)对图像做“卷积”(协相关,对应位置相乘最后求和得到一点的像素值),得到新的图像矩阵。 3.在采用直方图匹配的方法进行图像匹配时,出现如下图所示的结果(原图为彩色)。试分析: 图中哪些匹配结果是正确的,哪些是错误的? 试设计出避免错误匹配的改进方法。 图片 4.图像的数据量与哪些因素有关?试阐述采样与量化所遵循的一般原则 答: (1)图像分辨率;采样率;采样值。 (2)采样原则:采样是把空域上或时域上连续的图像(模拟图像)转换成离散采样点(像素)集合(数字图像)的操作,这些值可以是均匀间隔也可以是。采样越细,像素越小,越能精细地表现图像。 量化原则: 量化是把像素的灰度(浓淡)变换成离散的整数值的操作。量化越细致,灰度级数(浓淡层次)表现越丰富。 5.设计一组3×3模板,使其可以用于检测二值图像中的各种角点。 图片 6.在图像比例缩放变换中, 如果放大倍数太大, 按照最近邻域法处理会出现马赛克效应。 该问题有无办法解决或改善?如果有,请给出方案。 答: 有,方案:比例缩放所产生的图像中的像素可能在原图像中找不到相应的像素点,需要进行插值处理。 (1)最邻近法,以最邻近像素插入缺口即可 (2)双线性插值法更好,求出周围4个像素点距离比,根据该比率,由4个领域的像素灰度值进行双线性插值。 7.试阐述图像处理学三个层次的基本内容及相互关系。 图片 8.试讨论用于图像平滑处理的滤波器与用于图像锐化处理的滤波器之间的区别与联系。 答:1.相同点:都能减弱或消除傅里叶空间的某些分量,而不影响或较少影响其他分量,从而达到增强某些频率分量的效果。 2.不同点:频率滤波器减弱或消除了傅里叶空间的高频分量,所以达到了增强某些低频分量、平滑图像中细节的效果。锐化滤波器减弱或消除傅里叶空间的低频分量,所以达到了增强了高频分量、锐化图像中细节效果。 3.联系:两者效果相反,互为补充,从原始图像中减去平滑滤波器的结果得到锐化滤波器的效果,而从原始图像中减去锐化滤波器的结果则可以得到平滑滤波器的效果。 9.根据下列要求作图: (1) 画出用1个半径为2的圆形结构元素膨胀1个8×8的正方形的示意图; (2) 画出用1个半径为2的圆形结构元素腐蚀1个8×8的正方形的示意图。 结构元素的参考点为圆形结构的中心点。 图片 10 对于下图所示的边界,计算其8方向链码及差分链码。 图片 有任何问题或者批评建议可以评论留言或者QQ与我交流
通信&信息处理
刘航宇
5年前
8
1,253
14
2021-05-22
边界链码、归一化链码与一阶差分链码
链码(又称为freeman码)是用曲线起始点的坐标和边界点方向代码来描述曲线或边界的方法,常被用来在图像处理、计算机图形学、模式识别等领域中表示曲线和区域边界。它是一种边界的编码表示法,将图像中像素的绝对位置转换成了相对位置,用边界方向作为编码依据,为简化边界的描述,一般描述的是边界点集。 常用的链码按照中心像素点邻接方向个数的不同,分为4连通链码和8连通链码。4连通链码的邻接点有4个,分别在中心点的上、下、左和右。8连通链码比4连通链码增加了4个斜方向,因为任意一个像素周围均有8个邻接点,而8连通链码正好与像素点的实际情况相符,能够准确地描述中心像素点与其邻接点的信息。因此,8连通链码的使用相对较多。借用百度百科的一幅图: 图片 链码:11076765543322 归一化链码:把原链码看作由各方向数构成的自然数,将该码按一个方向循环,使其构成的自然数最小,此时形成归一化链码,也称规格化链码。归一化码=07676554332211 一阶差分链码:通过计算相邻两个元素方向变化(逆时针方向)的数字得到。就是前一个数字变化到后一个数字需要经过的步数,注意是逆时针方向,比如1->1经过0步,1->0经过7步,对照8链码图仔细琢磨一下就知道了。一阶差分链码=0777177077070 归一化的一阶差分链码:就是对一阶差分链码作归一化处理,即把差分链码链码看作由各方向数构成的自然数,将该码按一个方向循环,使其构成的自然数最小。归一化的一阶差分链码=0700777177077
通信&信息处理
刘航宇
5年前
1
1,444
3
2021-05-12
嵌入式第二次测试解答
具体操作流程参考上篇文章: 嵌入式实战—应用open调用内核open,应用close调用内核close通信程序 hello.c需要修改为: #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/cdev.h> #include <linux/kdev_t.h> #include <linux/fs.h> //file_operations MODULE_LICENSE ("GPL"); int i = 10; struct file_operations ops; struct cdev mycdev; int major = 254; int minor = 5; dev_t dev; int j= 0; int k= 0; int open(struct inode *pinode,struct file *pfile) { j++; printk(KERN_INFO "liuhangyu myopen run j= %d\n",j); return 0; } int close(struct inode *pinode,struct file *pfile) { k++; printk(KERN_INFO "liuhangyu myclose run k= %d\n",k); return 0; } void myuart_init(void) { int ret; mycdev.owner=THIS_MODULE; dev = MKDEV(major,minor); ret = register_chrdev_region(dev,5,"myuart"); if(ret==-1) { printk(KERN_INFO "dev cant't use\n"); ret = alloc_chrdev_region(&dev,5,1,"myuart"); //automatic allocation dev if(ret==0) { printk(KERN_INFO "alloc : major= %d\n",MAJOR(dev)); } else { printk(KERN_INFO "alloc error\n"); return ; } } else { printk(KERN_INFO "dev can use\n"); } ops.owner=THIS_MODULE; ops.open=open; ops.release=close; cdev_init(&mycdev,&ops); cdev_add(&mycdev,dev,5); //mycdev send dev,equipment 1 return ; } static int __init hello_init (void) { i ++; myuart_init(); //init printk (KERN_INFO "driver init,i = %d\n",i); return 0; } static void __exit hello_exit (void) { i ++; printk (KERN_INFO "driver exit,i = %d\n",i); unregister_chrdev_region(dev,5); cdev_del(&mycdev); } module_init (hello_init); module_exit (hello_exit);app.c需要修改为 #include "stdio.h" #include "fcntl.h" #include "unistd.h" #include "stdlib.h" int main() { int fd; int q = 0; while(1) { fd = open("./myuart",O_RDWR,0777) ; if(fd==-1) { printf("open error\n"); return -1; } q ++; printf("liuhangyu open run q = %d\n",q); sleep (3); close(fd); q ++; printf("liuhangyu close run q = %d\n",q); sleep (3); } return 0; }直接在此输入下面这个命令,才能./app mknod ./myuart c 254 5
嵌入式&系统
# 嵌入式
刘航宇
5年前
3
401
5
2021-05-11
matlab实现灰度图像边缘提取
灰度图像边缘提取 实验一:编程实现灰度图像空间域边缘提取,至少包括: 梯度算子、Roberts算子、Sobel算子、拉普拉斯算子及LOG算子,并比较不同算法提取边缘的效果及影响因素 代码: f=rgb2gray(imread('D:\图片\image\liuhangyu.jpg')); %更换你的图片地址 T=20;%阈值 [m,n]=size(f); %------梯度法------- f_g=zeros(m,n); for i=2:m-1 for j=2:n-1 f_g(i,j)=abs(f(i+1,j)-f(i,j))+abs(f(i,j+1)-f(i,j)); if f_g(i,j)<T f_g(i,j)=0; else f_g(i,j)=255; end end end figure(1); subplot(2,4,1);imshow(uint8(f_g));title('梯度法'); %------roberts算子------- f_r=zeros(m,n); for i=2:m-1 for j=2:n-1 f_r(i,j)=abs(f(i+1,j+1)-f(i,j))+abs(f(i,j+1)-f(i+1,j)); if f_r(i,j)<T f_r(i,j)=0; else f_r(i,j)=255; end end end %f_r=imbinarize(imfilter(f,r),T); subplot(2,4,2);imshow(uint8(f_r));title('Roberts算子'); %------prewitt算子------- f_p=zeros(m,n); for i=2:m-1 for j=2:n-1 f_p(i,j)=abs(f(i-1,j-1)+f(i,j-1)+f(i+1,j-1)-f(i-1,j+1)-f(i,j+1)-f(i+1,j+1))+abs(f(i+1,j-1)+f(i+1,j)+f(i+1,j+1)-f(i-1,j-1)-f(i-1,j)-f(i-1,j+1)); if f_p(i,j)<15 f_p(i,j)=0; else f_p(i,j)=255; end end end subplot(2,4,3);imshow(uint8(f_p));title('Prewitt算子'); %------sobel算子------- f_s=zeros(m,n); for i=2:m-1 for j=2:n-1 f_s(i,j)=abs(f(i-1,j-1)+2*f(i,j-1)+f(i+1,j-1)-f(i-1,j+1)-2*f(i,j+1)-f(i+1,j+1))+abs(f(i+1,j-1)+2*f(i+1,j)+f(i+1,j+1)-f(i-1,j-1)-2*f(i-1,j)-f(i-1,j+1)); if f_s(i,j)<T f_s(i,j)=0; else f_s(i,j)=255; end end end subplot(2,4,4);imshow(uint8(f_s));title('Sobel算子'); %------krisch算子------- k(:,:,1)=[-3,-3,-3; -3,0,5; -3,5,5]; k(:,:,2)=[-3,-3,5; -3,0,5; -3,-3,5]; k(:,:,3)=[-3,5,5; -3,0,5; -3,-3,-3]; k(:,:,4)=[-3,-3,-3; -3,0,-3; 5,5,5]; k(:,:,5)=[5,5,5; -3,0,-3; -3,-3,-3]; k(:,:,6)=[-3,-3,-3; 5,0,-3; 5,5,-3]; k(:,:,7)=[5,-3,-3; 5,0,-3; 5,-3,-3]; k(:,:,8)=[5,5,-3; 5,0,-3; -3,-3,-3]; kk=zeros(size(f)); I=double(f); for i=1:8 f_k(:,:,i)=conv2(I,k(:,:,i),'same'); kk=max(kk,f_k(:,:,i)); end f_kk=imbinarize(kk,600); subplot(2,4,5);imshow(f_kk);title('Krisch算子'); %------LoG算子------- log1=[0 0 -1 0 0; 0 -1 -2 -1 0; -1 -2 16 -2 -1; 0 -1 -2 -1 0; 0 0 -1 0 0]; f_l=conv2(f,log1,'same'); f_ll=imbinarize(abs(f_l),300); subplot(2,4,6);imshow(f_ll);title('LoG算子'); %------拉普拉斯算子------- I=f; I=im2double(I); [M,N]=size(I); B=zeros(size(I)); for x=2:M-1 for y=2:N-1 B(x,y)=I(x+1,y+1)+I(x-1,y-1)+I(x-1,y+1)+I(x+1,y-1)+I(x+1,y)+I(x-1,y)+I(x,y+1)+I(x,y-1)-8*I(x,y); end end I=im2uint8(I); B=im2uint8(B); subplot(2,4,7);imshow(I);title('原图'); subplot(2,4,8);imshow(B);title('拉普拉斯算子后的图'); 现象: 图片 分析: 通过比较提取边缘效果,可以发现Roberts算子的边缘定位较准确,但是抗噪声能力较弱。Sobel算子有平滑差分作用,它利用像素临近区域的梯度值来计算一个像素的梯度,然后进行取舍。拉普拉斯高斯算子通过对图像进行微分操作实现边缘检测,所以对离散点和噪声较敏感,可以强化突变,并且保留部分物体内部。 实验二:编程实现灰度图像阈值分割,至少包括: 固定阈值分割、最大类间方差(Otsu)方法、最佳熵自动门限方法,并比较不同算法分割的效果及影响因素。 代码 由于算法复杂,此程序需要执行很长时间如果遇到没反应请等待一会即可 tip:担心报错请用下面图片处理 TIIE-待处理图片 下载地址:http://d0.ananas.chaoxing.com/download/0b171605f8eeb3d6d0d027bdaa1e3876?at_=1622619001225&ak_=fd76d39a9ef7c3e45e71e4d2dc839206&ad_=e4deb3a7b827763c7e0dbb9126820cef&fn=2 提取码: I=imread('D:\图片\image\liuhangyu.jpg'); imshow(I); %输出直方图 figure;imhist(I); %人工选定阈值进行分割,选择阈值为120 [width,height]=size(I); T1=120; for i=1:width for j=1:height if(I(i,j)<T1) BW1(i,j)=0; else BW1(i,j)=1; end end end figure;imshow(BW1),title('人工阈值进行分割'); %自动选择阈值 T2=graythresh(I); BW2=im2bw(I,T2);%Otus阈值进行分割 figure;imshow(BW2),title('Otus阈值进行分割'); count = imhist(I); %图像的直方图 [m,n] = size(I); N = m*n; L = 256; count = count/N; %每一个像素的分布概率 for i = 1:L if count(i) ~= 0 st = i-1; break; end end for i = L:-1:1 if count(i) ~= 0 nd = i-1; break; end end f = count(st+1:nd+1); %f是每个灰度出现的概率 size(f); E=[]; for Th = st:nd+1 Hbt = 0; Hwt = 0; Pth = sum(count(1:Th+1)); for i = 0:Th %计算图像背景的熵 Hbt = Hbt-count(i+1)/Pth*log(count(i+1)/Pth+0.01); end for i = Th+1:L-1; %计算图像目标的熵 Hwt = Hwt-count(i+1)/(1-Pth)*log(count(i+1)/(1-Pth)+0.01); end E(Th-st+1) = Hbt+Hwt; end position = find(E==(max(E))); Ht = st+position-100; for i = 1:m for j = 1:n if a(i,j)>Ht a(i,j) = 0; %对图像分割 else a(i,j) = 255; end end end figure,imshow(I),title('最佳熵自动门限方法'); 报错,换上面提示的图片处理 实验现象应有5张图,不要出现数组超出
通信&信息处理
刘航宇
5年前
3
798
3
2021-05-09
嵌入式实战—应用open调用内核open,应用close调用内核close通信程序
应用open调用内核open,应用close调用内核close通信程序 1.在TM命令窗口中,不要进入sudo -s,先创建一个普通目录 mkdir liu 2.下载已经配置好的Makefile文件(在虚拟机liunx系统浏览器输入tiie.cn网址,找到本文,下载Makefile文件),将这个文件移动到创建的liu文件夹内,如果下载后名称不是Makefile,重命名下载的文件为Makefile SICARM云盘-Makefile文件 下载地址:http://pan-yz.chaoxing.com/download/downloadfile?fleid=609396534180687872&puid=84519098 提取码: ::(你懂的) ::(你懂的) 不是我吹,我的云盘下载速度吊打某度云,免费不限速 3.进入root模式 ,创建驱动程序: hello.c程序, vim hello.c 注意不要改名字,否则可能会报错,这个makefile配置的是hello.c不能改名字的!!!非高手怕报错,将下面所有东西,全部放在liu文件夹内 提示:下面程序直接在liunx浏览器里面复制即可,不用敲,很多同学容易敲错,报错找不到问题所在。 程序中liuhangyu可改成你的名字 #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/cdev.h> #include <linux/kdev_t.h> #include <linux/fs.h> //file_operations MODULE_LICENSE ("GPL"); int i = 10; struct file_operations ops; struct cdev mycdev; int major = 100; int minor = 1; dev_t dev; int j= 0; int k= 0; int myopen(struct inode *pinode,struct file *pfile) { j++; printk(KERN_INFO "liuhangyu myopen run j= %d\n",j); return 0; } int myclose(struct inode *pinode,struct file *pfile) { k++; printk(KERN_INFO "liuhangyu myclose run k= %d\n",k); return 0; } void liuhangyu_init(void) { int ret; mycdev.owner=THIS_MODULE; dev = MKDEV(major,minor); ret = register_chrdev_region(dev,1,"liuhangyu"); if(ret==-1) { printk(KERN_INFO "dev cant't use\n"); ret = alloc_chrdev_region(&dev,1,1,"liuhangyu"); //automatic allocation dev if(ret==0) { printk(KERN_INFO "alloc : major= %d\n",MAJOR(dev)); } else { printk(KERN_INFO "alloc error\n"); return ; } } else { printk(KERN_INFO "dev can use\n"); } ops.owner=THIS_MODULE; ops.open=myopen; ops.release=myclose; cdev_init(&mycdev,&ops); cdev_add(&mycdev,dev,1); //mycdev send dev,equipment 1 return ; } static int __init hello_init (void) { i ++; liuhangyu_init(); //init printk (KERN_INFO "driver init,i = %d\n",i); return 0; } static void __exit hello_exit (void) { i ++; printk (KERN_INFO "driver exit,i = %d\n",i); unregister_chrdev_region(dev,1); cdev_del(&mycdev); } module_init (hello_init); module_exit (hello_exit); 4.保存下一步分别输入 make 回车 insmod hello.ko回车 5.完成后打开第二TM窗口,在同目录下,创建同理app.c程序,这个是应用层程序。 #include "stdio.h" #include "fcntl.h" #include "unistd.h" #include "stdlib.h" int main() { int fd; int q = 0; while(1) { fd = open("./liuhangyu",O_RDWR,0777) ; if(fd==-1) { printf("open error\n"); return -1; } q ++; printf("liuhangyu open run q = %d\n",q); sleep (8); close(fd); q ++; printf("liuhangyu close run q = %d\n",q); sleep (8); } return 0; }6.输入 mknod ./liuhangyu c 100 1 7.输入 gcc -o app app.c 8.输入./app观察2个窗口现象,每隔几秒给第一个窗口输入dmesg可以看到通信是成功的 图片 图片 以上则完成全部测试,下面讲解退出 9.输入键盘敲Ctrl+C强制退出app程序 10 分别输入rmmod hello.ko回车,make clean回车 好下课!
嵌入式&系统
刘航宇
5年前
10
834
11
2021-05-01
matlab实现灰度图像空间域滤波
实验目的:掌握采用图像灰度图像空间域平滑、去噪的一般方法方法,并编程实现。 实验内容:编程实现灰度图像空间域滤波:至少包括 3×3、5×5窗口的均值滤波与中值滤波,并比较不同方案增强后的效果及影响因素。 实验平台:Matlab 实验代码: %matlab实现灰度图像空间域滤波,自定义窗口的均值、中值、高斯滤波,189064238刘航宇 try %步骤一:彩色、灰度变换 h=imread('D:\图片\image\liu.jpg'); %读入彩色图片 subplot(2,2,1),imshow(h);title('原图'); %显示原图像 c=rgb2gray(h); %把彩色图片转化成灰度图片,256级 subplot(2,2,2),imshow(c),title('原始灰度图象'); %显示原始图象 g=imnoise(c,'gaussian',0.1,0.002); %加入高斯噪声 subplot(2,2,3),imshow(g),title('加入高斯噪声之后的图象'); %显示加入高斯噪声之后的图象 %步骤二:用系统预定义滤波器进行均值滤波 n=input('请输入均值滤波器模板大小\n'); A=fspecial('average',n); %生成系统预定义的3X3滤波器 Y=filter2(A,g)/255; %用生成的滤波器进行滤波,并归一化 figure,imshow(Y),title('用系统函数进行均值滤波后的结果'); %显示滤波后的图象 %步骤三:用Matlab系统函数进行中值滤波 n2=input('请输入中值滤波的模板的大小\n'); Y1=medfilt2(g,[n2 n2]); %调用系统函数进行中值滤波,n2为模板大小 figure,imshow(Y1),title('用Matlab系统函数进行中值滤波之后的结果'); %显示滤波后的图象 %步骤四:用matlab系统函数进行高斯滤波 n3=input('请输入高斯滤波器的均值\n'); k=input('请输入高斯滤波器的方差\n'); A2=fspecial('gaussian',k,n3); %生成高斯序列 Y2=filter2(A2,g)/255; %用生成的高斯序列进行滤波 figure,imshow(Y2),title('用Matlab函数进行高斯滤波之后的结果'); %显示滤波后的图象 catch %捕获异常 disp(lasterr); %如果程序有异常,输出 endps:方差填1,2,3,4任意一个即可 步骤及其实验现象: 图片 然后输入模板大小 图片 然后产生三个图窗 图片 图片 图片 然后输入 clc;clear 重新输入本代码,完成5*5模板,在此不再赘述。 结果分析: 请自行上网查询均值、中值、高斯滤波区别、学习。
通信&信息处理
刘航宇
5年前
0
570
5
2021-04-24
基于DSP实现FIR滤波器实验解答
主频80MHZ,晶振20MHZ,定时125us,4阶滤波器,0.1,0.2,-0.1,-0.2,端口4进8出实现: asm程序 .title "FIR.asm" .mmregs .def _c_int00 STACK .usect "stk",10H .sect "vectors" x .usect "x",4 h .usect "h",4 .bss y,1 PA4 .set 4 PA8 .set 8 .data table .word 1*32768/10 .word 2*32768/10 .word -1*32768/10 .word -2*32768/10 .text _c_int00: LD #0006h,DP STM #STACK+10H,SP SSBX INTM RSBX SXM STM #0825H,PMST STM #0669H,TCR STM #3007H,CLKMD STM #999,PRD STM #008H,IMR STM #0FFFH,IFR SSBX FRCT STM #h,AR2 RPT #3 MVPD table,*AR2+ STM #y,AR5 STM #x+3,AR1 STM #h+3,AR2 STM #3,AR0 STM #x,AR4 FIR: PORTR PA4,*AR3 LD *AR1-,T MPY *AR2-,A ;4 LTD *AR1- MAC *AR2-,A ;3 LTD *AR1- MAC *AR2-,A ;2 LTD *AR1+0 MAC *AR2+0,A ;1 STH A,*AR5 PORTW *AR5,PA8 RETE loop: B loop B _c_int00 nop nop NMT rete nop nop nop SINT17 .space 4*14*16 TIN0: rsbx intm rete NOP NOP .space 4*18*16 TINT: B FIR nop nop .endcmd文件 MEMORY {PAGE 0: VECS: origin=0800H,length=0500H PROG: origin=1600H,length=0500H DATA: origin=2400H,length=0500H PAGE 1: BSS: origin=0300H,length=0200H XSPACE: origin=0500H,length=0010H HSPACE: origin=0510H,length=0010H STACK: origin=0600H,length=0500H } SECTIONS { .data :>DATA PAGE 0 .text :>PROG PAGE 0 vector :>VECS PAGE 0 .bss :>BSS PAGE 1 x :>XSPACE PAGE 1 h :>HSPACE PAGE 1 .stk :>STACK PAGE 1 }实验现象: 图片 波形: 图片
通信&信息处理
刘航宇
5年前
1
673
2
2021-04-10
进程间有名管道通信,并可靠退出
使用管道通信实现两个进程的单机双向通信,并保证可靠退出。免get函数,利用kill结束所有进程办法,小刘原创: 管道程序: 1.随意命名比如 vim g.c复制下面程序,在Linux系统浏览器可以输入本站网址sciarm.com,可以直接复制,不用敲代码。 2.然后 gcc g.c 3../a.out #include "stdio.h" int main() { int ret; ret = mkfifo("./first",0777); if(ret == -1) { printf("create first error\n"); return -1; } ret = mkfifo("./second",0777); if(ret == -1) { printf("create second error\n"); return -2; } return 0; }A端程序 1.同理创建 vim A.c 复制下面程序 2.gcc A.c -o A 3.然后 ./A #include "stdio.h" #include "fcntl.h" #include "string.h" int main() { int pid; int fd; int i; char buf[32] = {0}; pid = fork(); if(pid > 0) // write first { fd = open("./first",O_WRONLY,0777); if(fd == -1) { printf("open first error\n"); return -1; } while(1) { printf("please input send data\n"); scanf("%s",buf); write(fd,buf,strlen(buf)); if(buf[0] == 'q') { kill(pid,9); waitpid(pid,NULL,0); break; } for(i = 0 ;i < 32 ;i ++) { buf[i] = 0; } } close(fd); } if(pid == 0) // read second { fd = open("./second",O_RDONLY,0777); if(fd == -1) { printf("open error\n"); return -2; } while(1) { read(fd,buf,32) ; if(buf[0] == 'q') { kill(pid,9); waitpid(pid,NULL,0); break; } printf("recv from B %s\n",buf); for(i = 0 ;i < 32; i ++) { buf[i] = 0; } } close(fd); } return 0; }B端程序 打开另一个TM命令窗口,也要root模式下 1.同理创建 vim B.c 复制下面程序 2.gcc B.c -o B 3.然后 ./B #include "stdio.h" #include "fcntl.h" #include "string.h" int main() { int pid; int fd; int i; char buf[32] = {0}; pid = fork(); if(pid > 0) // write first { fd = open("./first",O_RDONLY,0777); if(fd == -1) { printf("open first error\n"); return -1; } while(1) { read(fd,buf,32); if(buf[0] == 'q') { kill(pid,9); waitpid(pid,NULL,0); break; } printf("recv from A %s\n",buf); for(i = 0 ;i < 32 ;i ++) { buf[i] = 0; } } close(fd); } if(pid == 0) // read second { fd = open("./second",O_WRONLY,0777); if(fd == -1) { printf("open error\n"); return -2; } while(1) { printf("please input send data\n"); scanf("%s",buf); write(fd,buf,strlen(buf)) ; if(buf[0] == 'q') { kill(pid,9); waitpid(pid,NULL,0); break; } for(i = 0 ;i < 32; i ++) { buf[i] = 0; } } close(fd); } return 0; }打开第三个窗口进入超管模式输入: ps -axj 可以看到4个进程 图片 A端:随便输入一些字符,B就能接收到,输入q,两者4个进程可以全面杀掉 图片 B端: 图片 再次输入: ps -axj 全部杀掉进程图: 图片
嵌入式&系统
# 嵌入式
刘航宇
5年前
3
658
12
2021-04-08
向量组的线性相关性及其判断
向量组的线性相关性 1.N维向量的定义(注:向量实际上就是特殊的矩阵——行矩阵和列矩阵;默认向量a为列向量)。 2.向量的运算: 图片 3.线性组合 图片 4.向量组的线性相关性 (1)线性相关与线性无关的定义 设 ,若k1,k2,…,kn不全为0,称线性相关;若全为0,称线性无关。 (2)判别方法: ① r(α1,α 2,…,αn)<n,线性相关; r(α1,α 2,…,αn)=n,线性无关。 ②若有n个n维向量,可用行列式判别: n阶行列式|{ Aij}|=0,线性相关(≠0无关) 图片 5.极大无关组与向量组的秩 (1)定义:最大无关组所含向量个数称为向量组的秩 (2)求法:设A=( a1,a2,…,an ),将A化为阶梯阵,则A的秩即为向量组的秩,而每行的第一个非零元所在列的向量就构成了极大无关组。 (3)矩阵的秩等于它的行向量组的秩也等于它的列向量组的秩。
我的随笔
刘航宇
5年前
0
1,616
5
2021-04-06
判断曲线渐近线
水平、垂直渐近线 图片 图片 斜渐近线 y=kx+b 图片
我的随笔
刘航宇
5年前
0
779
3
上一页
1
...
8
9
10
...
13
下一页