1. 首页 > 手机 >

matlab帮助中心_matlab帮助中心2021

需要一段用Canny算子实现图像边缘检测的MATLAB程序,拜托高手们帮帮忙,很急啊!

2、而一般,我们在画图或者讨论的时候,是从[-fs/2,fs/2]的范围进行分析。

M=imread('');%读入你的

matlab帮助中心_matlab帮助中心2021matlab帮助中心_matlab帮助中心2021


centroid = start_data;

BW = edge(I,'canny');%边缘检测函数

imshow(BW) %显示检测后的图象

matlab函数介绍

y2=fftshift(y1);

背出来,Matlab就了

4、 滤波和卷积(Filtering and convoluteion)

一 matlab常用函数

1、 特殊变量与常数

ans 计算结果的变量名 comr 确定运行的计算机 eps 浮点相对精度 Inf 无穷大 I 虚数单位 inputname 输入参数名 NaN 非数 nargin 输入参数个数 nargout 输出参数的数目 pi 圆周率 nargoutchk 有效的输出参数数目 realmax 正浮点数 realmin 最小正浮点数 varargin 实际输入 的参量 varargout 实际返回的参量 作符与特殊字符 + 加 - 减 矩阵乘法 . 数组乘(对应元素相乘) ^ 矩阵幂 .^ 数组幂(各个元素求幂) \ 左除或反斜杠 / 右除或斜面杠 ./ 数组除(对应元素除) kron Kronecker张量积 : 冒号 () 圆括 [] 方括 . 小数点 .. 父目录 ... 继续 , 逗号(分割多条命令) ; 分号(禁止结果显示) % 注释 ! 感叹号 ' 转置或引用 = 赋值 == 相等 <> 不等于 & 逻辑与 | 逻辑或 ~ 逻辑非 xor 逻辑异或

2、 基本数学函数

abs 和复数模长 acos,acodh 反余弦,反双曲余弦 acot,acoth 反余切,反双曲余切 acsc,acsch 反余割,反双曲余割 angle 相角 asec,asech 反正割,反双曲正割 secant 正切 asin,asinh 反正弦,反双曲正弦 atan,atanh 反正切,双曲正切 tangent 正切 atan2 四象限反正切 ceil 向着无穷大舍入 complex 建立一个复数 conj 复数配对 cos,cosh 余弦,双曲余弦 csc,csch 余切,双曲余切 cot,coth 余切,双曲余切 exp 指数 fix 朝0方向取整 floor 朝负无穷取整 公因数 imag 复数值的虚部 lcm 最小公倍数 log 自然对数 log2 以2为底的对数 log10 常用对数 mod 有符号的求余 nchoosek 二项式系数和全部组合数 real 复数的实部 rem 相除后求余 round 取整为最近的整数 sec,sech 正割,双曲正割 sign 符号数 sin,sinh 正弦,双曲正弦 sqrt 平方根 tan,tanh 正切,双曲正切

blkding 从输入参量建立块对角矩阵 eye 单位矩阵 linespace 产生线性间隔的向量 logspace 产生对数间隔的向量 numel 元素个数 ones 产生全为1的数组 rand 均匀颁随机数和数组 randn 正态分布随机数和数组 zeros 建立一个全0矩阵 colon) 等间隔向量 cat 连接数组 diag 对角矩阵和矩阵对角线 fliplr 从左自右翻转矩阵 flipud 从上到下翻转矩阵 repmat 一个数组 reshape 改造矩阵 roy90 矩阵翻转90度 tril 矩阵的下三角 triu 矩阵的上三角 dot 向量点集 cross 向量叉集 iember 检测一个的元素 intersect 向量的交集 setxor 向量异或集 setdiff 向是的集 union 向量的并集 数值分析和傅立叶变换 cumprod 累积 cumsum 累加 cumtrapz 累计梯形法计算数值微分 factor 质因子 inpolygon 删除多边形区域内的点 max 值 mean 数组的均值 mediam 中值 min 最小值 perms 所有可能的转换 polyarea 多边形区域 primes 生成质数列表 prod 数组元素的乘积 rectint 矩形交集区域 sort 按升序排列矩阵元素 sortrows 按升序排列行 std 标准偏 sum 求和 trapz 梯形数值积分 var 方 del2 离散拉普拉斯 diff 值和微分估计 gradient 数值梯度 cov 协方矩阵 corrcoef 相关系数 conv2 二维卷积 conv 卷积和多项式乘法 filter IIR或FIR滤波器 deconv 反卷积和多项式除法 filter2 二维数字滤波器 cplxpair 将复数值分类为共轭对 fft 一维的快速傅立叶变换 fft2 二维快速傅立叶变换 fftshift 将FFT的DC分量移到频谱中心 ifft 一维快速反傅立叶变换 ifft2 二维傅立叶反变换 ifftn 快速傅立叶变换 ifftshift 反FFT偏移 nextpow2 最靠近的2的幂次 unwrap 校正相位角 多项式与插值 conv 卷积和多项式乘法 roots 多项式的根 poly 具有设定根的多项式 polyder 多项式微分 polyeig 多项式的特征根 polyfit 多项式拟合 polyint 解析多项式积分 polyval 多项式求值 polyvalm 矩阵变量多项式求值 residue 部分分式展开 interp1 一维插值 interp2 二维插值 interp3 三维插值 interpft 使用FFT的一维插值 interpn 插值 meshgrid 为3维点生成x和y的网格 ndgrid 生成函数和插值的数组 pchip 分段3次Hermite插值多项式 ppval 分段多项式的值 spline 3次样条数据插值 绘图函数 bar 竖直条图 barh 水平条图 hist 直方图 histc 直方图计数 hold 保持当前图形 loglog x,y对数坐标图 pie 饼状图 plot 绘二维图 polar 极坐标图 semilogy y轴对数坐标图 semilogx x轴对数坐标 subplot 绘制子图 bar3 数值3D竖条图 bar3h 水平3D条形图 comet3 3D慧星图 cylinder 圆柱体 fill3 填充的3D多边形 plot3 3维空间绘图 quiver3 3D震动(速度)图 sl 体积薄片图 sphere 球 stem3 绘制离散表面数据 watell 绘制瀑布 trisurf 三角表面 clabel 增加轮廓标签到等高线图中 datetick 数据格式标记 grid 加网格线 gtext 用鼠标将文本放在2D图中 legend 图注 plotyy 左右边都绘Y轴 title 标题 xlabel X轴标签 ylabel Y轴标签 zlabel Z轴标签 contour 等高线图 contourc 等高线计算 contourf 填充的等高线图 hidden 网格线消影 meshc 连接网格/等高线 mesh 具有参考轴的3D网格 peaks 具有两个变量的采样函数 surf 3D阴影表面图 suce 建立表面低层对象 surfc 海浪和等高线的结合 surfl 具有光照的3D阴影表面 trimesh 三角网格图

1、通用信息查询(General rmation)

demo 演示程序 在线帮助指令 browser 超文本文档帮助信息 desk 超文本文档帮助信息 win 打开在线帮助窗 MATLAB 和MathWorks 公司的信息 subscribe MATLAB 用户注册 ver MATLAB 和TOOLBOX 的版本信息 version MATLAB 版本 whatsnew 显示版本新特征

clear 从内存中清除变量和函数 exit 关闭MATLAB load 从磁盘中调入数据变量 pack 合并工作内存中的碎块 quit 退出MATLAB se 把内存变量存入磁盘 who 列出工作内存中的变量名 whos 列出工作内存中的变量细节 workspace 工作内存浏览器

3 、管理指令和函数(Managing commands and functions)

edit 矩阵编辑器 edit 打开M 文件 inmem 查看内存中的P 码文件 mex 创建MEX 文件 open 打开文件 pcode 生成P 码文件 type 显示文件内容 what 列出当前目录上的M、MAT、MEX 文件 which 确定指定函数和文件的位置

4 、搜索路径的管理(Managing the seach patli)

addpath 添加搜索路径 rmpath 从搜索路径中删除目录 path 控制MATLAB 的搜索路径 pathtool 修改搜索路径

5、指令窗控制(Controlling the command window)

beep 产生beep 声 echo 显示命令文件指令的切换开关 diary 储存MATLAB 指令窗作内容 format 设置数据输出格式 more 命令窗口分页输出的控制开关

6、作系统指令(Operating commands)

cd 改变当前工作目录 comr 计算机类型 copyfile 文件拷贝 delete 删除文件 dir 列出的文件 dos 执行dos 指令并返还结果 getenv 给出环境值 ispc MATLAB 为PC(Windows)版本则为真 isunix MATLAB 为Unix 版本则为真 mkdir 创建目录 pwd 改变当前工作目录 unix 执行unix 指令并返还结果 vms 执行vms dcl 指令并返还结果 web 打开web 浏览器 ! 执行外部应用程序

三 Matlab运算符和特殊算符

1、算术运算符(Arithmetic operators)

+ 加 - 减 矩阵乘 . 数组乘 ^ 矩阵乘方 .^ 数组乘方 \ 反斜杠或左除 / 斜杠或右除 ./或.\ 数组除 张量积 [注]本表第三栏括号中的字符供在线救助时 指令引述用

2、关系运算符(Relational operators)

= = 等号 ~= 不等号 < 小于 > 大于 <= 小于或等于 >= 大于或等于

3、逻辑作(Logical operators)

& 逻辑与 | 逻辑或 ~ 逻辑非 xor 异或 any 有非零元则为真 all 所有元素均非零则为真

4、特殊算符(Special characters)

: 冒号 ( ) 圆括号 [ ] 方括号 { } 花括号 @ 创建函数句柄 . 小数点 . 构架域的关节点 .. 父目录 ? 续行号 , 逗号 ; 分号 % 注释号 ! 调用作系统命令 = 赋值符号 ˊ 引号 ˊ 复数转置号 .ˊ 转置号 [,] 水平串接 [;] 垂直串接 ( ),{ },. 下标赋值 ( ),{ },. 下标标识 subsindex 下标标识

四 Matlab编程语言结构

控制语句(Control flow)

break 终止最内循环 case 同switch 一起使用 catch 同try 一起使用 continue 将控制转交给外层的for 或while 循环 else 同if 一起使用 elseif 同if 一起使用 end 结束for,while,if 语句 for 按规定次数重复执行语句 if 条件执行语句 otherwise 可同switch 一起使用 return 返回 switch 多个条件分支 try try-cathch 结构 while 不确定次数重复执行语句

2、 计算运行(Evaluation and execution)

assignin 跨空间赋值 builtin 执行内建的函数 eval 字符串宏指令 evalc 执行MATLAB 字符串 evalin 跨空间计算串表达式的值 feval 函数宏指令 run 执行脚本文件

3、 脚本文件、函数及变量(Scripts,function,and variables)

exist 检查变量或函数是否被定义 function 函数文件头 global 定义全局变量 isglobal 若是全局变量则为真 iskeyword 若是关键字则为真 mfilename 正在执行的M 文件的名字 persistent 定义变量 script MATLAB 命令文件

4、宗量处理(Augument handling)

inputname 实际调用变量名 nargchk 输入变量个数检查 nargin 函数输入宗量的个数 nargout 函数输出宗量的个数 nargoutchk 输出变量个数检查 varagin 输入宗量 varagout 输出宗量

5、 信息显示(Message display)

disp 显示矩阵和文字内容 display 显示矩阵和文字内容的重载函数 error 显示错误信息 fprintf 把格式化数据写到文件或屏幕 lasterr 一个错误信息 lastwarn 一个信息 sprintf 按格式把数字转换为串 warning 显告信息

6 、交互式输入(Interactive input) i

nput 提示键盘输入 keyboard 激活键盘做为命令文件 pause 暂停 uicontrol 创建用户界面控制 uimenu 创建用户界面菜单

五 Matlab基本矩阵函数和作

1、 基本矩阵(Elementary matrs)

eye 单位阵 linspace 线性等分向量 logspace 对数等分向量 meshgrid 用于三维曲面的分格线坐标 ones 全1 矩阵 rand 均匀分布随机阵 randn 正态分布随机阵 repmat 铺放模块数组 zeros 全零矩阵 : 矩阵的援引和重排

2、 矩阵基本信息(Basic array rmation)

disp 显示矩阵和文字内容 isempty 若是空矩阵则为真 isequal 若对应元素相等则为1 islogical 尤其是逻辑数则为真 isnumeric 若是数值则为真 length 确定向量的长度 logical 将数值转化为逻辑值 ndims 数组A 的维数 size 确定矩阵的维数

3、 矩阵作(Matrix manipulateion)

blkdiag 块对角阵串接 diag 创建对角阵,抽取对角向量 end 数组的长度,即下标 find 找出非零元素1 的下标 fliplr 矩阵的左右翻转 flipud 矩阵的上下翻转 flipdim 交换对称位置上的元素 ind2sub 据单下标换算出全下标 reshape 矩阵变维 rot90 矩阵逆时针90°旋转 sub2idn 据全下标换算出单下标 tril 抽取下三角阵 triu 抽取上三角阵

4、特殊变量和常数(Special variables and constants)

ans 表达式的运算结果 eps 浮点相对误 i,j 虚数单位 inf 或Inf 无穷大 isfinite 若是有限数则为真 isinf 若是无穷大则为真 isnan 若为非数则为真 NaN 或nan 非数 pi 3.1415926535897?. realmax 浮点数 realmin 最小正浮点数 why 一般问题的简明

5、特殊矩阵(Specialized matrs)

compan 伴随矩阵 gallery 一些小测试矩阵 hadamard Hadamard 矩阵 hankel Hankel 矩阵 hilb Hilbert 矩阵 invhilb 逆Hilbert 矩阵 magic 魔方阵 pascal Pascal 矩阵 rosser 典型对称特征值实验问题 toeplitz Toeplitz 矩阵 vander Vandermonde 矩阵 wilkinson Wilkinson's 对称特征值实验矩阵

六 Matlab基本数学函数

1、 三角函数(Trigonometric)

acos 反余弦 acosh 反双曲余弦 acot 反余切 acoth 反双曲余切 acsc 反余割 acsch 反双曲余割 asec 反正割 asech 反双曲正割 asin 反正弦 asinh 反双曲正弦 atan 反正切 atanh 反双曲正切 atan2 四象限反正切 cos 余弦 cosh 双曲余弦 cot 余切 coth 双曲余切 csc 余割 csch 双曲余割 sec 正割 sech 双曲正割 sin 正弦 sinh 双曲正弦 tan 正切 tanh 双曲正切

2、 指数函数(Exponential)

exp 指数 log 自然对数 log10 常用对数 log2 以2 为底的对数 nestpow2 最近邻的2 的幂 pow2 2 的幂 sqrt 平方根

3、 复数函数(Complex)

abs angle 相角 complex 将实部和虚部构成复数 conj 复数共轭 cplxpair 复数阵成共轭对形式排列 imag 复数虚部 isreal 若是实数矩阵则为真 real 复数实部 unwrap 相位角360°线调整

4、圆整和求余函数(Rounding and remainder)

ceil 朝正无穷大方向取整 fix 朝零方向取整 floor 朝负无穷大方向取整 mod 模数求余 rem 求余数 round 四舍五入取整 sign 符号函数 6 特殊函数(Specialized math functions) cart2pol 直角坐标变为柱(或极)坐标 cart2sph 直角坐标变为球坐标 cross 向量叉积 dot 向量内积 isprime 若是质数则为真 pol2cart 柱(或极)坐标变为直角坐标 sph2cart 球坐标变为直角坐标

七 Matlab矩阵函数和数值线性代数

1、 矩阵分析(Matrix ysis)

det 行列式的值 norm 矩阵或向量范数 normest 估计2 范数 null 零空间 orth 值空间 rank 秩 rref 转换为行阶梯形 trace 迹 subspace 子空间的角度

3、 特性值与奇异值(Eigenvalues and singular values)

condeig 矩阵各特征值的条件数 eig 矩阵特征值和特征向量 eigs 多个特征值 gsvd 归一化奇异值分解 hess Hessenberg 矩阵 poly 特征多项式 polyeig 多项式特征值问题 qz 广义特征值 schur Schur 分解 svd 奇异值分解 svds 多个奇异值

4、 矩阵函数(Matrix functions)

expm 矩阵指数 expm1 矩阵指数的Pade 逼近 expm2 用泰勒级数求矩阵指数 expm3 通过特征值和特征向量求矩阵指数 funm 计算一般矩阵函数 logm 矩阵对数 sqrtm 矩阵平方根

5、 因式分解(Factorization utility)

cdf2rdf 复数对角型转换到实块对角型 balance 改善特征值精度的平衡刻度 rsf2csf 实块对角型转换到复数对角型

八 数据分析和傅里叶变换

1、 基本运算(Basic operations)

cumprod 元素累计积 cumsum 元素累计和 cumtrapz 累计积分 hist 统计频数直方图 histc 直方图统计 max 值 mean 平均值 median 中值 min 最小值 prod 元素积 sort 由小到大排序 sortrows 由小到大按行排序 std 标准 sum 元素和 trapz 梯形数值积分 var 求方

2、 有限分(Finite differentces)

del2 五点离散Laplacian diff 分和近似微分 gradient 梯度

3、 相关(Correlation)

corrcoef 相关系数 cov 协方矩阵 subspace 子空间之间的角度

conv 卷积和多项式相乘 conv2 二维卷积 convn N 维卷积 detrend 去除线性分量 deconv 解卷和多项式相除 filter 一维数字滤波器 fliter2 二维数字滤波器

5、 傅里叶变换(Fourier transforms)

fft 快速离散傅里叶变换 fft2 二维离散傅里叶变换 fftn N 维离散傅里叶变换 fftshift 重排fft 和fft2 的输出 ifft 离散傅里叶反变换 ifft2 二维离散傅城叶反变换 ifftn N 维离散傅里叶反变换 ifftshift 反fftshift

请高手帮忙编写关于K—mediods算法的MATLAB程序用于处理Iris数据集的聚类处理,得到迭代次数图形和准确率

3 1 2

我把K-mediods的matlab代码贴出来,你好好学习一下

function label = kmedoids( data,k,start_data )

% kmedoids k中心点算法函数

% data 待聚类的数据集,每一行是一个样本数据点

% k 聚类个数

% start_data 聚类初始中心值,每一行为一个中心点,有cluster_n行

% class_idx 聚类结果,每个样本点标记的类别

% 初始化变量

n = length(data);

dist_temp1 = zeros(n,k);

dist_temp2 = zeros(n,k);

last = zeros(n,1);

a = 0;

b = 0;

if nargin==3

else

centroid = data(randsample(n,k),:);

for a x=x(:); y=y(:);= 1:k

temp1 = ones(n,1)centroid(a,:);

dist_temp1(:,a) = sum((data-temp1).^2,2);

while any(label~=last)

for a = 1:k

temp2 = ones(numel(data(label==a)),1);

temp3 = data(label==a);

for b = 1:n

temp4 = temp2data(b,:);

temp5 = sum((temp3-temp4).^2,2);

dist_temp2(b,a) = sum(temp5,1);

[~,centry_indx] = min(dist_temp2,[],1);

last = label;

centroid = data(centry_indx,:);

for a = 1:k

temp1 = ones(n,1)centroid(a,:);

dist_temp1(:,a) = sum((data-temp1).^2,2);

matlab中unifrnd函数用法

在matlab中unifrnd函chol Cholesky 分解 cholinc 不完全Cholesky 分解 cond 矩阵条件数 condest 估计1-范数条件数 inv 矩阵的逆 lu LU 分解 luinc 不完全LU 分解 lscov 已知协方的最小二乘积 nnls 非负二乘解 pinv 伪逆 qr QR 分解 rcond LINPACK 逆条件数 \、/ 解线性方程数是生成(连续)均匀分布的随机数

使用方法:

R = unifrnd(A,B)

生成被A和B指定上下端点[A,B]的连续均匀分布的随机数组R。

如果A和B是数组,R(i,j)是生成的被A和B对应元素指定连续均匀分布的随机数。

如果N或P是标量,则被扩展为和另一个输入有相同维数的数组。

R = unifrnd(A,B,m,n,...) 或 R = unifrnd(A,B,[m,n,...])

返回mn...数组。

如果A和B是标量,R中所有元素是相同分布产生的随机数。

如果A或B是数组,则必须是mn...数组。

刚好搜到这个问题,解答者很耐心,也很全面,应该是将matlab中的这个函数帮助文档翻译过来,英语水平不错,呵呵。只是个人觉得还是有些不清楚,我看了好几遍还是不怎么理解,没办法值得自己再去实验,终于得出一些结论,自己作了笔记,花了时间和精力,也在这里分享一下吧,希望对大家有用。

unifrnd

Continuous uniform random numbers

在连续均匀分布里面取随机数,得到矩阵。按一定规律取,其值是在均匀分布中随机找,矩阵元素个数及形状面规定的。

Syntax

R = unifrnd(A,B)

R = unifrnd(A,B,[m,n,...])

Description

R = unifrnd(A,B)returns an array R of random numbers generated from the continuous uniform distributions with lower and upper endpoints specified by A and B, respectively. If A and B are arrays, R(i,j) is generated from the distribution specified by the corresponding elements of A and B. If either A or B is a scalar, it is expanded to the size of the other input.

我的解释:

R = unifrnd(A,B)返回一个矩阵,什么样的一个矩阵呢?首先,矩阵的每个元素都是一定范围的一个连续均匀分布里面的一个随机值,这个连续分布有一个上限一个下限,这就要分多种情况讨论了:

1、若A、B都是单个数字,则函数返回的矩阵是以A为下限B位上限的连续均匀分布中一个随机值(单个元素也可以算一个矩阵)。若是R = unifrnd(A,B,m,n,...)函数形式,则返回各对应尺寸为m,n,...的一个矩阵,其中的每个元素都是以A为下限B为上限的连续均匀分布中一个随机值。

2、若A是数字,B是矩阵。则R = unifrnd(A,B)返回一个与B同型的矩阵。其中的每一个元素这样产生:以A为下限,以B中对应位置的元素为上限产生一个连续均匀分布,在里面随机取一个值即可。同样,对于R = unifrnd(A,B,m,n,...),返回的是一个尺寸为m,n,...的矩阵,那么易知这里暗示B必须能包含这个返回矩阵!

3、若A、B都是矩阵,那么R = unifrnd(A,B)函数也暗示A、B是同型矩阵,1电梯里的铃铛的图案代表什么? 2电梯里的电话的图案代表什么?返回的也是同型矩阵,每个元素的产生参照前面的,就不用再介绍了。

R = unifrnd(A,B,m,n,...) or R = unifrnd(A,B,[m,n,...]) returns an m-by-n-by-... array. If A and B are scalars, all elements of R are generated from the same distribution. If either A or B is an array, they must be m-by-n-by-... . 如果A、B是常数,那么返回的规定尺寸的矩阵每一个元素都服从同一个连续均匀分布(上下限分别是A、B)。

编程计算e^x以x=0,为中心点,x=0,x=0.1处的泰勒展开式的值(展开到5 阶) 大家帮帮忙谢谢,matlab中的

CHA 不知道没见过,你确定没打错吗?

syms x

f=exp(x)

x=MATLAB语言里面应该是没有#的,在别的程式语言(Ja,Python等)里面,#是注释的意思,等同于MATLAB里面的%[0 0.1]

fx=eval(ft)

syms x

f=exp(x)

x=[0 0.1]

fx=eval(ft)

关于matlab中 patch的用法

1) 高效的数值计算及符号计算功能,能使用户从繁杂的数算分析中解脱出来。

简单的说,patch就是利用diff制作的补丁来实现源文件(夹)和目的文件(夹)的转换。这样说就意味着可以有源文件(夹)――>目的文件(夹),也可以目的文件(夹)――>源文件(夹)。

下面介绍几个最常用选项:

-p0 选项要从当前目录查找目的文件(夹)

-p1 选项要忽略掉层目录,从当前目录开始查找。

在这里以实例说明:

--- old/modules/pcitable Mon Sep 27 11:03:56 1999

+++ new/modules/pcitable Tue Dec 19 20:05:41 2000

如果使用参数-p1,那就表示忽略层目录(即不管old),从当前目录寻找modules的文件夹,在它下面找pci3、 基本矩阵和矩阵作table。这样的前提是当前目 录必须为modules所在的目录。而diff补丁文件则可以在任意位置,只要指明了diff补丁文件的路径就可以了。当然,可以用相对路径,也可以用绝 对路径。

matlab中在command输入

patch回车

求大神帮忙写一个matlab绘图代码

ft=taylor(f,5)

r = [2:0.1:3 2.9:-0.1:2];

a=[x y ones(size(x))]\[-(x.^2+y.^2)];

[X,Y,Z]=cylinder(r,30);

Z = Z 12;

ezmesh('y+8');

hold on

surf(X,Y,Z)

我觉得这种问题还是不要问了,又是编程,还没悬赏分,别人要有还好说

你试试用autocad吧~

200分都够呛有人做

小波变换的matlab程序: wename='cmor5-2';

2、工作空间管理(Managing the workspace)

使用MATLAB设计小波变换程序中的若干问题3[转贴]使用MATLAB设计小波变换程序中的若干问题仍需探讨的问题:为什么使用PNG存储经小波变换后的重构图像变大?我曾在清华大学的多媒体课程的教师答疑中写了“老师:尊重事实:DB9阈值10的PNG文件就是比原文件大”和“续一:尊重事实:DB9阈值10的PNG文件就是比原文件大”,在林老师的鼓励和指导下,我进行了继续试验、分析,与刘赵璧(Anna)同学进行了探讨,并得到了Lily(姓名还不知道)同学的帮助,同时同学们也做了各自不同的实验,现在的实验结果可以说基本上比较明确,那就是有些图像就是会变大,这与图像的种类、纹理等密切相关。林老师曾经鼓励我去研究一下PNG的压缩方法,无奈我资质不够,至今在这方面的进展不大。由于临近期末考试,作业也要抓紧,所以我暂且将没有搞明白的内容搁置,待寒假期间再进行,希望对这些问题有各种看法也有兴趣研究的同学对此发表意见。以下是我最近试验、分析和阅读到的一些相关信息。试验结果我首先根据老师第三章的Haar矩阵算法推演出DB9的系数矩阵,并实现了分解重构及阈值处理程序,对几种照片进行了比较,然后使用3.1节的cmp进行了相同照片的实验,结果相当一致。细小别是因为我的程序对边界的扩展与MATLAB不一样,在设置阈值后引起了边界上小部分不一致造成的。表一:真彩色图像百合花的处理结果阈值PngHaar(Mat/Mine)0数Haat(Mat/Mine)PNGDb9(MAT/Mine)0数Db9(MAT/Mine)95973/95973095973/9597327524/2426895973/9597327/9574552/74292135838/136063101882/101992167412/1656621051976/51504163423/16374198411/98861199200/1957302032474/32346180167/18026792295/93660220629/217214从对比表中我们能够看到2个程序的结果相当一致,因此,我不再给出两种程序的对比,而是使用cmp直接处理的结果说明。将百合花图像使用[I,map]=rgb2ind(x,255);转换成为彩色图像处理,在将伪彩色图像转换为连续变换的灰度图像(如2.4常见问题中讨论的方法)进行处理:表二:百合花的伪彩色图像和处理后的灰度(gray)图像的处理结果阈值PngHaar(Index/Gray)0数Haar(Index/Gray)PNDb9(Index/Gray)0数Db9(Index/Gray)48535/43235048535/432356096/743048535/4323518/22553207/364509473/4362660362/499277009/528521058025/2360213362/54344646/4781313202/658812060193/1434721948/6003966020/4601424468/73494其他伪彩色与进行加工的灰度图的结果与此完全一致,这也就说明了如果伪彩色文件的色板不是单调性递增就不适合小波分解。“Thecolorbartotherightoftheimageisnot[~,label] = min(dist_temp1,[],2);oothanddoesnotmonotonicallyprogressfromdarktolight.Thistypeofindexedimageisnotsuitablefordirectweletdecomitionwiththetoolboxandneedstobepreprocessed.”。我对Facets进行同样的实验,结果与此一致。这种处理的结果可以从图像象素值的连续性来理解。这是处理与不处理的图像的中间一行的数据图。另外,不连续的图像质量在压缩后会被极大地破坏图2伪彩色文件变化前后的第128行数据的连续性情况对比分析多种试验基本能够反映类似的结果,虽然IndexedColorimage有时令Haar小波的分解重构图像出现增大现象,单经过处理之后,这种现象就会消失。然而对于DB9可以看到无论真彩色还是处理后的灰度图像都在阈值510处超过原始图像的大小,能不能因此得出DB9不适合进行图像压缩的结论呢?有一些同学确实这样认为,但我认为这种观点因为忽略了如何利用小波进行压缩和还原的过程,这也正是第四章老师为我们讲述的那些编码算法而造成的。在材料[1]中也有类似的说明。图3、JPEG2000的基本结构看一下上图就可以明白为什么PNG不能衡量小波压缩的效率问题。上图的图像原始数据首先经过正变换(ForwardTransform)就是小波变换的得到小波系数,变换的小波系数经过阈值处理后进行量化,编码后得到压缩的图像文件JPEG2000,如果你没有JPEG2000的显示程序,那么你就不能看到它。它的显示程序就是由从压缩数据中解出编码,进行反量化,得到小波系数,再实施逆变换(InverseTransform)就是小波系数重构。最终得到图像的原始数据。因此衡量小波变换的效率是应该看你选择的小波能不能分解出适合“编码器”压缩的小波系数,这种编码器不是PNG的LZ77,因为LZ77压缩小波分解系数的效率不是的。这种高效编码器在第四章可以找到。那么我们存储PNG文件的目的是什么呢?我认为压缩与去噪(de-noising)是同一种方法的两种提法。他们都使用了设置阈值的方法。我们可以仔细分析经过重构的PNG的质量来体会这种消除噪音的效果,也可以评定小波压缩后的的视觉质量,同时PNG的文件大小也可以让我们从LZ77算法的本质来理解小波变换压缩后的重构图像的内容变化情况。比如,我们可以从表2中的灰度图像在haar变换取阈值20时出现块状象素,文件大小变为14347,而db9却为46014,超过原始的PNG大小,但并不出现块状而是具有波状的特征。这本身说明了采用Harr小波压缩或去噪后重构的图像中相同的‘串’增多,便于PNG方式压缩,而db9则在相同阈值的情况下不会象Haar那样制造‘马赛克’,说明了它的平滑性,这也能帮助我们理解小波的特性。当然,当阈值继续增加后,超过某一界限,即使DB9也仍然会使PNG文件大小减小。这本身也就是由双尺度(Dyadic)小波变换的两种滤波器决定的。低通滤波结果相当于平均值,高通滤波结果相当于值,值能够保证重构图像的细节部分丢失最小,如果值部分被阈值略去的过多,细节就会越来越少,平均意义的值约来越多,直到多到某一个临界值时(该图像的阈值取到40),重构的图像也可能出现较多的相同数字串,这就会提高PNG的压缩结果。下图是我对Haar(蓝色)小波取阈值为20,db9(红色)小波阈值取40时第128行1:32列的数据曲线与原始数据(黑色)曲线的对比。可以看出也db9在阈值=40时出现了较多的平均值,但比haar在阈值=20时的曲线要少的多。图4、haar(蓝色)和db9(红色)压缩后重构图像的第128行,1:32列的数据曲线不过,MATLAB给我们提供了量化的方法来决定如何选取阈值。在HELPWeletToolbox:AanceConcepts:ChoosingtheOptimalDecomition中提到了几种利用“熵”的概念来衡量如何选取合适的分解级。感兴趣的同学还可以参看wentropy,wdcbm2,wpdec的帮助。文献[1]中也提到了衡量压缩质量的客观化方法MSE,PNSR并指出小波的重构滤波器的长度越长,形状越规则越能够提供良好的压缩性能。上面对PNG的讨论因为没有足够的算法分析和程序解读,同时也没有准确的试验数据,因此只能作为猜测。但衡量小波压缩效率的方法我坚持认为不能以PNG文件大小来解说,如果采用图像文件大小来衡量,应该以JPEG2000来衡量。

用matlab图像处理,检测圆形光斑的中心,

如果使用参数-p0,那就表示从当前目录找一个叫做old的文件夹,在它下面寻找modules下的pcitable文件来执行patch作。

这个不难的:

- 图像预处理,自动阀值方法二值化,然后滤掉噪声点,得到比较干净的圆形光斑离散点集;

- 用以下这个程序拟合出离散点的圆,并找出圆心。

其中步的自动阀值可以用otsu函数(otsu mod,大津法),其余都很基础;第二步的程序如果看不懂,可以进一步看看参考资料连接。

function [xc,yc,R,a] = circfit(x,y)

%% fits a circle in x,y plane in a more accurate

% (less prone to ill condition )

% procedure than circfit2 but using more memory

% x,y are column vector where (x(i),y(i)) is a measured point

%% result is center point (yc,xc) and radius R

% an optional output is the vector of coeficient a

% describing the circle's equation

%% x^2+y^2+a(1)x+a(2)y+a(3)=0

%% By: Izhak bucher 25/oct /19>> % 执行上面的语句后,输出的矩阵b为:,

xc = -.5a(1);

yc = -.5a(2);

R = sqrt((a(1)^2+a(2)^2)/4-a(3));

matlab中fftshift是什么意思?

1、在matlab中,经过fft变换后,数据的频率范围是从[0,fs]排列的。

而fftshift就是完成这个功能。

通常,如果想得到所见的中间是0频的图像,经过fft变换后,都要再经过fftshift。

MATLAB

MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视

化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和

Simulink两大部分。

特点

2) 具有完备的图形处理功能,实现计算结果和编程的可视化。

3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握。

4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的

处理工具。

fftshift的作用正是让正半轴部分和负半轴部分的图像分别关于各自的中心对称.因为直接用fft得出的数据与频率不是对应的,f2 4 2ftshift可以纠正过来。 matlab中fftshift的例子:

c2(p-pmin)/(pmax-pmin)-1lear;

clc;

t=0:0.001:2;

n=2001;

Fs=1000;

Fc=200;

x=cos(2piFct);

y1=fft(x);

hold on;

plot(f,abs(y1),'r')

plot(f,abs(y2),'b')

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 12345678@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息