文档库 最新最全的文档下载
当前位置:文档库 › 边缘提取和边缘检测matlab程序代码大全

边缘提取和边缘检测matlab程序代码大全

边缘提取和边缘检测matlab程序代码大全
边缘提取和边缘检测matlab程序代码大全

附录

Part1:对cameraman原始图像处理的仿真程序:

clc

clear all

close all

A = imread('cameraman.bmp'); % 读入图像

subplot(2,4,1);

imshow(A);title('原图');

x_mask = [1 0;0 -1]; % 建立X方向的模板

y_mask = rot90(x_mask); % 建立Y方向的模板

I = im2double(A); % 将图像数据转化为双精度

dx = imfilter(I, x_mask); % 计算X方向的梯度分量dy = imfilter(I, y_mask); % 计算Y方向的梯度分量grad = sqrt(dx.*dx + dy.*dy); % 计算梯度

grad = mat2gray(grad); % 将梯度矩阵转换为灰度图像level = graythresh(grad); % 计算灰度阈值

BW = im2bw(grad,level); % 用阈值分割梯度图像subplot(2,4,2);

imshow(BW); % 显示分割后的图像即边缘图像

title('Roberts');

y_mask = [-1 -2 -1;0 0 0;1 2 1];

x_mask = y_mask';

I = im2double(A);

dx = imfilter(I, x_mask);

dy = imfilter(I, y_mask);

grad = sqrt(dx.*dx + dy.*dy); % 计算梯度

grad = mat2gray(grad);

level = graythresh(grad);

BW = im2bw(grad,level);

subplot(2,4,3);

imshow(BW); % 显示分割后的图像即边缘图像

title('Sobel');

y_mask = [-1 -1 -1;0 0 0;1 1 1];

x_mask = y_mask';

dx = imfilter(I, x_mask);

dy = imfilter(I, y_mask);

grad = sqrt(dx.*dx + dy.*dy); % 计算梯度

grad = mat2gray(grad);

level = graythresh(grad);

BW = im2bw(grad,level); % 用阈值分割梯度图像

subplot(2,4,4);

imshow(BW); % 显示分割后的图像即边缘图像

title('Prewitt');

mask=[0,-1,0;-1,4,-1;0,-1,0]; % 建立模板

dx = imfilter(I, mask); % 计算梯度矩阵

grad = mat2gray(dx); % 将梯度矩阵转化为灰度图像

BW = im2bw(grad,0.58); % 用阈值分割梯度图像

subplot(2,4,5);

imshow(BW); % 显示分割后的图像,即梯度图像

title('Laplacian');

mask=[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]; % 建立模板dx = imfilter(I, mask); % 计算梯度矩阵

grad = mat2gray(dx); % 将梯度矩阵转化为灰度图像

BW = im2bw(grad,0.58);

subplot(2,4,6);

imshow(BW); % 显示分割后的图像,即梯度图像

title('log');

BW1 = edge(I,'canny'); % 调用canny函数

subplot(2,4,7);

imshow(BW1); % 显示分割后的图像,即梯度图像

title('Canny');

mask1=[-1 -2 -1;0 0 0;1 2 1]; % 建立方向模板

mask2=[-2 -1 0;-1 0 1;0 1 2];

mask3=[-1 0 1;-2 0 2;-1 0 1];

mask4=[0 1 2;-1 0 1;-2 -1 0];

mask5=[1 2 1;0 0 0;-1 -2 -1];

mask6=[2 1 0;1 0 -1;0 -1 -2];

mask7=[1 0 -1;2 0 -2;1 0 -1];

mask8=[0 -1 -2;1 0 -1;2 1 0];

d1 = imfilter(I, mask1); % 计算8个领域的灰度变化

d2 = imfilter(I, mask2);

d3 = imfilter(I, mask3);

d4 = imfilter(I, mask4);

d5 = imfilter(I, mask5);

d6 = imfilter(I, mask6);

d7 = imfilter(I, mask7);

d8 = imfilter(I, mask8);

dd = max(abs(d1),abs(d2)); % 取差值变化最大的元素组成灰度变化矩阵dd = max(dd,abs(d3));

dd = max(dd,abs(d4));

dd = max(dd,abs(d5));

dd = max(dd,abs(d6));

dd = max(dd,abs(d7));

dd = max(dd,abs(d8));

grad = mat2gray(dd); % 将灰度变化矩阵转化为灰度图像

BB = grad;

FW=median(BB(:))/0.6745;

B = BB.*BB;

B = sum(B(:));

FX= sqrt(B/256^2);

FS=sqrt(max(FX^2-FW^2,0));

T=sqrt(2)*FW^2/FS; % 计算最佳阈值

grad = mat2gray(BB);

BW2=im2bw(grad,T); % 用最佳阈值分割梯度图像subplot(2,4,8);

imshow(BW2); % 显示分割后的图像,即边缘图像title('sobel改进算子');

Part2加入高斯噪声后的cameraman仿真程序:

clc

clear all

close all

A = imread('cameraman.bmp'); % 读入图像

V=0.009;

X=imnoise(A,'gaussian',0,V);

subplot(2,4,1);

imshow(X);%添加均值为0、方差0.09的高斯噪声

x_mask = [1 0;0 -1]; % 创建X方向的模板

y_mask = rot90(x_mask); % 创建Y方向的模板

I = im2double(X); % 图像数据双精度转化

dx = imfilter(I, x_mask); % X方向的梯度分量的计算dy = imfilter(I, y_mask); % Y方向的梯度分量的计算grad = sqrt(dx.*dx + dy.*dy); % 梯度计算

grad = mat2gray(grad); % 梯度矩阵转换成灰度图像level = graythresh(grad); % 计算灰度阈值

BW = im2bw(grad,level); % 使用阈值分割梯度图像subplot(2,4,2);

imshow(BW); % 显示分割后的图像即边缘图像title('Roberts');

y_mask = [-1 -2 -1;0 0 0;1 2 1];

x_mask = y_mask';

dx = imfilter(I, x_mask);

dy = imfilter(I, y_mask);

grad = sqrt(dx.*dx + dy.*dy);

grad = mat2gray(grad); % 梯度矩阵转为灰度图像level = graythresh(grad); % 计算灰度阈值

BW = im2bw(grad,level); % 用阈值分割梯度图像subplot(2,4,3);

imshow(BW); % 显示分割后的图像即边缘图像title('Sobel');

y_mask = [-1 -1 -1;0 0 0;1 1 1];

x_mask = y_mask';

dx = imfilter(I, x_mask);

dy = imfilter(I, y_mask);

grad = sqrt(dx.*dx + dy.*dy);

grad = mat2gray(grad);

level = graythresh(grad);

BW = im2bw(grad,level);

subplot(2,4,4);

imshow(BW); % 显示分割后的图像即边缘图像title('Prewitt');

mask=[0,-1,0;-1,4,-1;0,-1,0]; % 建立模板

dx = imfilter(I, mask); % 计算梯度矩阵

grad = mat2gray(dx); % 将梯度矩阵转化为灰度图像BW = im2bw(grad,0.58); % 用阈值分割梯度图像subplot(2,4,5);

imshow(BW); % 显示分割后的图像,即梯度图像

title('Laplacian');

mask=[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]; % 建立模板dx = imfilter(I, mask); % 计算梯度矩阵

grad = mat2gray(dx); % 将梯度矩阵转化为灰度图像

BW = im2bw(grad,0.58); % 用阈值分割梯度图像

subplot(2,4,6);

imshow(BW); % 显示分割后的图像,即梯度图像

title('log');

BW1 = edge(I,'canny'); % 调用canny函数

subplot(2,4,7);

imshow(BW1); % 显示分割后的图像,即梯度图像

title('Canny');

mask1=[-1 -2 -1;0 0 0;1 2 1]; % 建立方向模板

mask2=[-2 -1 0;-1 0 1;0 1 2];

mask3=[-1 0 1;-2 0 2;-1 0 1];

mask4=[0 1 2;-1 0 1;-2 -1 0];

mask5=[1 2 1;0 0 0;-1 -2 -1];

mask6=[2 1 0;1 0 -1;0 -1 -2];

mask7=[1 0 -1;2 0 -2;1 0 -1];

mask8=[0 -1 -2;1 0 -1;2 1 0];

d1 = imfilter(I, mask1); % 计算8个领域的灰度变化

d2 = imfilter(I, mask2);

d3 = imfilter(I, mask3);

d4 = imfilter(I, mask4);

d5 = imfilter(I, mask5);

d6 = imfilter(I, mask6);

d7 = imfilter(I, mask7);

d8 = imfilter(I, mask8);

dd = max(abs(d1),abs(d2)); % 取差值变化最大的元素组成灰度变化矩阵

dd = max(dd,abs(d3));

dd = max(dd,abs(d4));

dd = max(dd,abs(d5));

dd = max(dd,abs(d6));

dd = max(dd,abs(d7));

dd = max(dd,abs(d8));

grad = mat2gray(dd); % 将灰度变化矩阵转化为灰度图像BB = grad;

FW=median(BB(:))/0.6745;

B = BB.*BB;

B = sum(B(:));

FX= sqrt(B/256^2);

FS=sqrt(max(FX^2-FW^2,0));

T=sqrt(2)*FW^2/FS; % 计算最佳阈值

grad = mat2gray(BB); % 将梯度矩阵转化为灰度图像

BW2=im2bw(grad,T); % 用最佳阈值分割梯度图像subplot(2,4,8);

imshow(BW2); % 显示分割后的图像,即边缘图像

title('sobel改进算子');

加入椒盐噪声的边缘检测程序:

function jingdian

I=imread('lenna.bmp');

I1=imnoise(I,'salt & pepper');%添加椒盐噪声,默认值为0.02 figure,imshow(I1);%添加均值为0、方差0.002的高斯噪声title('添加椒盐噪声后原图')

B1=edge(I1,'roberts');

B2=edge(I1,'sobel');

B3=edge(I1,'prewitt');

B4=edge(I1,'canny');

B5=edge(I1,'log');

subplot(2,3,1);

imshow(B1);title('roberts算子检测');

subplot(2,3,2);

imshow(B2);title('sobel算子检测');

subplot(2,3,3);

imshow(B3);title('prewitt算子检测');

subplot(2,3,4);

imshow(B4);title('canny算子检测');

subplot(2,3,5)

imshow(B5);title('log算子检测');

B1=edge(I1,'roberts');%调用roberts算子检测图像

B2=edge(I1,'sobel');%调用soble算子进行边缘检测

B3=edge(I1,'prewitt');%调用prewitt算子进行边缘检测

B4=edge(I1,'canny');%调用canny算子对图像进行边缘检测

B5=edge(I1,'log');%调用log算子对图像进行边缘检测

subplot(2,3,1);%设置图像布局

imshow(B1);title('roberts算子检测');%现实图像并命名为roberts算子检测subplot(2,3,2);

imshow(B2);title('sobel算子检测');

subplot(2,3,3);

imshow(B3);title('prewitt算子检测');

subplot(2,3,4);

imshow(B4);title('canny算子检测');

subplot(2,3,5)

imshow(B5);title('log算子检测');

mask1=[-1 -2 -1;0 0 0;1 2 1]; % 建立方向模板mask2=[-2 -1 0;-1 0 1;0 1 2];

mask3=[-1 0 1;-2 0 2;-1 0 1];

mask4=[0 1 2;-1 0 1;-2 -1 0];

mask5=[1 2 1;0 0 0;-1 -2 -1];

mask6=[2 1 0;1 0 -1;0 -1 -2];

mask7=[1 0 -1;2 0 -2;1 0 -1];

mask8=[0 -1 -2;1 0 -1;2 1 0];

I = im2double(I1); % 将数据图像转化为双精度

d1 = imfilter(I, mask1); % 计算8个领域的灰度变化d2 = imfilter(I, mask2);

d3 = imfilter(I, mask3);

d4 = imfilter(I, mask4);

d5 = imfilter(I, mask5);

d6 = imfilter(I, mask6);

d7 = imfilter(I, mask7);

d8 = imfilter(I, mask8);

dd = max(abs(d1),abs(d2)); % 取差值变化最大的元素组成灰度变化矩阵dd = max(dd,abs(d3));

dd = max(dd,abs(d4));

dd = max(dd,abs(d5));

dd = max(dd,abs(d6));

dd = max(dd,abs(d7));

dd = max(dd,abs(d8));

grad = mat2gray(dd); % 将灰度变化矩阵转化为灰度图像

level = graythresh(grad); % 计算灰度阈值

BW = im2bw(grad,level); % 用阈值分割梯度图像

BB = grad;

FW=median(BB(:))/0.6745;

B = BB.*BB;

B = sum(B(:));

FX= sqrt(B/256^2);

FS=sqrt(max(FX^2-FW^2,0));

T=sqrt(2)*FW^2/FS; % 计算最佳阈值

grad = mat2gray(BB); % 将梯度矩阵转化为灰度图像

BW2=im2bw(grad,T); % 用最佳阈值分割梯度图像

subplot(2,3,6);

imshow(BW2); % 显示分割后的图像,即边缘图像

title('加入椒盐噪声的sobel改进算子');

matlab代码大全

MATLAB主要命令汇总 MATLAB函数参考 附录1.1 管理用命令 函数名功能描述函数名功能描述 addpath 增加一条搜索路径 rmpath 删除一条搜索路径 demo 运行Matlab演示程序 type 列出.M文件 doc 装入超文本文档 version 显示Matlab的版本号 help 启动联机帮助 what 列出当前目录下的有关文件 lasterr 显示最后一条信息 whatsnew 显示Matlab的新特性 lookfor 搜索关键词的帮助 which 造出函数与文件所在的目录 path 设置或查询Matlab路径 附录1.2管理变量与工作空间用命令 函数名功能描述函数名功能描述 clear 删除存中的变量与函数 pack 整理工作空间存 disp 显示矩阵与文本 save 将工作空间中的变量存盘 length 查询向量的维数 size 查询矩阵的维数 load 从文件中装入数据 who,whos 列出工作空间中的变量名 附录1.3文件与操作系统处理命令 函数名功能描述函数名功能描述 cd 改变当前工作目录 edit 编辑.M文件 delete 删除文件 matlabroot 获得Matlab的安装根目录 diary 将Matlab运行命令存盘 tempdir 获得系统的缓存目录 dir 列出当前目录的容 tempname 获得一个缓存(temp)文件 ! 执行操作系统命令 附录1.4窗口控制命令 函数名功能描述函数名功能描述 echo 显示文件中的Matlab中的命令 more 控制命令窗口的输出页面format 设置输出格式 附录1.5启动与退出命令 函数名功能描述函数名功能描述 matlabrc 启动主程序 quit 退出Matlab环境 startup Matlab自启动程序 附录2 运算符号与特殊字符附录 2.1运算符号与特殊字符 函数名功能描述函数名功能描述 + 加 ... 续行标志 - 减 , 分行符(该行结果不显示) * 矩阵乘 ; 分行符(该行结果显示) .* 向量乘 % 注释标志 ^ 矩阵乘方 ! 操作系统命令提示符 .^ 向量乘方矩阵转置 kron 矩阵kron积 . 向量转置 \ 矩阵左除 = 赋值运算 / 矩阵右除 == 关系运算之相等 .\ 向量左除 ~= 关系运算之不等 ./ 向量右除 < 关系运算之小于

matlab相关图形实现代码

根据数据点绘制饼图和针状图: x=[1 2 3 4 5 6]; >> subplot(2,2,1);pie(x); >> subplot(2,2,2);pie3(x); >> subplot(2,2,3);stem(x); >>subplot(2,2,4);stem3(x); 5% 10% 14% 19% 24% 29% 24% 29% 19% 5%14% 10%0 2 4 6 2 4 6 5 10 01 2 05 10

根据数据点绘制向量场图、羽状图和罗盘图: x=[1 2 3 4 5 6];y=[1 2 3 4 5 6]; u=[1 2 3 4 5 6];v=[1 2 3 4 5 6]; subplot(2,2,1);quiver(x,y,u,v); subplot(2,2,2);quiver(x,y,u,v,'r'); subplot(2,2,3);feather(u,v); subplot(2,2,4);compass(u,v); 024680 246 802468 246 80 5 10 15 2 4 6 5 10 30 210 60240 90270 120 300 150330 180

rand(m,n)产生m ×n 均匀分布的随机矩阵,元素取值在0.0~1.0。 randn 函数:产生标准正态分布的随机数或矩阵的函数。 Y = randn(m,n) 或 Y = randn([m n])返回一个m*n 的随机项矩阵。 > theta=10*rand(1,50); %确定50个随机数theta >> Z=peaks; %确定Z 为峰值函数peaks >> x=0:0.01:2*pi;y=sin(x); %确定正弦函数数据点x.y >> t=randn(1000,1); %确定1000个随机数t >> subplot(2,2,1);rose(theta); %关于(theta )的玫瑰花图 >> subplot(2,2,2);area(x,y); %关于(x,y)的面积图 >> subplot(2,2,3);contour(Z); %关于Z 的等值线图(未填充) >> subplot(2,2,4);hist(t); %关于t 的柱状图 5 10 30 210 60 240 90270 120300150330 18000246 -1 -0.500.5 110 20 30 40 10 2030 40-4 -2 2 4 100 200 300

matlab代码大全教学文案

m a t l a b代码大全

MATLAB主要命令汇总 MATLAB函数参考 附录1.1 管理用命令 函数名功能描述函数名功能描述 addpath 增加一条搜索路径 rmpath 删除一条搜索路径 demo 运行Matlab演示程序 type 列出.M文件 doc 装入超文本文档 version 显示Matlab的版本号 help 启动联机帮助 what 列出当前目录下的有关文件 lasterr 显示最后一条信息 whatsnew 显示Matlab的新特性 lookfor 搜索关键词的帮助 which 造出函数与文件所在的目录 path 设置或查询Matlab路径 附录1.2管理变量与工作空间用命令 函数名功能描述函数名功能描述 clear 删除内存中的变量与函数 pack 整理工作空间内存 disp 显示矩阵与文本 save 将工作空间中的变量存盘 length 查询向量的维数 size 查询矩阵的维数 load 从文件中装入数据 who,whos 列出工作空间中的变量名 附录1.3文件与操作系统处理命令 函数名功能描述函数名功能描述 cd 改变当前工作目录 edit 编辑.M文件 delete 删除文件 matlabroot 获得Matlab的安装根目录 diary 将Matlab运行命令存盘 tempdir 获得系统的缓存目录 dir 列出当前目录的内容 tempname 获得一个缓存(temp)文件 ! 执行操作系统命令 附录1.4窗口控制命令 函数名功能描述函数名功能描述 echo 显示文件中的Matlab中的命令 more 控制命令窗口的输出页面format 设置输出格式 附录1.5启动与退出命令 函数名功能描述函数名功能描述 matlabrc 启动主程序 quit 退出Matlab环境 startup Matlab自启动程序 附录2 运算符号与特殊字符附录

遗传算法经典MATLAB代码

遗传算法实例: 也是自己找来的,原代码有少许错误,本人都已更正了,调试运行都通过了的。 对于初学者,尤其是还没有编程经验的非常有用的一个文件 遗传算法实例 % 下面举例说明遗传算法% % 求下列函数的最大值% % f(x)=10*sin(5x)+7*cos(4x) x∈[0,10]% % 将x 的值用一个10位的二值形式表示为二值问题,一个10位的二值数提供的分辨率是每为(10-0)/(2^10-1)≈。% % 将变量域[0,10] 离散化为二值域[0,1023], x=0+10*b/1023, 其 中 b 是[0,1023] 中的一个二值数。% % % %--------------------------------------------------------------------------------------------------------------% %--------------------------------------------------------------------------------------------------------------% % 编程

%----------------------------------------------- % 初始化(编码) % 函数的功能是实现群体的初始化,popsize表示群体的大小,chromlength 表示染色体的长度(二值数的长度), % 长度大小取决于变量的二进制编码的长度(在本例中取10位)。 %遗传算法子程序 %Name: %初始化 function pop=initpop(popsize,chromlength) pop=round(rand(popsize,chromlength)); % rand随机产生每个单元 为{0,1} 行数为popsize,列数为chromlength的矩阵, % roud对矩阵的每个单元进行圆整。这样产生的初始种群。 % 计算目标函数值 % 将二进制数转化为十进制数(1) %遗传算法子程序 %Name: %产生[2^n 2^(n-1) ... 1] 的行向量,然后求和,将二进制转化为十进制

matlab的编码大全

附录Matlab源程序 附录A 信息熵 % 函数说明:% % H=entropy(P,r) 为信息熵函数% % P为信源的概率矢量, r为进制数% % H为信息熵% %****************************** % function H=entropy(P,r) if (length(find(P<=0))~=0) error('Not a prob.vector,negative component'); % 判断是否符合概率分布条件end if (abs(sum(P)-1)>10e-10) error('Not a prob.vector,component do not add up to 1'); end H=(sum(-P.*log2(P)))/(log2(r)+eps); 附录B 离散无记忆信道容量的迭代计算 % 信道容量C的迭代算法% % 函数说明:% % [CC,Paa]=ChannelCap(P,k) 为信道容量函数% % 变量说明:% % P:输入的正向转移概率矩阵,k:迭代计算精度% % CC:最佳信道容量,Paa:最佳输入概率矩阵% % Pa:初始输入概率矩阵,Pba:正向转移概率矩阵% % Pb:输出概率矩阵,Pab:反向转移概率矩阵% % C:初始信道容量,r:输入符号数,s:输出符号数% %************************************************** % function [CC,Paa]=ChannelCap(P,k) % 提示错误信息 if (length(find(P<0)) ~=0) error('Not a prob.vector,negative component'); % 判断是否符合概率分布条件end

遗传算法经典MATLAB代码资料讲解

遗传算法经典学习Matlab代码 遗传算法实例: 也是自己找来的,原代码有少许错误,本人都已更正了,调试运行都通过了的。 对于初学者,尤其是还没有编程经验的非常有用的一个文件 遗传算法实例 % 下面举例说明遗传算法% % 求下列函数的最大值% % f(x)=10*sin(5x)+7*cos(4x) x∈[0,10]% % 将x 的值用一个10位的二值形式表示为二值问题,一个10位的二值数提供的分辨率是每为(10-0)/(2^10-1)≈0.01。% % 将变量域[0,10] 离散化为二值域[0,1023], x=0+10*b/1023, 其 中 b 是[0,1023] 中的一个二值数。% % % %--------------------------------------------------------------------------------------------------------------% %--------------------------------------------------------------------------------------------------------------% % 编程 %----------------------------------------------- % 2.1初始化(编码) % initpop.m函数的功能是实现群体的初始化,popsize表示群体的大小,chromlength表示染色体的长度(二值数的长度),

% 长度大小取决于变量的二进制编码的长度(在本例中取10位)。 %遗传算法子程序 %Name: initpop.m %初始化 function pop=initpop(popsize,chromlength) pop=round(rand(popsize,chromlength)); % rand随机产生每个单元 为{0,1} 行数为popsize,列数为chromlength的矩阵, % roud对矩阵的每个单元进行圆整。这样产生的初始种群。 % 2.2 计算目标函数值 % 2.2.1 将二进制数转化为十进制数(1) %遗传算法子程序 %Name: decodebinary.m %产生[2^n 2^(n-1) ... 1] 的行向量,然后求和,将二进制转化为十进制 function pop2=decodebinary(pop) [px,py]=size(pop); %求pop行和列数 for i=1:py pop1(:,i)=2.^(py-i).*pop(:,i); end pop2=sum(pop1,2); %求pop1的每行之和 % 2.2.2 将二进制编码转化为十进制数(2) % decodechrom.m函数的功能是将染色体(或二进制编码)转换为十进制,参数spoint表示待解码的二进制串的起始位置

matlab 指令大全

分享 我的分享 当前分享 返回分享首页? 分享 matlab命令,应该很全了!来源:李家叶的日志 matlab命令 一、常用对象操作:除了一般windows窗口的常用功能键外。 1、!dir 可以查看当前工作目录的文件。!dir& 可以在dos状态下查看。 2、who 可以查看当前工作空间变量名,whos 可以查看变量名细节。 3、功能键: 功能键快捷键说明 方向上键Ctrl+P 返回前一行输入 方向下键Ctrl+N 返回下一行输入 方向左键Ctrl+B 光标向后移一个字符 方向右键Ctrl+F 光标向前移一个字符 Ctrl+方向右键Ctrl+R 光标向右移一个字符 Ctrl+方向左键Ctrl+L 光标向左移一个字符 home Ctrl+A 光标移到行首 End Ctrl+E 光标移到行尾 Esc Ctrl+U 清除一行 Del Ctrl+D 清除光标所在的字符 Backspace Ctrl+H 删除光标前一个字符 Ctrl+K 删除到行尾 Ctrl+C 中断正在执行的命令 4、clc可以命令窗口显示的内容,但并不清除工作空间。 二、函数及运算 1、运算符: +:加,-:减,*:乘,/:除,\:左除^:幂,‘:复数的共轭转置,():制定运算顺序。 2、常用函数表: sin( ) 正弦(变量为弧度) Cot( ) 余切(变量为弧度) sind( ) 正弦(变量为度数) Cotd( ) 余切(变量为度数) asin( ) 反正弦(返回弧度) acot( ) 反余切(返回弧度) Asind( ) 反正弦(返回度数) acotd( ) 反余切(返回度数) cos( ) 余弦(变量为弧度) exp( ) 指数 cosd( ) 余弦(变量为度数)

matlab信道仿真经典源程序

% % % Rayleigh Fading Channel Signal Generator % Using the Dent Model (a modification to the Jakes Model) % % Last Modified 10/18/05 % % Author: Avetis Ioannisyan (avetis@https://www.wendangku.net/doc/7b15820274.html,) % % % Usage: % [omega_mTau, Tk] = % ai_RayCh(NumAngles, Length, SymbolRate, NumWaveforms, CarrierFreq, Velocity) % % Where the output omega_mTau is a time scaling factor for plotting % normalized correlations. The LAGS value output by [C,LAGS] = XCORR(...) % should be multiplied by the omega_mTau scaling factor to properly display % axis. Tk is a two dimensional vector [M, N] = SIZE(Tk) with % M=numWaverorms and N=Length specified in the RayCh(...) function call % % And the input variables are: % % NumAngles - scalar power of 2, NumAngles > 2^7 is used to specify the % number of equally strong rays arriving at the receiver. It used to % compute the number of oscillators in the Dent model with N0 = numAngles/4 % % Length - scalar preferably power of 2 for faster computation, Length > 2^17 % is used to specify the length of the generated sequence. Lengths near 1E6 % are close to realistic signals % % SymbolRate - scalar power of 2 and is in kilo-symbols-per-sec is used to % specify what should be the transmission data rate. Slower rates will % provide slowly fading channels. Normal voice and soem data rates are % 64-256 ksps % % NumWaveforms - scalar used to specify how many 'k' waveforms to generate % in the model. NumWaveforms > 2 to properly display plots % % CarrierFreq - scalar expressed in MHz is the carrier frequency of the % tranmitter. Normally 800 or 1900 MHz for mobile comms % % Velocity - scalar expressed in km/hr is the speed of the receiver. % 100 km/hr = 65 mi/hr. Normal values are 20-130 km/hr %

实验一 典型环节的MATLAB仿真汇总

实验一 典型环节的MATLAB 仿真 一、实验目的 1.熟悉MATLAB 桌面和命令窗口,初步了解SIMULINK 功能模块的使用方法。 2.通过观察典型环节在单位阶跃信号作用下的动态特性,加深对各典型环节响应曲线的理解。 3.定性了解各参数变化对典型环节动态特性的影响。 二、SIMULINK 的使用 MATLAB 中SIMULINK 是一个用来对动态系统进行建模、仿真和分析的软件包。利用SIMULINK 功能模块可以快速的建立控制系统的模型,进行仿真和调试。 1.运行MATLAB 软件,在命令窗口栏“>>”提示符下键入simulink 命令,按Enter 键或在工具栏单击按钮,即可进入如图1-1所示的SIMULINK 仿真 环境下。 2.选择File 菜单下New 下的Model 命令,新建一个simulink 仿真环境常规模板。 3.在simulink 仿真环境下,创建所需要的系统 三、实验内容 按下列各典型环节的传递函数,建立相应的SIMULINK 仿真模型,观察并记录其单位阶跃响应波形。 ① 比例环节1)(1=s G 和2)(1=s G 实验处理:1)(1=s G SIMULINK 仿真模型

波形图为: 实验处理:2)(1=s G SIMULINK 仿真模型 波形图为: 实验结果分析:增加比例函数环节以后,系统的输出型号将输入信号成倍数放大. ② 惯性环节11)(1+= s s G 和15.01)(2+=s s G 实验处理:1 1 )(1+=s s G SIMULINK 仿真模型

波形图为: 实验处理:1 5.01 )(2+= s s G SIMULINK 仿真模型 波形图为: 实验结果分析:当1 1 )(1+= s s G 时,系统达到稳定需要时间接近5s,当

(完整版)MATLAB典型去雾算法代码..

本节主要介绍基于Retinex理论的雾霭天气图像增强及其实现。 1.3.1 Rentinex理论 Retinex(视网膜“Retina”和大脑皮层“Cortex”的缩写)理论是一种建立在科学实验和科学分析基础上的基于人类视觉系统(Human Visual System)的图像增强理论。该算法的基本原理模型最早是由Edwin Land(埃德温?兰德)于1971年提出的一种被称为的色彩的理论,并在颜色恒常性的基础上提出的一种图像增强方法。Retinex 理论的基本内容是物体的颜色是由物体对长波(红)、中波(绿)和短波(蓝)光线的反射能力决定的,而不是由反射光强度的绝对值决定的;物体的色彩不受光照非均性的影响,具有一致性,即Retinex理论是以色感一致性(颜色恒常性)为基础的。 根据Edwin Land提出的理论,一幅给定的图像S(x,y)分解成两幅不同的图像:反射物体图像R(x,y)和入射光图像L(x,y),其原理示意图如图8.3-1所示。 图1.3-1 Retinex理论示意图 对于观察图像S中的每个点(x,y),用公式可以表示为: S(x,y)=R(x,y)×L(x,y) (1.3.1)实际上,Retinex理论就是通过图像S来得到物体的反射性质R,也就是去除了入射光L的性质从而得到物体原本该有的样子。 1.3.2 基于Retinex理论的图像增强的基本步骤 步骤一: 利用取对数的方法将照射光分量和反射光分量分离,即: S'(x, y)=r(x, y)+l(x, y)=log(R(x, y))+log(L(x, y)); 步骤二:用高斯模板对原图像做卷积,即相当于对原图像做低通滤波,得到低通滤波后的图像D(x,y),F(x, y)表示高斯滤波函数: D(x, y)=S(x, y) *F(x, y); 步骤三:在对数域中,用原图像减去低通滤波后的图像,得到高频增强的图像G (x, y): G(x,y)=S'(x, y)-log(D(x, y)) ; 步骤四:对G(x,y)取反对数,得到增强后的图像R(x, y):

matlab指令大全

1、运算符: +:加,-:减, *:乘, /:除, \:左除 ^:幂,‘:复数的共轭转置,():制定运算顺序。 2、常用函数表: sin( ) 正弦(变量为弧度) Cot( ) 余切(变量为弧度) sind( ) 正弦(变量为度数) Cotd( ) 余切(变量为度数) asin( ) 反正弦(返回弧度) acot( ) 反余切(返回弧度) Asind( ) 反正弦(返回度数) acotd( ) 反余切(返回度数) cos( ) 余弦(变量为弧度) exp( ) 指数 cosd( ) 余弦(变量为度数) log( ) 对数 acos( ) 余正弦(返回弧度) log10( ) 以10为底对数 acosd( ) 余正弦(返回度数) sqrt( ) 开方 tan( ) 正切(变量为弧度) realsqrt( ) 返回非负根 tand( ) 正切(变量为度数)

abs( ) 取绝对值 atan( ) 反正切(返回弧度) angle( ) 返回复数的相位角 atand( ) 反正切(返回度数) mod(x,y) 返回x/y的余数 sum( ) 向量元素求和 3、其余函数可以用help elfun和help specfun命令获得。 4、常用常数的值: pi 3.1415926……. realmin 最小浮点数,2^-1022 i 虚数单位 realmax 最大浮点数,(2-eps)2^1022 j 虚数单位 Inf 无限值 eps 浮点相对经度=2^-52 NaN 空值 1、!dir 可以查看当前工作目录的文件。 !dir& 可以在dos状态下查看。 2、who 可以查看当前工作空间变量名, whos 可以查看变量名细节。 3、功能键: 功能键快捷键说明 方向上键 Ctrl+P 返回前一行输入 方向下键 Ctrl+N 返回下一行输入 方向左键 Ctrl+B 光标向后移一个字符

matlab经典代码大全

哈哈哈 MATLAB 显示正炫余炫图:plot(x,y1,'* r',x,y2,'o b') 定义【0,2π】;t=0:pi/10:2*pi; 定义函数文件:function [返回变量列表]=函数名(输入变量列表) 顺序结构:选择结构 1)if-else-end语句 其格式为: if 逻辑表达式 程序模块1; else 程序模块2; End 图片读取:%选择图片路径 [filename, pathname] = ... uigetfile({'*.jpg';'*.bmp';'*.gif'},'选择图片'); %合成路径+文件名 str=[pathname,filename]; %为什么pathname和filename要前面出现的位置相反才能运行呢???%读取图片 im=imread(str); %使用图片 axes(handles.axes1); %显示图片 imshow(im); 边缘检测: global im str=get(hObject,'string'); axes (handles.axes1); switch str case ' 原图' imshow(im); case 'sobel' BW = edge(rgb2gray(im),'sobel'); imshow(BW); case 'prewitt' BW = edge(rgb2gray(im),'prewitt');

imshow(BW); case 'canny' BW = edge(rgb2gray(im),'canny'); imshow(BW);Canny算子边缘定位精确性和抗噪声能力效果较好,是一个折中方案 end; 开闭运算: se=[1,1,1;1,1,1;1,1,1;1,1,1]; %Structuring Element I=rgb2gray(im); imshow(I,[]);title('Original Image'); I=double(I); [im_height,im_width]=size(I); [se_height,se_width]=size(se); halfheight=floor(se_height/2); halfwidth=floor(se_width/2); [se_origin]=floor((size(se)+1)/2); image_dilation=padarray(I,se_origin,0,'both'); %Image to be used for dilation image_erosion=padarray(I,se_origin,256,'both'); %Image to be used for erosion %%%%%%%%%%%%%%%%%% %%% Dilation %%% %%%%%%%%%%%%%%%%%% for k=se_origin(1)+1:im_height+se_origin(1) for kk=se_origin(2)+1:im_width+se_origin(2) dilated_image(k-se_origin(1),kk-se_origin(2))=max(max(se+image_dilation(k-se_origin(1):k+halfh eight-1,kk-se_origin(2):kk+halfwidth-1))); end end figure;imshow(dilated_image,[]);title('Image after Dilation'); %%%%%%%%%%%%%%%%% %%% Erosion %%% %%%%%%%%%%%%%%%%% se=se'; for k=se_origin(2)+1:im_height+se_origin(2) for kk=se_origin(1)+1:im_width+se_origin(1) eroded_image(k-se_origin(2),kk-se_origin(1))=min(min(image_erosion(k-se_origin(2):k+halfwidth -1,kk-se_origin(1):kk+halfheight-1)-se)); end end figure;imshow(eroded_image,[]);title('Image after Erosion'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Opening(Erosion first, then Dilation) %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

matlab指令大全

分享我的分享当前分享返回分享首页?分享 matlab命令,应该很全了!来源:李家叶的日志 matlab命令 一、常用对象操作:除了一般windows窗口的常用功能键外。 1、!dir 可以查看当前工作目录的文件。 !dir& 可以在dos状态下查看。 2、who 可以查看当前工作空间变量名, whos 可以查看变量名细节。 3、功能键: 功能键快捷键说明 方向上键 Ctrl+P 返回前一行输入 方向下键 Ctrl+N 返回下一行输入 方向左键 Ctrl+B 光标向后移一个字符 方向右键 Ctrl+F 光标向前移一个字符 Ctrl+方向右键 Ctrl+R 光标向右移一个字符 Ctrl+方向左键 Ctrl+L 光标向左移一个字符 home Ctrl+A 光标移到行首 End Ctrl+E 光标移到行尾 Esc Ctrl+U 清除一行 Del Ctrl+D 清除光标所在的字符 Backspace Ctrl+H 删除光标前一个字符 Ctrl+K 删除到行尾 Ctrl+C 中断正在执行的命令 4、clc可以命令窗口显示的内容,但并不清除工作空间。 二、函数及运算 1、运算符: +:加,-:减, *:乘, /:除, \:左除 ^:幂,‘:复数的共轭转置,():制定运算顺序。 2、常用函数表: sin( ) 正弦(变量为弧度) Cot( ) 余切(变量为弧度) sind( ) 正弦(变量为度数) Cotd( ) 余切(变量为度数) asin( ) 反正弦(返回弧度) acot( ) 反余切(返回弧度) Asind( ) 反正弦(返回度数) acotd( ) 反余切(返回度数)

cos( ) 余弦(变量为弧度) exp( ) 指数 cosd( ) 余弦(变量为度数) log( ) 对数 acos( ) 余正弦(返回弧度) log10( ) 以10为底对数 acosd( ) 余正弦(返回度数) sqrt( ) 开方 tan( ) 正切(变量为弧度) realsqrt( ) 返回非负根 tand( ) 正切(变量为度数) abs( ) 取绝对值 atan( ) 反正切(返回弧度) angle( ) 返回复数的相位角 atand( ) 反正切(返回度数) mod(x,y) 返回x/y的余数 sum( ) 向量元素求和 3、其余函数可以用help elfun和help specfun命令获得。 4、常用常数的值: pi 3.1415926……. realmin 最小浮点数,2^-1022 i 虚数单位 realmax 最大浮点数,(2-eps)2^1022 j 虚数单位 Inf 无限值 eps 浮点相对经度=2^-52 NaN 空值 三、数组和矩阵: 1、构造数组的方法:增量发和linspace(first,last,num)first和last为起始和终止数,num为需要的数组元素个数。 2、构造矩阵的方法:可以直接用[ ]来输入数组,也可以用以下提供的函数来生成矩阵。 ones( ) 创建一个所有元素都为1的矩阵,其中可以制定维数,1,2….个变量 zeros() 创建一个所有元素都为0的矩阵 eye() 创建对角元素为1,其他元素为0的矩阵

MatLab代码大全

第2章图像获取 2.3.2 二维连续傅里叶变换 例2.2 figure(1); %建立图形窗口1 [u,v] = meshgrid(-1:0.01:1); %生成二维频域网格 F1 = abs(sinc(u.*pi)); F2 = abs(sinc(v.*pi)); F=F1.*F2; %计算幅度频谱F=|F(u,v)| surf(u,v,F); %显示幅度频谱,如图2.3(b) shading interp; %平滑三维曲面上的小格 axis off; %关闭坐标系 figure(2); %建立图形窗口2 F1=histeq(F); %扩展F的对比度以增强视觉效果 imshow(F1); %用图像来显示幅度频谱,如图2.3(c) 第3章图像变换 3.4.4 二维FFT的MATLAB实现 例3.2 简单图像及其傅里叶变换 MATLAB程序: %建立简单图像d并显示之 d = zeros(32,32); %图像大小32?32 d(13:20,13:20) = 1; %中心白色方块大小为8?8 figure(1); %建立图形窗口1 imshow(d,'notruesize');%显示图像d如图3.5(a)所示 %计算傅里叶变换并显示之 D = fft2(d); %计算图像d的傅里叶变换,fft2(d) = fft(fft(d).').' figure(2); %建立图形窗口2 imshow(abs(D),[-1 5],'notruesize'); %显示图像d的傅里叶变换谱如3.5(b)所示 例3.3 MATLAB图像及其傅里叶变换谱 MATLAB程序: figure(1); load imdemos saturn2; %装入MA TLAB图像saturn2 imshow(saturn2); %显示图像saturn2如图3.6(a)所示 figure(2); S= fftshift(fft2(saturn2)); %计算傅里叶变换并移位 imshow(log(abs(S)),[ ]); %显示傅里叶变换谱如3.6(b)所示 例3.4 真彩图像及其傅里叶变换谱 MATLAB程序: figure(1); A=imread('image1.jpg'); %装入真彩图像,见图1.1(b) B=rgb2gray(A); %将真彩图像转换为灰度图像

MATLAB实验代码汇总

2、 3vars global help My_exp sin X+Y _input E-4 Abcd AB_C_ ; 3、 A = [ 1 2 3;4 5 6;7 8 9] y = [12 + 2 * (7 -4)]/(3^2) 4、 A = 15; B = 20; C = A + B c = a + b A = [1 2 3;4 5 6;7 8 9]; B = [9 8 7;6 5 4;3 2 1]; A * B A .* B A =10; B =20; C =A/B D =A\B a = [1 -2 3;4 5 -4;5 -6 7] A = [1,2;3,4] + i * [5,6;7,8] A = [1,2;3,4] + i[5,6;7,8] a = [1 2 3;3 4 2;5 2 3]; a^2 a.^2 clear X = [1 2;8 9;3 6]; X( : ) A = [ 1 2 3 ]; B = [ 4 5 6 ]; C = 3. ^A D = A. ^B 5、t = -1:0.01:1; y = (sqrt(3)/2).*exp((-4).*t).*sin(t.*4*sqrt(3)+(pi/3))

1、clc clear A = [12 34 -4;34 7 87;3 65 7]; B = [1 3 -1;2 0 3;3 -2 7]; a=A+6*B,I=eye(3),b=A^2-B+I,c=A*B,d=A.*B,e=A^3,f= A.^3,g=[A,B],h= [(A ([1,3],:));B^2] 2、clc clear A = [1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 22 23 24 25]; B = [3 0 16 ;17 -6 9;0 23 -4;9 7 0;4 13 11]; C = A * B , D = C([3 4 5],[2 3]) 3、clc clear A = [23 10 -0.778 0; 41 -45 65 5; 32 5 0 32; 6 -9.54 54 3.14]; B = A([1:3],:); C = A(:,[1:2]); D = A([2 3 4],[1 2]); E = B * C; a= E=10&A<25) 4、clc clear %使用函数实现矩阵左旋90°或右旋90°的功能。 A=magic(3), B=rot90(A),C=rot90(A,3) %B为左旋90°,C为右旋90°5、clc clear A = [1 2 2 2 2 2 2 2 2 2 2], B = cumprod(A),%返回向量A的累乘积向量 C = cumsum(B),%返回向量B的累加和向量 S = max(C),%求和 6、clc clear

实用matlab代码

1.图像反转 MATLAB程序实现如下: I=imread('xian.bmp'); J=double(I); J=-J+(256-1); %图像反转线性变换 H=uint8(J); subplot(1,2,1),imshow(I); subplot(1,2,2),imshow(H); 2.灰度线性变换 MATLAB程序实现如下: I=imread('xian.bmp'); subplot(2,2,1),imshow(I); title('原始图像'); axis([50,250,50,200]); axis on; %显示坐标系 I1=rgb2gray(I); subplot(2,2,2),imshow(I1); title('灰度图像'); axis([50,250,50,200]); axis on; %显示坐标系 J=imadjust(I1,[0.1 0.5],[]); %局部拉伸,把[0.1 0.5]内的灰度拉伸为[0 1] subplot(2,2,3),imshow(J); title('线性变换图像[0.1 0.5]'); axis([50,250,50,200]); grid on; %显示网格线 axis on; %显示坐标系 K=imadjust(I1,[0.3 0.7],[]); %局部拉伸,把[0.3 0.7]内的灰度拉伸为[0 1] subplot(2,2,4),imshow(K); title('线性变换图像[0.3 0.7]'); axis([50,250,50,200]); grid on; %显示网格线 axis on; %显示坐标系 3.非线性变换 MATLAB程序实现如下: I=imread('xian.bmp'); I1=rgb2gray(I); subplot(1,2,1),imshow(I1); title('灰度图像'); axis([50,250,50,200]); grid on; %显示网格线 axis on; %显示坐标系 J=double(I1);

matlab常用命令大全

matlab常用命令 A a abs 绝对值、模 acos 反余弦 acosh 反双曲余弦 acot 反余切 acoth 反双曲余切 acsc 反余割 acsch 反双曲余割 align 启动图形对象几何位置排列工具all 所有元素非零为真 angle 相角 ans 表达式计算结果的缺省变量名any 所有元素非全零为真 area 面域图 argnames 函数M文件宗量名 asec 反正割 asech 反双曲正割 asin 反正弦 asinh 反双曲正弦 assignin 向变量赋值 atan 反正切 atan2 四象限反正切 atanh 反双曲正切 autumn 红黄调秋色图阵 axes 创建轴对象的低层指令 axis 控制轴刻度和风格的高层指令 B b bar 二维直方图 bar3 三维直方图 bar3h 三维水平直方图 barh 二维水平直方图 base2dec X进制转换为十进制 bin2dec 二进制转换为十进制 blanks 创建空格串 bone 蓝色调黑白色图阵 box 框状坐标轴 break while 或for 环中断指令

brighten 亮度控制 C c capture (3版以前)捕获当前图形 cart2pol 直角坐标变为极或柱坐标 cart2sph 直角坐标变为球坐标 cat 串接成高维数组 caxis 色标尺刻度 cd 指定当前目录 cdedit 启动用户菜单、控件回调函数设计工具cdf2rdf 复数特征值对角阵转为实数块对角阵ceil 向正无穷取整 cell 创建元胞数组 cell2struct 元胞数组转换为构架数组 celldisp 显示元胞数组内容 cellplot 元胞数组内部结构图示 char 把数值、符号、内联类转换为字符对象chi2cdf 分布累计概率函数 chi2inv 分布逆累计概率函数 chi2pdf 分布概率密度函数 chi2rnd 分布随机数发生器 chol Cholesky分解 clabel 等位线标识 cla 清除当前轴 class 获知对象类别或创建对象 clc 清除指令窗 clear 清除内存变量和函数 clf 清除图对象 clock 时钟 colorcube 三浓淡多彩交叉色图矩阵 colordef 设置色彩缺省值 colormap 色图 colspace 列空间的基 close 关闭指定窗口 colperm 列排序置换向量 comet 彗星状轨迹图 comet3 三维彗星轨迹图 compass 射线图 compose 求复合函数 cond (逆)条件数 condeig 计算特征值、特征向量同时给出条件数condest 范-1条件数估计 conj 复数共轭 contour 等位线

相关文档