代写范文

留学资讯

写作技巧

论文代写专题

服务承诺

资金托管
原创保证
实力保障
24小时客服
使命必达

51Due提供Essay,Paper,Report,Assignment等学科作业的代写与辅导,同时涵盖Personal Statement,转学申请等留学文书代写。

51Due将让你达成学业目标
51Due将让你达成学业目标
51Due将让你达成学业目标
51Due将让你达成学业目标

私人订制你的未来职场 世界名企,高端行业岗位等 在新的起点上实现更高水平的发展

积累工作经验
多元化文化交流
专业实操技能
建立人际资源圈

matlab主程序命令代码解析--matlab编程代写

2017-02-23 来源: 51Due教员组 类别: 写作技巧

对于大多数的留学生来说,出国在外留学面临的难题有许多,其中光是国外大学作业就已经足够让不少的学生们头疼,今天我们要为各介绍的就是matlab编程作业的写作,这种编程类的作业完成起来还是具有一定的难度,我们不仅要学会去熟悉matlab的运行环境,还要熟悉该程序的相关命令代码,才能够使用matlab执行一些我们想要完成的命令与操作,为了帮助各位更好的看懂matlab主程序命令代码,今天matlab编程代写平台就来为各位解析解析matlab主程序中那些常见的命令代码都代表着什么意思吧。

matlab代写,matlab主程序,matlab教程,matlab代码,留学生作业代写

I0=imread('8.jpg');       % 必须为二值图像        

I=im2bw(I0,0.4);        %将图像I0 二值化处理,阈值取0.4,将结果保存在I

[y0 x0]=size(I);          %读取二值化后的图像高度y0和宽度x0(即像素点数)

Range=sum((~I)');        %sum((~I))为求数列~I(~I为取I的相反)的每列的和,结果为一个行向量,在此sum((~I)’)

%即为求图像I中每行的和,sum((~I)’)=0即表示二值图像I中此行没有黑点。

Hy=0;                  %初始化参数Hy,用于存放图像存在黑点的行数(即图像的图中黑色文字实际高度)。

for j=1:y0               %for 语句循环,j从1开始每次加1,加到y0为止。

if (Range(j)>=1)    

Hy=Hy+1;      %如果第j行的像素点有黑色,Hy参数加1。

end              %结束条件语句

end                   %结束for循环语句

RangeX=sum((~I));      %sum((~I))为求图像I中每列的和,sum((~I))=0即表示二值图像I中此列没有黑点。

Wx=0;                %初始化参数Wx,用于存放图像存在黑点的列数(即图像的图中黑色文字实际宽度)。for i=1:x0              %for 语句循环,i从1开始每次加1,加到x0为止。

if (RangeX(i)>=1)

Wx=Wx+1;    %如果第i列的像素点有黑色,Wx参数加1。

end              %结束条件语句

end                  %结束for循环语句

Amp=24/Hy;           % 将文字图像归一化到24像素点的高度。

I=imresize(I,Amp);      %matlab自带缩放功能,Amp表示I缩放到24像素高度时原图像需要缩放的比例。

[y x]=size(I);           %重新读取缩放后图像的大小

%I=bwmorph(~I,'skel',Inf);

%I=~I;

tic                  %启动定时器,开始计时

%====== 基本结构 =======%       详见电子参考书215页

% 第一类:竖(V);左斜(L);右斜(R);突变(P)

% 第二类:左半圆弧(C);右半圆弧(Q)

% 的三类:结构待定(T);

%=====================================%左端轮廓检测

Left=zeros(1,y);                   %创建一个1行y列的0矩阵                           

for j=1:y                       %从第一行检测到y行

i=1;                    %从第j行第1列(最左边)开始检

while ((i<=x)&&(I(j,i)==1))      

=i+1;                %当第j行i列为白点时,不是我们要检测的边界黑点,继续检测j行的i+1列

end

if (i<=x)                  

Left(j)=i;             %如果在j行检测到了黑点,则将此点所在列的坐标i存入Left(j),表示此行的%最左边黑色像素点的横坐标

end                    %结束条件语句    

end                        %结束for语句

for j=1:y-1                  

LeftD(j)=Left(j+1)-Left(j);   %依次求取各行与相邻行的横坐标变化度,用来区分边界是左斜、右斜、竖直、

%圆弧,即微分(详见电子书216页)

end

%========== 结构特征提取 =============% 去掉急剧变化的两端

j=1;                         %从第1行开始检测

while ((Left(j)<1)&&(j<y))      %Left(j)<1即表示第j行没有黑色像素

j=j+1;                %如果j行没有黑色像素,则继续扫描第j+1行

end

Y1=j;                       %将最底下的边界行数存入Y1。      

j=y;                        %从最下端一行检测

while ((Left(j)<1)&&(j>1))

j=j-1;                %当最下端一行没有黑色像素时检测上一行

end

Y2=j-1;                     %最后去掉最下端

%============== 右边 ==================%右端轮廓检测

Right=zeros(1,y);           %创建一个1行y列的0矩阵   

for j=1:y                   %从第一行检测到y行

i=x;               %从第j行第x列(最右边)开始检测

while ((i>=1)&&(I(j,i)==1))

i=i-1;              %当第j行i列为白点时,不是我们要检测的边界黑点,继续检测j行的i-1列

endif (i>=1)                  Right(j)=i;          %如果在j行检测到了黑点,则将此点所在列的坐标i存入Right(j),表示此行的

%最右边黑色像素点的横坐

end                  %结束条件语句

end                      %结束for语

for j=1:y-

RightD(j)=Right(j+1)-Right(j);  %依次求取各行与相邻行的横坐标变化度,用来区分边界是左斜、
%右斜、竖直、圆弧

end

%=====================================% 顶端轮廓检测Top=zeros(1,x);             %创建一个1行x列的0矩阵for i=1:x                   %从第1列检测到x列        j=1;               %从第i列第j行(最上边)开始检测(纵坐标向下)

while ((j<=y)&&(I(j,i)==1))

p(i),表示此行的

%最上边黑色像素点的纵坐标

end  

endfor i=1:x-1

TopD(i)=Top(i+1)-Top(i);  %依次求取各列与相邻列的纵坐标变化度,用来区分边界是左斜、

%右斜、竖直、圆弧

end

%==============================% 去掉急剧变化的两端

i=1;                         %从第1列开始检测

while ((Top(i)<1)&&(i<x))        %Top(i)<1即表示第i列没有黑色像素

i=i+1;                 %如果i列没有黑色像素,则继续扫描第i+1列

end       

X1=i;                        %将左边的边界列数存入X1

i=x;                         %从最右端一列检测

while ((Top(i)<1)&&(i>1))

i=i-1;                 %当最右端一列没有黑色像素时检测下一列

end

X2=i-1;                      %最后去掉最右端一列,取i-1列的列数存入X2

%===================================% 底部轮廓检测

Bottom=zeros(1,x);           %创建一个1行x列的0矩阵

for i=1:x                    %从第1列检测到x列

j=y;                %从第i列第j行(最下边)开始检测(纵坐标向下)

while ((j>=1)&&(I(j,i)==1))  %当第i列j行为白点时,不是我们要检测的边界黑点,继续检测i列的j-1行

j=j-1;

end

f (j>=1)

Bottom(i)=j;        %如果在i列检测到了黑点,则将此点所在的纵坐标j存入Bottom(i),表示此行的

%最下边黑色像素点的纵坐标

end   

end

for i=1:x-1

BottomD(i)=Bottom(i+1)-Bottom(i);  %依次求取各列与相邻列的纵坐标变化度,用来区分边界是左斜、

%右斜、竖直、圆弧

end

%========== 数字 1 的宽度特征 =========%

Width=zeros(1,y);            %新建一个1行y列的矩阵

for j=1:y                %从第1行依次循环到第y行

Width(j)=Right(j)-Left(j); %用第j行的最右边横坐标减去本行的最左边横坐标,即得到第j行黑点所占的宽度

end   

W=max(Width);          %求向量Width()中最大的一个,即求字符所占最大宽度值,存入W

%=========以下这个求笔划的主要用于识别0和8

Po=0;                  % 用于检测笔划

Ne=0;                   % 用于检测笔划

NS=0;                   %笔划数

for i=X1+4:X2-4           %统计笔划时忽略字符图像的两边各4个像素,为了排除因字体不规范引起的干扰

%从第X1+4列开始,到X2-4列结束

for j=1:y-1           %从第i行的j=1行开始,扫描到y-1行结束

if ((I(j+1,i)-I(j,i))>0) % 由黑到白。即第i列的j+1行为白点,第j行为黑点

Po=Po+1;   %当扫描到像素的黑白变化,即发现了有横向的笔划(出黑线)

if ((Po>=2)&&(j<=fix(0.7*y)))  %fix函数为朝0的方向取整。如fix(3.5)=3,fix(-3.5)=3.此步是为了说明

%在图像的中心范围内笔画数不会太多,0最多有2个,8最多有3个

Po=3;              %在到达最底边界前保证不超过3个笔划

end   

else if  ((I(j+1,i)-I(j,i))<0) % 由白到黑

Ne=Ne+1;  %当扫描到像素的黑白变化,即发现了有横向的笔划(进入黑线)

if ((Ne>=2)&&(j<=fix(0.7*y)))

Ne=3;       同上

end      

end

end                  

end

NS=[NS max(Po,Ne)];     %求出此列中P0和Pe最大数作为最大笔划数,同时更新NS

Po=0;  

Ne=0;   %为下次循环做准备

end

 Comp=max(NS);   %求出每列循环后得到的笔划最大数,用于判断0和8
%========== 轮廓结构特征提取 ==========%

if (min(W,Wx)>10)           %因为如果宽度过小了就可以直接判断是1了,10为设定的阈值。

StrokeT=StrDetect01(TopD,X1,X2,3,6); % 顶部基本结构检测      %调用子函数,判断顶部结构    StrokeL=StrDetect01(LeftD,Y1,Y2,3,5); % 左边基本结构检测       %调用子函数,判断左边结构

StrokeR=StrDetect01(RightD,Y1,Y2,3,5); % 右边基本结构检测     %调用子函数,判断右边结构

StrokeB=StrDetect01(BottomD,X1,X2,3,6); % 底部基本结构检测   %调用子函数,判断底部结构

%========== 识别 ==========%

Digit=Recognition(StrokeT,StrokeL,StrokeR,StrokeB,Comp)       %输入由上步得到的结构参数得到识别结果

else

Digit='1'  %如果字体宽度太窄,就只能是1了

end   

t=toc        %toc为停止计时器时间,并记录到t

%======= 显示 ======%

px=(1:x);

py=(1:y);     %用于保存行数和列数

figure(1);     %figure用于创建一个新窗口

imshow(I);

figure(2);

subplot(2,2,1); %subplot(m,n,p)打开一个有m行n列图像位置的窗口,并将焦点显示在第p个位置

plot(Left);grid  %grid用于创建figure中网格线删掉则不显示网格线,plot用于描绘Left的坐标曲线

title('左轮廓'); %用于显示窗口的标题

subplot(2,2,2);

plot(Top);grid

title('上轮廓');

subplot(2,2,3);

plot(Right);grid

title('右轮廓');

subplot(2,2,4);

plot(Width);grid

title('宽度');

看完了以上matlab编程代写平台对于matlab主程序命令代码的详细解析后,各位留学生们还不赶紧保存在来,以后在看不懂matlab主程序代码的时候可以参考比较,这样我们就能够迅速的弄明白每一段代码以及变量所表达的含义,各位想要了解matlab的留学生们,可以先尝试学着去启动和熟悉matlab的基本操作。

51due教育引领海外留学的风向标,打造最好的留学教育品牌,我们为自己的品牌代言,不负留学生的期待。提供matlab代写的服务,包括留学生作业代写、统计作业代写、essay代写、assignment代写服务。

更多关于写作技巧的内容,点开主页栏目 即可快速获取,有论文代写需求,咨询24小时客服QQ:800020041,为您详细解答。-xz

上一篇:留学生统计学专业词汇中英对照翻译大全--统计作业代写 下一篇:matlab信号分析命令代码解析--matlab编程代写