matlab tic toc 打印,matlab toc tic 的用法

今天完成了自己学习Matlab编程的第一个程序,将自己以前用VC编写的分形图像压缩编码的程序进行的Matlab的实现,也终于感受到了Matlab虽然编程方便,但是运行速度不是太快,那个速度,确实慢了点,进行基本分形图像压缩一幅256*256,8比特的lena标准图像,竟然用了我将近50000second的时间,虽然分形压缩的时间复杂度高,但是觉得Matlab这东西运行太慢了!(个人观点)

自己这几天也就是为了了解稍微掌握Matlab的基本编程,从自己编程过程中总结几点!~

1、matlab里面的计时函数:Matlab7的计时函数主要有tic,toc,cputime和etime等,计时函数可以定量的计算完成制定程序所消耗的时间资源,因为可以作为比较程序优劣的一个重要标准。

a、tic和toc函数

这两个函数一般配合使用,tic表示计时的开始,toc表示计时的结束。

格式如:

tic

任意表达式

toc

t=toc

b、cputime函数

cputime函数返回从调用该函数起所用的总的Cpu时间,单位以秒计算。

格式如:

t=cputime;

任意表达式或者程序

e=cputime-t;

c、etime函数

e=etime(t2,t1)命令返回向量t1和t2之间的时间段,t1和t2必须含有由clock函数返回的6个元素,即[Year

Month Day Hour Minute Second]。

举例说明:

>>x=rand(2048,1);

>>t=clock;

>>fift(x);

>>etime(clock,t);

ans=

14.53

>>

2、设置全局变量

全局变量由global函数进行定义,而且在任何使用该全局变量的函数中都应加以定义,即使在"命令"窗口也不例外。就关于这个全局变量,我在写程序时候,因为没有找到书本来介绍,就只在主程序中用global函数定义了,别的地方并未使用global,因为走了很大的弯路。希望对看这个帖的人学习Matlab的全局变量有帮助!~~

由于自己学习Matlab时间非常短,所以很多可能大家遇到的问题,我自己更加弄不清楚,我会继续学习的!~

下附(自己写的关于分形编码的一个主程序部分):

function fractalcompress(filepath)

X=imread(filepath.name);

[height,width]=size(X);

global rblock_num dblock_num r_size step;

setglobalvariables;

start=cputime;

range_block=get_rblock(X,r_size);

domain_middle_block=get_dblock(X,2*r_size,step);

domain_last_block=get_virtualcode(domain_middle_block,r_size,dblock_num);

compress=[];

compress=[compress height width];

for i=1:rblock_num

min=1000000;

for j=1:dblock_num

temp=get_subdblock(domain_last_block,j);

trans=0;

while(trans<=7)

if(trans==0)

trans_block=transform(temp,0);

end

if(trans==1)

trans_block=transform(temp,1);

end

if(trans==2)

trans_block=transform(temp,2);

end

if(trans==3)

trans_block=transform(temp,3);

end

if(trans==4)

trans_block=transform(temp,4);

end

if(trans==5)

trans_block=transform(temp,5);

end

if(trans==6)

trans_block=transform(temp,6);

end

if(trans==7)

trans_block=transform(temp,7);

end

result=0;

for k=1:r_size

for l=1:r_size

result=result+(range_block(k,l,i)-trans_block(k,l))*(range_block(k,l,i)-trans_block(k,l));

end

end

if(result<=min)

min=result;

dblock_number=j;

style=trans;

sum_a=0;sum_ab=0;sum_b=0;sum_bb=0;

for k=1:r_size

for l=1:r_size

sum_a=sum_a+trans_block(k,l);

sum_b=sum_b+range_block(k,l,i);

sum_bb=sum_bb+range_block(k,l,i)*range_block(k,l,i);

sum_ab=sum_ab+trans_block(k,l)*range_block(k,l,i);

end

end

end

trans=trans+1;

end

end

compress=[compress dblock_number style];

if(r_size*r_size*sum_bb-sum_b*sum_b==0)

s=0;

else

s=(r_size*r_size*sum_ab-sum_a*sum_b)/(r_size*r_size*sum_bb-sum_b*sum_b);

end

if s>0.98

s=0.98;

elseif s<=0

s=0;

end

s=fix(s*100);

o=(sum_a-(s/100)*sum_b)/(r_size*r_size);

o=fix(o);

if(o<0)

o=-o;

s=s+100;

end

compress=[compress s o];

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值