
哪位大哥大姐能帮我把这个程序代码解释一下,尤其是clock,rand函数的作用,然后写出大概流程,谢谢你了!
每一步的代表的意思,谢谢你了!!!单知感应器:functionmain()closeallrand('state',sum(100*clock));X=[-1,0,0;-...
每一步的代表的意思,谢谢你了!!!
单知感应器:
function main()
close all
rand ('state',sum(100*clock));
X=[-1,0,0;-1,0,1;-1,1,0;-1,1,1];D=[0,0,0,1];q=1;W=[0.1,rand(1,2)];
O=[0,0,0,0];ERROR=[];R2=[0,0,0,1];t=1;
for j=1:100
for p=1:4
if W(t,:)*X(p,:)'>0
O(1,p)=1;
else
O(1,p)=0;
end
R2(1,p)=D(1,p)-O(1,p)
M=W(t,:)+q* R2(1,p)*X(p,:)
W=[W;M]
if abs(R2(1,1))+abs(R2(1,2))+abs(R2(1,3))+abs(R2(1,4))==0 ,break,end
t=t+1
end
ERROR=[ERROR R2(1,1)+R2(1,2)+R2(1,3)+R2(1,4)]
if abs(R2(1,1))+abs(R2(1,2))+abs(R2(1,3))+abs(R2(1,4))==0 ,break,end
end
for i=1:3
figure
hold on
grid on
x=1:t
y=W(x,i)
plot(x,y,'b--');
ylabel('w')
end
figure
hold on
grid on
for i=1:4
x=X(i,2)
y=X(i,3)
plot(x,y,'*')
end
axis([-1 2 -1 2])
a=0:1
b=[W(t,1)-W(t,2)*a]/W(t,3)
plot(a,b,'b--')
figure
hold on
grid on
x=1:j
y=ERROR(1,x);
plot(x,y,'b--')
end 展开
单知感应器:
function main()
close all
rand ('state',sum(100*clock));
X=[-1,0,0;-1,0,1;-1,1,0;-1,1,1];D=[0,0,0,1];q=1;W=[0.1,rand(1,2)];
O=[0,0,0,0];ERROR=[];R2=[0,0,0,1];t=1;
for j=1:100
for p=1:4
if W(t,:)*X(p,:)'>0
O(1,p)=1;
else
O(1,p)=0;
end
R2(1,p)=D(1,p)-O(1,p)
M=W(t,:)+q* R2(1,p)*X(p,:)
W=[W;M]
if abs(R2(1,1))+abs(R2(1,2))+abs(R2(1,3))+abs(R2(1,4))==0 ,break,end
t=t+1
end
ERROR=[ERROR R2(1,1)+R2(1,2)+R2(1,3)+R2(1,4)]
if abs(R2(1,1))+abs(R2(1,2))+abs(R2(1,3))+abs(R2(1,4))==0 ,break,end
end
for i=1:3
figure
hold on
grid on
x=1:t
y=W(x,i)
plot(x,y,'b--');
ylabel('w')
end
figure
hold on
grid on
for i=1:4
x=X(i,2)
y=X(i,3)
plot(x,y,'*')
end
axis([-1 2 -1 2])
a=0:1
b=[W(t,1)-W(t,2)*a]/W(t,3)
plot(a,b,'b--')
figure
hold on
grid on
x=1:j
y=ERROR(1,x);
plot(x,y,'b--')
end 展开
展开全部
呵呵,C语言吧?rand ('state',sum(100*clock)); 这句是用来生成随机数的。我们通常叫做“种子”。clock本身是个时间函数。 举个例子来说吧。
clock()是C/C++中的计时函数,该函数返回值是硬件滴答数,要换算成秒或者毫秒,需要除以CLK_TCK或者 CLOCKS_PER_SEC。
而与其相关的数据类型是clock_t,clock_t其实就是long,即长整形。
其中clock_t是用来保存时间的数据类型,typedef long clock_t
clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:
#define CLOCKS_PER_SEC ((clock_t)1000)
在MSDN中,查得对clock函数定义如下:
clock_t clock(void) ;
这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick滴答)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。
程序用例:
view sourceprint?#include <stdio.h>
#include <time.h>
#include<stdlib.h>
#include<windows.h>
#include <math.h>
//void sleep( clock_t wait );
void main( void )
{
long i = 600000L;
clock_t start, finish;
double duration;
double a;
/* 等三秒 */
printf( "Delay for 3 seconds\n" );
// sleep( (clock_t)3 * CLOCKS_PER_SEC );//强制类型转换
_sleep(3000);//这种方式也可以,所属库: stdlib.h 函数功能: 实现延时,单位为毫秒。
//1000毫秒是1秒。 在VS2005中如果使用该函数会有提示:
//这个函数将在未来的库中舍弃,请用Sleep函数来代替。
//Sleep(3000);
printf( "Done!\n" );
/* Measure the duration of an event. */
printf( "Time to do %ld loops is ", i );
start = clock();
while( i-- ) {
a = sqrt(sqrt(16.0)); a = sqrt(sqrt(16.0));
}
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%lf seconds\n", duration );
}
/* 等待多少毫秒的子程序
void sleep( clock_t wait )
{
clock_t goal;
goal = wait + clock();
while( goal > clock() )
;
}*/
clock()是C/C++中的计时函数,该函数返回值是硬件滴答数,要换算成秒或者毫秒,需要除以CLK_TCK或者 CLOCKS_PER_SEC。
而与其相关的数据类型是clock_t,clock_t其实就是long,即长整形。
其中clock_t是用来保存时间的数据类型,typedef long clock_t
clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:
#define CLOCKS_PER_SEC ((clock_t)1000)
在MSDN中,查得对clock函数定义如下:
clock_t clock(void) ;
这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick滴答)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。
程序用例:
view sourceprint?#include <stdio.h>
#include <time.h>
#include<stdlib.h>
#include<windows.h>
#include <math.h>
//void sleep( clock_t wait );
void main( void )
{
long i = 600000L;
clock_t start, finish;
double duration;
double a;
/* 等三秒 */
printf( "Delay for 3 seconds\n" );
// sleep( (clock_t)3 * CLOCKS_PER_SEC );//强制类型转换
_sleep(3000);//这种方式也可以,所属库: stdlib.h 函数功能: 实现延时,单位为毫秒。
//1000毫秒是1秒。 在VS2005中如果使用该函数会有提示:
//这个函数将在未来的库中舍弃,请用Sleep函数来代替。
//Sleep(3000);
printf( "Done!\n" );
/* Measure the duration of an event. */
printf( "Time to do %ld loops is ", i );
start = clock();
while( i-- ) {
a = sqrt(sqrt(16.0)); a = sqrt(sqrt(16.0));
}
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%lf seconds\n", duration );
}
/* 等待多少毫秒的子程序
void sleep( clock_t wait )
{
clock_t goal;
goal = wait + clock();
while( goal > clock() )
;
}*/
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询