分类 📖电子&通信 下的文章 - 我的学记|刘航宇的博客
首页
📊归档
⏳时光机
📬留言
🐾友链
资助名单
推荐
🎓843课程班
🎵音乐
🏞️壁纸
搜 索
1
【NPN/PNP三极管】放大电路饱和失真和截止失真的区别
12,710 阅读
2
论文写作中如何把word里面所有数字和字母替换为新罗马字体
7,156 阅读
3
【高数】形心计算公式讲解大全
6,642 阅读
4
【1】基于STM32CubeMX-STM32GPIO端口开发
5,153 阅读
5
如何判断运放是工作在线性区还是非线性区
4,997 阅读
🌻微语&随笔
励志美文
我的随笔
写作办公
📖电子&通信
嵌入式&系统
通信&信息处理
编程&脚本笔记
🗜️IC&系统
FPGA&ASIC
VLSI&IC验证
EDA&虚拟机
💻电子&计算机
IP&SOC设计
机器学习
软硬件算法
登录
搜 索
标签搜索
嵌入式
ASIC/FPGA
VLSI
SOC设计
机器学习
天线设计
C/C++
EDA&虚拟机
软件算法
小实验
信号处理
电子线路
通信&射频
随笔
笔试面试
硬件算法
Verilog
软件无线电
Python
DL/ML
刘航宇
嵌入式系统&数字IC爱好者博客
累计撰写
302
篇文章
累计收到
527
条评论
首页
栏目
🌻微语&随笔
励志美文
我的随笔
写作办公
📖电子&通信
嵌入式&系统
通信&信息处理
编程&脚本笔记
🗜️IC&系统
FPGA&ASIC
VLSI&IC验证
EDA&虚拟机
💻电子&计算机
IP&SOC设计
机器学习
软硬件算法
页面
📊归档
⏳时光机
📬留言
🐾友链
资助名单
推荐
🎓843课程班
🎵音乐
🏞️壁纸
用户登录
登录
📖电子&通信(共112篇)
找到
112
篇与
📖电子&通信
相关的结果
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:担心报错请用下面图片处理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张图,不要出现数组超出
2021年05月11日
549 阅读
3 评论
3 点赞
2021-05-09
嵌入式实战—应用open调用内核open,应用close调用内核close通信程序
应用open调用内核open,应用close调用内核close通信程序1.在TM命令窗口中,不要进入sudo -s,先创建一个普通目录 mkdir liu2.下载已经配置好的Makefile文件(在虚拟机liunx系统浏览器输入tiie.cn网址,找到本文,下载Makefile文件),将这个文件移动到创建的liu文件夹内,如果下载后名称不是Makefile,重命名下载的文件为Makefile::(你懂的) ::(你懂的) 不是我吹,我的云盘下载速度吊打某度云,免费不限速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 17.输入 gcc -o app app.c8.输入./app观察2个窗口现象,每隔几秒给第一个窗口输入dmesg可以看到通信是成功的以上则完成全部测试,下面讲解退出9.输入键盘敲Ctrl+C强制退出app程序10 分别输入rmmod hello.ko回车,make clean回车好下课!
2021年05月09日
598 阅读
10 评论
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模板,在此不再赘述。结果分析:请自行上网查询均值、中值、高斯滤波区别、学习。
2021年05月01日
346 阅读
0 评论
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 }实验现象:波形:
2021年04月24日
347 阅读
1 评论
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] = ; 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] = ; 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 全部杀掉进程图:
2021年04月10日
485 阅读
3 评论
12 点赞
2021-04-01
基于点处理的图像增强matlb实现线性变换和直方图均衡
引言图像增强是图像处理中的基本内容之一,在图像处理中占有非常重要的地位。图像增强是指对图像的某些特征,如边缘、轮廓或对比度等进行强调或尖锐化。当一幅图像曝光不足或过度,造成对比度过小或过大而不能显示具体细节,通过增加这些细节的动态范围改善图像的视觉效果。图像增强可以突出图像中所感兴趣的特征信息,改善图像的主观视觉质量,提高图像的可懂度。增强的首要目标是处理图像,使其比原始图像更适合于特定应用。图像增强的方法主要分为两类: 空间域增强法和频域增强法。“空间域”一词是指图像平面本身,这类方法是以对图像像素直接处理为基础的;“频率域”处理技术是以修改图像的傅氏变换为基础的。 增强处理可将其灰度范围拉伸到0-255 的灰度级之间来显示,从而使图像对比度提高,质量改善。增强主要以图像的灰度直方图最为分析处理的基础。直方图均衡化能够增强整个图像的对比度,提高图像的辨析程度,算法简单,增强效果好。基于点处理的图像增强方法有:灰度线性变换、灰度非线性变换、灰度分段线性变换和直方图均衡化,本文主要讨论灰度分段线性变换和直方图均衡化对图像的增强,并用MATLAB进行实验验证。图像增强的研究意义图像增强是数字图像处理的最基本的方法之一,它是为了改善视觉效果或便于人或机器对图像的分析理解,根据图像的特点或存在的问题,以及应用目的所采取的改善图像质量的方法或加强图像的某些特征的措施。图像在成像、采集、运输、复制等过程中不可避免地会造成某些降质。如在成像过程中由于光学系统会导致图像失真,不同的光照条件会使图像的曝光度差异很大,运动状态下成像会使图像模糊;而在传输过程中,各种噪声和干扰将污染图像。因此,通常需要对降质的图像进行预处理,以满足后期处理及分析的需要。图像复原是改善图像的一类方法,这类方法会尽可能还原图像的本来面目,追求提高图像的保真度。而图像增强则是一类追求图像可懂度的方法,通过处理有选择地突出某些感兴趣的信息,便于人或机器分析这些信息,抑制一些无用的信息,以提高图像的使用价值。图像增强处理后的图像比原始图像更适合于具体应用。由于成像和传输过程的差异性很大,决定了图像增强的方法只能有选择性地使用。实际应用时,需要根据所针对的处理图像、需要解决的问题以及最终要达到的效果等情况,合理选择合适的图像增强算法,并做适当的优化。图像增强处理后的图像比原始图像更适合于具体应用。由于成像和传输过程的差异性很大,决定了图像增强的方法只能有选择性地使用。实际应用时,需要根据所针对的处理图像、需要解决的问题以及最终要达到的效果等情况,合理选择合适的图像增强算法,并做适当的优化。实验目的1、了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学理论知识。2、掌握灰度分段线性变换的图像增强方法。3、学会用直方图均衡化对图像进行增强。实验内容一、灰度分段线性变换1、理论基础:在某些情况下,为了将图像灰度级整个范围(AB) 或其中某一段扩展或压缩到另一灰度范围(z1,zk) 质内,称灰度的线性变换。分段线性变换和灰度的线性变换有点类似,都用到了灰度的线性变换。但不同之处在于分段线性变换不是完全的线性变换,而是分段进行线性变换。将图像灰度区间分成两段乃至多段,分别作线性变换称之为分段线性变换,如图,分段线性变换的优点是可以根据用户的需要,拉伸特征物体的灰度细节,相对抑制不感兴趣的灰度级。图中的(0,a),(a,b),(b,255)等变换区间边界能通过键盘随时做交换式输入,因此,分段线性变换是非常灵活的。它的灰度变换函数如图所示,函数表达式如下:式中,(a,c)和(b,d)是图中两个转折点坐标。该变换函数的运算结果是将原图在a和b之间的灰度拉伸到c和d之间。通过选择的拉伸某段灰度区间,能够更加灵活地控制图像灰度直方图的分布,以改善输出图像量。如果一幅图像灰度集中在较暗的区域而导致图像偏暗,可以用灰度拉伸功能来拉伸(斜率>1)物体灰度区间以改善图像质量;同样如果图像灰度集中在较亮的区域而导致图像偏亮,也可以用灰度拉伸功能来压缩(斜率<1)物体灰度区间以改善图像质量。2、程序设计:clc; clear all; %刘航宇 X1=imread('图片路径'); subplot(2,2,1),imshow(X1);title('原图'); f0=0;g0=0;%折线点赋值 f1=20;g1=10; %参数自己改动,不要完全复制我的 f2=130;g2=180; f3=255;g3=255; subplot(2,2,2),plot([f0 f1 f2 f3],[g0 g1 g2 g3]); axis tight,xlabel('f'),ylabel('g'),title('灰度变换曲线'); r1=(g1-g0)/(f1-f0);%第一段折线的斜率 b1=g0-r1*f0;%计算截距1 r2=(g2-g1)/(f2-f1); b2=g1-r2*f1; r3=(g3-g2)/(f3-f2); b3=g2-r3*f2; [m,n]=size(X1); for i=1:m for j=1:n f=X1(i,j); if(f<f1) g(i,j)=r1*f+b1; elseif(f>=f1)&(f<=f2) g(i,j)=r1*f+b1; else(f>=f2)&(f<=f3) g(i,j)=r3*f+b3; end end end subplot(2,2,3),imshow(g);title('灰度变换后');3、运行结果:二、直方图均衡化1、理论基础:(1)直方图的定义在图像处理中提到的直方图是指灰度直方图。它定义为统计图像中具有某种灰度的像素数目(或频率=像素数目/图像总的像素个数)的函数。灰度直方图概括了图像中各灰度级的含量,提供了原图的灰度值分布情况[12],也可以说给出了1幅图所有灰度值的整体描述。什么是灰度直方图呢?灰度直方图(histogram)是灰度级的函数,它表示图像中具有每种灰度级的象素的个数,反映图像中每种灰度出现的频率[8]。设变量r代表图像中像素灰度级。在图像中,像素的灰度级可作归一化处理,这样,r的值将限定在下述范围之内: 0 ≤ r ≤ 1 在灰度级中,r=0代表黑,r=1代表白。对于一幅给定的图像来说,每一个像素取得[0,1]区间内的灰度级是随即的,也就是说r是一个随即变量。假定对每一瞬间它们是连续的随即变量,那么,就可以用概率密度函数pr(r)来表示原始图像的灰度分布。如果用直角坐标系的横轴代表灰度级r,用纵轴代表灰度级的概率密度函数pr(r),这样就可以针对一幅图像在这个坐标系中作一条曲线来。这条曲线在概率论中就是分布密度曲线(见图2.1)从图像灰度级的分布可以看出一幅图像的灰度分布特性。例如上图中的两个灰度密度分布函数中可以看出: (a)的大多数像素灰度值取在较暗的区域,所以这幅图像较暗,一般在摄影过程中暴光过强就会造成这种后果;而(b)图像的像素灰度值集中在亮区,因此,图像(b)的特性将偏亮,一般在摄影中暴光太脆弱将导致这种结果。当然,从两幅图像的分布来看图像的质量均不理想。为了有利于数字图像处理,必须引入离散形式。在离散形式下,用rk代表离散灰度级,用pr(rk)代表pr(r),并且有下式成立:(2)灰度直方图面积为A的连续图像f(x,y)经数字化后,成为M行N列的数字图象f(m,n)。一般而言,在数字图像f(m,n)中取不同灰度值的像素的数目是不同的。直方图是用于表达图像灰度分布情况的统计图表[4]。其横坐标是灰度值r,纵坐标是出现这个灰度值的概率密度p(r)(对连续图像f(x,y)而言),或者是出现这个灰度值的概率值p(ri)(对数字图像f(m,n)而言),参见图2.3。(3)直方图均衡化直方图均衡化是图象增强中点运算的一种最常用的直方图修正法[10]。其实质是减少图像的灰度等级以换取对比度的扩大。它把给定图像的直方图分布改造成均匀直方图分布,其本质是扩大了量化间隔,减少量化级别。因此,会出现这样的效果,原来灰度不同的象素经处理后可能变为相同,形成了一片相同灰度的区域;各区域之间有明显的边界,出现伪轮廓,图像的对比度增加。但是由于在均衡化过程中,原直方图上频数较少的灰度级被并入少数几个或一个灰度级,对应的图像部分将得不到增强。直方图均衡化处理的中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布[5]。对于图像的灰度变换,我们这里介绍一种稍微复杂一点的方法,既直方图均衡化。直方图均衡化是灰度变换的一个重要应用,广泛应用在图像增强处理中,它是以累计分布函数变换为基础的直方图修正法,可以产生一幅灰度级分布具有均匀概率密度的图像,扩展了像素的取值动态范围。若像素点的原灰度为R,变换后的灰度为S,需要注意的是R、S是归一化后的灰度值,其灰度变换函数T()为:2.统计原始图像各灰度级的像素数目nk3.计算原始图像直方图各灰度级的频率数4.计算原始图像的累计直方图5.取整计算:Sk=int[(N-1)tk+k/N]6.确定映像关系:Sk-->tk7统计新直方图各个灰度级的像素Nk8.计算新的直方图:pt(tk)=nk/N 2、程序设计:clear all %预处理,彩图灰度化 PS=imread('图片位置');%读入彩色图像文件 imshow(PS) %显示出来 title('输入的彩色图像') %刘航宇 imwrite(rgb2gray(PS),'PicSampleGray.bmp'); %将彩色图片灰度化并保存 PS=rgb2gray(PS); %灰度化后的数据存入数组 %二、绘制直方图 [m,n]=size(PS); %测量图像尺寸参数 GP=zeros(1,256); %预创建存放灰度出现概率的向量 for k=0:255 GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置 end figure,bar(0:255,GP,'g') %绘制直方图 title('原图像直方图') xlabel('灰度值') ylabel('出现概率') %三、直方图均衡化 S1=zeros(1,256); for i=1:256 for j=1:i S1(i)=GP(j)+S1(i); %算sk end end S2=round((S1*256)+0.5); %将Sk归到相近级的灰度 for i=1:256 GPeq(i)=sum(GP(find(S2==i))); %计算现有每个灰度级出现的概率 end figure,bar(0:255,GPeq,'b') %显示均衡化后的直方图 title('均衡化后的直方图') xlabel('灰度值') ylabel('出现概率') %四、图像均衡化 PA=PS; for i=0:255 PA(find(PS==i))=S2(i+1); %各个像素归一化赋给这个像素 end figure,imshow(PA) %显示均衡化后的图像 title('均衡化后图像') imwrite(PA,'PicEqual.bmp'); %图片格式自己改改,中文描述改改,不要光复制我的程序 3、运行结果:原图:4、结果分析:直方图均衡化是图像增强技术的基本方法,本文分析了这种处理方法的基本理论,并用Matlab 进行实验,结果表明,直方图均衡化在一定程度上改善了图像的对比度差和灰度动态范围,增强了图像的可读性,提高了地物的可分性,有利于进行遥感图像的目视解译。 该算法简单,是一种行之有效的图像增强算法。
2021年04月01日
633 阅读
1 评论
6 点赞
2021-03-25
图像增强级matlab实现中值滤波
1.何谓图像平滑?试述均值滤波的基本原理。2.何谓中值滤波?有何特点?答:1.为抑制噪声、改善图像质量所进行的处理称为图像平滑或去噪。均值滤波的基本原理:用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度个g(x,y),即个g(x,y)=1/m∑f(x,y) m为该模板中包含当前像素在内的像素总个数。2.中值滤波是对一个滑动窗口内的诸像素灰度值排序,用其中值代替窗口中心像素的灰度值的滤波方法,是一种非线性的平滑法。特性:(1)对离散阶跃信号不产生影响,连续个数小于窗口长度一半的离散脉冲将被平滑,三角函数的顶部平坦化;(2)令C为常数,则:Med=CMed Med=C+Med Med≠Med+Med(3)中值滤波后,信号频谱基本不变答:1.中值滤波是对一个滑动窗口的诸像素灰度值排序,用中间值代替窗口中心像素的原来灰度值,它是一种非线性的图像平滑法。中值滤波后的结果为(忽略边界):2.局部平滑法(邻域平均法 或 移动平均法)是用邻域各像素的灰度平均值代替该像素原来的灰度值,实现图像的平滑。比较:中值滤波法和邻域平均法均能有效削弱椒盐噪声,但中值滤波法比邻域平均法更有效,且滤波后图像中的轮廓比较清晰。3.Laplace算子为何能增强图像边缘?4.什么是 伪彩色增强?常用的伪彩色增强有哪些方法?答:3.(1)由于灰度均匀的区域或斜坡中间▽f(x,y)为0,Laplacian增强算子不起作用;(2)在斜坡底或低灰度侧形成“下冲”,而在斜坡顶或高灰度侧形成“上冲”。Laplacian增强算子具有突出边缘的特点4.伪彩色增强对不同灰度级赋予不同的颜色,从而将灰度图像变为彩色图像。方法:灰度分层法、灰度变换法、频域滤波法图像锐化处理有几种方法? 答:微分法、非锐化滤波、高频增强滤波求图像梯度例题设1 幅7×7大小的二值图像中心处有1 个值为0 的3×3大小的正方形区域,其余区域的值为1,如题下图所示。请使用Sobel 算子来计算这幅图的梯度,并画出梯度幅度图(需给出梯度幅度图中所有像素的值)matlab中值滤波代码I=[ 1 7 1 8 1 7 1 1 1 1 1 5 1 1 1 1 1 1 5 5 5 1 1 7 1 1 5 5 5 1 8 1 8 1 1 5 1 1 1 1 8 1 1 5 1 1 8 1 1 1 1 5 1 1 1 1 1 7 1 8 1 7 1 1 ]; [M N]=size(I); I1=zeros(M,N); for i=2:M-1 for j=2:N-1 temp=I(i-1:i+1,j-1:j+1); temp=sort(temp); temp=sort(temp'); I1(i,j)=temp(2,2); end end imshow(I,[]); figure,imshow(I1,[]);
2021年03月25日
297 阅读
0 评论
2 点赞
2021-03-21
通信滤除$字符分段保留重要信息代码
通信中滤除$字符分段保留重要信息代码实现效果初级代码main实现#include "stdio.h" int main() { int i, j; char temp[16][32] = ; char str[128] = ; printf("please input a string\n"); scanf("%s", str); printf("%s\n", str); char* p = &str[0]; i = 0; j = 0; while (1) { if (*p == 0) { break; } if (*p != '$') { temp[i][j] = *p; j++; } else { i++; j = 0; } p++; } for (j = 0; j <= i; j++) { printf("%s\t", temp[j]); } return 0; } 进阶调用函数#include "stdio.h" void fun(char *p){ int i,j; char temp[16][32]=; i=0; j=0; while(1) { if(*p==0) if(*p!='$') { temp[i][j]=*p; j++; } else {i++; j=0; } p++; } for(j=0;j<=i;j++) { printf("%s\t",temp[j]); } return; } int main(){ char str[128]=; printf("please input string\n"); scanf("%s",str); fun(str); printf("\n"); return 0; }再次进阶#include "stdio.h" int len; char **fun(char *p){ int i,j; static char *m[16]; static char temp[16][32]=; i=0; j=0; while(1) { if(*p==0) if(*p!='$') { temp[i][j]=*p; j++; } else {i++; j=0; } p++; } for(j=0;j<=i;j++) { printf("%s\t",temp[j]); } len=i+1; for(i=0;i<16;i++) { m[i]=&temp[i][0]; } return m; //&m[0] } int main(){ char **k; int i; char str[128]=; printf("please input string\n"); scanf("%s",str); k=fun(str); for(i=0;i<len;i++){ printf("%s\t",*k); } return 0; }
2021年03月21日
195 阅读
1 评论
3 点赞
2021-03-19
数字图像处理绪论、基础、图像增强简答
绪论什么是图像?模拟图像处理与数字图像处理主要区别表现在哪些方面?图像处理学包括哪几个层次?各层次间有何区别和联系?图像处理学主要与哪些学科有关?数字图像处理主要应用有哪些?答:1.图像:是对客观对象的一种相似性的、生动性的描述或写真。数字图像:一种空间坐标和灰度均不连续的、用离散数字(一般用整数)表示的图像。灰度图像:在计算机领域中,灰度数字图像是每个像素只有一个采样颜色的图像。在数字图像领域之外,“黑白图像”也表示“灰度图像”,例如灰度的照片通常叫做“黑白照片”。2.主要区别:模拟图像处理是利用光学、照相方法对模拟图像的处理。优点: 速度快,一般为实时处理,理论上讲可达到光的速度,并可同时并行处理。缺点:精度较差,灵活性差,很难有判断能力和非线性处理能力数字图像处理,简称计算机图像处理,指将图像信号转换成数字格式并利用计算机对数据进行处理的过程)是利用计算机对数字图像进行系列操作,从而达到某种预期目的的技术.优点: 精度高,内容丰富,可进行复杂的非线性处理,灵活的变通能力,一只要改变软件就可以改变处理内容3.数字图像处理可分为三个层次:狭义图像处理、图像分析和图像理解。狭义图像处理是对输入图像进行某种变换得到输出图像,是一种图像到图像的过程。图像分析主要是对图像中感兴趣的目标进行检测和测量,从而建立对图像目标的描述,图像分析是一个从图像到数值或符号的过程。图像理解则是在图像分析的基础上,基于人工智能和认知理论研究图像中各目标的性质和它们之间的相互联系,对图像内容的含义加以理解以及对原来客观场景加以解译,从而指导和规划行动。区别和联系:狭义图像处理是低层操作,它主要在图像像素级上进行处理,处理的数据量非常大;图像分析则进入了中层,经分割和特征提取,把原来以像素构成的图像转变成比较简洁的、非图像形式的描述;图像理解是高层操作,它是对描述中抽象出来的符号进行推理,其处理过程和方法与人类的思维推理有许多类似之处。4.高数、信号处理、计算机开发语言(vc、matlab)、线性代数5.1)、文化艺术方面 电视画面的数字编辑;动画的制作,电子图像游戏;纺织工艺品设计,服装设计与制作,发型设计;文物资料照片的复制和修复;运动员动作分析和评分2)、机器人视觉 机器人三维景物理解和识别;自主机器人军事侦察、危险环境;邮政、医院和家庭服务的智能机器人;装配线工件识别、定位智能机器人;太空机器人3)、视频和多媒体系统 电视制作系统广泛使用的图像处理、变换、合成;多媒体系统中静止图像和动态图像的采集、压缩、处理、存贮和传输4)、科学可视化图像处理和图形学紧密结合,形成了科学研究各个领域新型的研究工具5)、电子商务身份认证;产品防伪;水印技术基础图像数字化包括哪两个过程?每个过程对数字化图像质量有何影响?数字化图像的数据量与哪些因素有关?数字化设备由哪几部分组成?数字化设备包括哪些主要特征?答:1.图像数字化主要包括取样和量化这两个过程,其中取样过程是使图像空间坐标数字化,而量化过程是使图像函数值(灰度值)数字化。 取样(数字化空间坐标)过程影响着数字化图像的空间分辨率(图像中可辨别的最小细节);而量化(数字化灰度值)过程影响着数字化图像的灰度级分辨率(灰度级别中可辨别的最小变化)采样间隔越大,所得图像像素数越少,空间分辨率低,质量差,严重时出现像素呈块状的国际棋盘效应;采样间隔越小,所得图像像素越多,空间分辨率高,质量好,但数据量大。量化等级越多,所得图像层次越丰富,灰度分辨率越高,质量越好,但数据量大;量化等级越少,图像层次欠丰富,灰度分辨率低,质量变差,会出现假轮廓现象,但数据量小。2.1)图像的大小有关,图像大数据量也就大。2)采样间隔越大,量化等级越小,数据量越小;采样间隔越小,量化等级越多,数据量越大。3)与一个像素在计算机中表示的方式有关,一个像素占用的字节数多,数据量大。3.1)采样孔:是数字化设备能够单独地观测特定的图像元素二不受图像其他部分的影响。(2)图像扫描机构:使采样孔按照预先确定的方式在图像上移动,从而按顺序观测没一个像素。(3)光传感器:通过采样检测图像的每一个像素,通常采用CCD阵列。(4)量化器:将传感器输出的连续量转化整数值,如A/D转换电路。(5)输出存储装置:将量化器产生的灰度值按适当的格式存储起来。图像增强1.什么是灰度直方图?有哪些应用?2.从灰度直方图你能获得图像的哪些信息?3.图像增强的目的是什么? 它包含哪些内容?4.在直方图修改技术中采用的变换函数的基本要求是什么?5.直方图均衡化处理采用何种变换函数?答:1.灰度直方图是灰度级的函数,它反映了一副图像中具有某种灰度级的像素的个数、各灰度级像素出现的频率。应用:用于判断图像量化是否恰当;用于确定图像二值化的阈值;当物体部分的灰度值比其它部分灰度值大时,可利用直方图统计图像中物体的面积;计算图像信息量H(熵);通过变换图像的灰度直方图,可使图像更清晰,达道图像增强的目的。2.灰度范围,灰度级分布,整幅图像的平均亮度等3.采用一系列技术去改善图像的视觉效果,或将图像转换成一种更适合于人或机器进行分析和处理的形式。有选择地突出某些感兴趣的信息,同时抑制一些不需要的信息,提高图像的使用价值。4.T(r)为变换函数,应满足①在0 ≤ r ≤ 1内为单调递增函数,保证灰度级从黑到白的次序不变;②在0 ≤ r ≤ 1内,有0 ≤ T(r) ≤ 1,确保映射后的像素灰度在允许的范围内。累积分布函数在原始图像灰度分布在较窄区间,引起图像细节不够清晰。直方图均衡化减少图像灰度级,对比度扩大答:统计0(5/64),1(12/64),2(16/64),3(8/64),4(1/64),5(7/64),6(10/64),7(5/64)出现频率用matlb做图定义数组 v=[5/64 12/64 16/64 8/64 1/64 7/64 10/64 5/64]绘图如图所示: 2.原始图像概率分布及新灰度计算结果为:
2021年03月19日
304 阅读
0 评论
4 点赞
2021-03-18
马尔科夫链讲解(Markov)
说到马尔可夫链,在机器学习界真是无人不知,无人不晓。谷歌用于确定搜索结果顺序的算法,称为PageRank,就是一种马尔可夫链。在卷积网络出现之前,HMM马尔可夫模型也是语音处理的常用方法。到底什么才是马尔可夫链,之前看了几个介绍特别生动,这里总结一下:马尔可夫链马尔科夫链是指数学中具有马尔科夫性质的离散事件随机过程。在其每一步中,系统根据概率分布可以从一个状态变到另一个状态,也可以保持当前状态。状态的改变叫做转移,与不同的状态改变相关的概率叫做转移概率。下图中有两种状态:A和B。如果我们在A,接下来可以过渡到B或留在A。如果我们在B,可以过渡到A或者留在B。在这张图中,从任意状态到任意状态的转移概率是0.5。真正的建模工作者不会总是就画一张马尔科夫链图。 相反,他们会使用“转移矩阵”来计算转移概率。状态空间中的每个状态都会出现在表格中的一列或者一行中。矩阵中的每个单元格都告诉你从行状态转换到列状态的概率。因此,在矩阵中,单元格做的工作和图中的箭头所示是一样。在状态转移矩阵中,行和列都是可能的所有状态,对应位置就是已知行状态,转移到列状态的概率。如果状态空间添加了一个状态,我们将添加一行和一列,向每个现有的列和行添加一个单元格。 这意味着当我们向马尔可夫链添加状态时,单元格的数量会呈二次方增长。因此,转换矩阵就起到了很大的作用(除非你想把法尔科夫链图画的跟丛林一样)。状态转移矩阵从上面可以看出,整个马尔可夫链中的核心就是状态转移矩阵。以股市模型为例,假设初始状态为,然后算之后的状态。 def markov(): init_array = np.array([0.1, 0.2, 0.7]) transfer_matrix = np.array([[0.9, 0.075, 0.025], [0.15, 0.8, 0.05], [0.25, 0.25, 0.5]]) restmp = init_array for i in range(25): res = np.dot(restmp, transfer_matrix) print i, "\t", res restmp = res markov() 输出结果: 0 [ 0.295 0.3425 0.3625] 1 [ 0.4075 0.38675 0.20575] 2 [ 0.4762 0.3914 0.1324] 3 [ 0.52039 0.381935 0.097675] 4 [ 0.55006 0.368996 0.080944] 5 [ 0.5706394 0.3566873 0.0726733] 6 [ 0.58524688 0.34631612 0.068437 ] 7 [ 0.59577886 0.33805566 0.06616548] 8 [ 0.60345069 0.33166931 0.06487999] 9 [ 0.60907602 0.32681425 0.06410973] 10 [ 0.61321799 0.32315953 0.06362248] 11 [ 0.61627574 0.3204246 0.06329967] 12 [ 0.61853677 0.31838527 0.06307796] 13 [ 0.62021037 0.31686797 0.06292166] 14 [ 0.62144995 0.31574057 0.06280949] 15 [ 0.62236841 0.31490357 0.06272802] 16 [ 0.62304911 0.31428249 0.0626684 ] 17 [ 0.62355367 0.31382178 0.06262455] 18 [ 0.62392771 0.31348008 0.06259221] 19 [ 0.624205 0.3132267 0.0625683] 20 [ 0.62441058 0.31303881 0.06255061] 21 [ 0.624563 0.31289949 0.06253751] 22 [ 0.624676 0.3127962 0.0625278] 23 [ 0.62475978 0.31271961 0.06252061] 24 [ 0.6248219 0.31266282 0.06251528]从第18次开始,状态就开始收敛至。如果我们换一个初始状态,比如,继续运行上面的代码,只是将init_array变一下,最后结果为: 0 [ 0.35 0.38 0.27] 1 [ 0.4395 0.39775 0.16275] 2 [ 0.4959 0.39185 0.11225] 3 [ 0.53315 0.378735 0.088115] 4 [ 0.558674 0.365003 0.076323] 5 [ 0.5766378 0.3529837 0.0703785] 6 [ 0.5895162 0.34322942 0.06725438] 7 [ 0.59886259 0.33561085 0.06552657] 8 [ 0.6056996 0.32978501 0.06451539] 9 [ 0.61072624 0.32538433 0.06388944] 10 [ 0.61443362 0.32208429 0.06348209] 11 [ 0.61717343 0.31962047 0.0632061 ] 12 [ 0.61920068 0.31778591 0.06301341] 13 [ 0.62070185 0.31642213 0.06287602] 14 [ 0.62181399 0.31540935 0.06277666] 15 [ 0.62263816 0.31465769 0.06270415] 16 [ 0.62324903 0.31410005 0.06265091] 17 [ 0.62370187 0.31368645 0.06261168] 18 [ 0.62403757 0.31337972 0.06258271] 19 [ 0.62428645 0.31315227 0.06256128] 20 [ 0.62447096 0.31298362 0.06254542] 21 [ 0.62460776 0.31285857 0.06253366] 22 [ 0.62470919 0.31276586 0.06252495] 23 [ 0.62478439 0.31269711 0.0625185 ] 24 [ 0.62484014 0.31264614 0.06251372]到第18次的时候,又收敛到了!这个转移矩阵就厉害了。不管我们的初始状态是什么样子的,只要状态转移矩阵不发生变化,当时,最终状态始终会收敛到一个固定值。马尔可夫链细致平稳条件首先,马尔科夫链要能收敛,需要满足以下条件:可能的状态数是有限的。状态间的转移概率需要固定不变。从任意状态能够转变到任意状态。不能是简单的循环,例如全是从x到y再从y到x。由前面的例子我们不难看出,当与的n次幂相乘以后,发现得到的向量都会收敛到一个稳定值,而且此稳定值与初始向量 无关!那么所有的转移矩阵都有这种现象嘛?或者说满足什么样的条件的转移矩阵会有这种现象?细致平衡条件(Detailed Balance Condition):给定一个马尔科夫链,分布 和概率转移矩阵,如果下面等式成立:则此马尔科夫链具有一个平稳分布(Stationary Distribution)。
2021年03月18日
354 阅读
0 评论
1 点赞
2021-03-17
T分布及T分布表
下表列出了自由度为1-30以及80、100、120等t-分布的单侧和双侧区间值。例如,当样本数量n=5时,则自由度v=4,我们就可以查找表中以4开头的行。该行第5列值为2.132,对应的单侧值为95%(双侧值为90%)。这也就是说,T小于2.132的概率为95%(即单侧),记为Pr(−∞ < T < 2.132) = 0.95;同时,T值介于-2.132和2.132之间的概率为90%(即双侧),记为Pr(−2.132 < T < 2.132) = 0.9。这是根据分布的对称性计算得到的,Pr(T < −2.132) = 1 − Pr(T > −2.132) = 1 − 0.95 = 0.05,因此,Pr(−2.132 < T < 2.132) = 1 − 2(0.05) = 0.9.注意 关于表格的最后一行的值:自由度为无限大(n=120)的t-分布和正态分布等价。
2021年03月17日
873 阅读
0 评论
2 点赞
2021-03-14
liunx系统创建并运行实战一个c程序及常用指令指导
liunx系统运行实战一个c程序学习liunx系统有利于嵌入式、云服务器等学习。下面我们实战创建并运行一个三角图形c程序首先 su rooot 进入超级管理员模式如果你没有超级管理员账号,想搞一个可以看本站嵌入式其他帖子创建永久超级管理员账号办法,或者按课本上代码临时进入root模式然后输入 ls 指令查看目录然后输入 cd 你选的目录名 创建c程序 vim test.c 键盘“a”键可以直接进入编辑模式输入代码例如:#include <stdio.h> int main() { int i,j,n; printf("input ranks n\n"); scanf("%d",&n); for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) printf(" "); for(j=0;j<=i;j++) printf("*"); printf("\n"); } return 0; }或者更换for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) printf(" "); for(j=n-i-1;j<n;j++) printf("*"); printf("\n"); }输入完C代码后,记得“ESC”键切换,输入“:wq”保存退出然后gcc test.c打完gcc test.c编译完C源文件。然后就可以看见a.out的文件。一般linux系统就默认为a.out为编译完的文件。现在运行a.out文件。在a.out文件的目录下打开终端并输入 ./a.out 就是运行文件了。示例图解:对于回文数可以参考下面代码,我们不妨先取倒序,将本数先输出,再输出倒序数则生成回文数。要让计算的结果倒序输出.现总结一下思路:1.如果要把一个数倒序输出,即对10求模,可以得到尾数;2.然后将这个数除以10;这样个位就被舍去;然后如此循环即可3.直到求模结果为0;证明这个数已经求到个位;#include <stdio.h> int main() { int h; printf("Enter the number\n"); scanf("%d",&h); if(h==0) { printf("%d",h); } printf("%d",h); while(h>0) { printf("%d",h%10); h=h/10; } return 0; } 参考图例:Linux基本命令uname -a 查看内核版本 ls -al 显示所有文件的属性pwd 显示当前路径 cd - 返回上一次目录 cd ~ 返回主目录date s 设置时间、日期 cal 显示日历 cal 2006bc 计算器具 man & info 帮助手册locale 显示当前字体 locale -a 所有可用字体 /etc/sysconfig/i18n设置文件LANG=en 使用英文字体 sync 将数据同步写入硬盘 shutdonw -h now & half & poweroff 关机reboot 重启 startx & init 5 进入图形介面/work & ?work 向上、下查找文档内容chgrp 改变档案群组 chgrp testing install.log chown 改变所属人 chown root:root install.logchmod 改变属性 chmod 777 install.log read=4 write=2 execute=1cp 复制 cp filenamerm 删除文件 rm -rf filename 强制删除文件rmdir 删除文件夹mv 移动 mv 123.txt 222.txt 重命名mkdir 创建文件夹touch 创建文件 更新当前时间cat 由第一行开始显示 cat |more 分页nl 在内容前加行号more & less 一面一面翻动head -n filename 显示第N行内容tail -n filename 显示后N行内容od 显示非纯文档df -h 显示分区空间du 显示目录或文件的大小fdisk 分区设置 fdisk -l /dev/hda 显示硬盘分区状态mkfs 建立各种文件系统 mkfs -t ext3 /dev/ram15 fsck 检查和修复LINUX档案ln 硬链接 ln -s 软件链接whereis 查找命令locate 查找find 查找 find / -name "."which 查看工具whoami 显示当前用户gcc -v 查看GCC版本chattr +i filename 禁止删除 chattr -i filename 取消禁止lsattr 显示隐藏档属性updatedb 更新资料库mke2fs 格式化 mkfs -t ext3dd if=/etc/passwd of=/tmp/passwd.bak 备份mount 列出系统所有的分区mount -t iso9660 /dev/cdrom /mnt/cdrom 挂载光盘mount -t vfat /dev/fd0 /mnt/floppy 挂载软盘mount -t vfat -o iocharset=utf8,umask=000 /dev/hda2 /mnt/hda2 挂载fat32分区mount -t ntfs -o nls=utf8,umask=000 /dev/hda3 /mnt/hda3 挂载ntfs分区umount /mnt/hda3 缷载ifconfig 显示或设置网络设备service network restart 重启网卡 ifdown eth0 关闭网卡ifup eth0 开启网卡clear 清屏history 历史记录 !55 执行第55个指令stty 设置终端 stty -afdisk /mbr 删除GRUBat 僅進行一次的工作排程crontab 循環執行的例行性命令 [e]编辑,[l]显示,[r]删除任务& 后台运行程序 tar -zxvf 123.tar.gz & --------->后台运行jobs 观看后台暂停的程序 jobs -lfg 将后台程序调到前台 fg n ------>n是数字,可以指定进行那个程序bg 让工作在后台运行kill 结束进程 kill -9 PID [9]强制结束,[15]正常结束,[l]列出可用的kill信号ps aux 查看后台程序 top 查看后台程序 top -d 2 每两秒更新一次 top -d 2 -p10604 观看某个PIDtop -b -n 2 > /tmp/top.txt ----->將 top 的資訊進行 2 次,然後將結果輸出到 /tmp/top.txt pstree 以树状图显示程序 [A]以 ASCII 來連接, [u]列出PID, [p]列出帐号killall 要刪除某個服務 killall -9 httpdfree 显示内存状态 free -m -------->以M为单位显示uptime 显示目前系统开机时间netstat 显示网络状态 netstat -tulnp------>找出目前系統上已在監聽的網路連線及其 PIDdmesg 显示开机信息 demsg | morenice 设置优先权 nice -n -5 vi & ----->用 root 給一個 nice 植為 -5 ,用於執行 virenice 调整已存在优先权runlevel 显示目前的runleveldepmod 分析可载入模块的相依性lsmod 显示已载入系统的模块modinfo 显示kernel模块的信息insmod 载入模块modprobe 自动处理可载入模块rmmod 删除模块chkconfig 检查,设置系统的各种服务 chkconfig --list ----->列出各项服务状态ntsysv 设置系统的各种服务cpio 备份文件压缩命令:*.Z compress 程式壓縮的檔案; *.bz2 bzip2 程式壓縮的檔案; *.gz gzip 程式壓縮的檔案; *.tar tar 程式打包的資料,並沒有壓縮過; *.tar.gz tar 程式打包的檔案,其中並且經過 gzip 的壓縮compress filename 压缩文件 加[-d]解压 uncompressgzip filename 压缩 加[-d]解压 zcat 123.gz 查看压缩文件内容bzip2 -z filename 压缩 加[-d]解压 bzcat filename.bz2 查看压缩文件内容tar -cvf /home/123.tar /etc 打包,不压缩tar -xvf 123.tar 解开包tar -zxvf /home/123.tar.gz 以gzip解压tar -jxvf /home/123.tar.bz2 以bzip2解压tar -ztvf /tmp/etc.tar.gz 查看tar内容cpio -covB > [file|device] 份份cpio -icduv < [file|device] 还原深圳-广州-郑州-长沙嵌入式系统实训,凡通过本帖添加咨询报名学习可免费赠送学习现金卷及学习资料一份。详情联系郭老师QQ754634522vi一般用法一般模式 编辑模式 指令模式h 左 a,i,r,o,A,I,R,O :w 保存j 下 进入编辑模式 :w! 强制保存k 上 dd 删除光标当前行 :q! 不保存离开l 右 ndd 删除n行 :wq! 保存后离开0 移动到行首 yy 复制当前行 :e! 还原原始档$ 移动到行尾 nyy 复制n行 :w filename 另存为H 屏幕最上 p,P 粘贴 :set nu 设置行号M 屏幕中央 u 撤消 :set nonu 取消行号L 屏幕最下 [Ctrl]+r 重做上一个动作 ZZ 保存离开G 档案最后一行 [ctrl]+z 暂停退出 :set nohlsearch 永久地关闭高亮显示/work 向下搜索 :sp 同时打开两个文档 ?work 向上搜索 [Ctrl]+w 两个文档设换gg 移动到档案第一行 :nohlsearch 暂时关闭高亮显示认识SHELLalias 显示当前所有的命令别名 alias lm="ls -al" 命令别名 unalias lm 取消命令别名type 类似whichexprot 设置或显示环境变量exprot PATH="$PATH":/sbin 添加/sbin入PATH路径echo $PATH 显示PATH路径bash 进入子程序name=yang 设定变量unset name 取消变量echo $name 显示变量的内容myname="$name its me" & myname='$name its me' 单引号时$name失去变量内容
2021年03月14日
292 阅读
2 评论
2 点赞
1
...
7
8
9
10