⑴ 求首次适应算法的c语言程序!(计算机操作系统的)
最佳适应算法C++程序:
struct list // 初始化数据的结构体
{
int num;
int adr;
int end;
int size;
}s[]={{1,1000,2999,2000},{2,500,799,300},{3,3500,3699,200},{4,4000,4499,500}}; // 初始化空闲分区
/*void print(struct list *p,int n) // print函数作用输出结果
{
int flag1=1;
int flag2=1;
int i,j=0;
cout<<"-------------------------------------\n";
for(i=0;i {
if(p->size==0) // 控制不输出size=0的空闲块
{
flag2=0;
j++;
continue;
}
else
flag2=1;
if(p->size!=0&&flag2!=0)
{
flag1=0;
cout<<"序号:"<num-j/*输出的序号仍然是从1开始*//*<<" 起始位置:"<adr<<" 终止位置:"<end<<" 空闲块大小:"<size< }
}
if(flag1==1) // 当所有的空闲块正好被分配完时
cout<<"\n空闲内存已被分配完,请回收!\n";
cout<<"-------------------------------------\n";
}*/
void print(struct list a[],int n) // print函数作用输出结果
{
int i;
cout<<"-------------------------------------\n";
if(a[0].size==0)
{
for(i=0;i {
a[i].adr=a[i+1].adr;
a[i].size=a[i+1].size;
a[i].end=a[i+1].end;
}
k=k-1;
}
if(k==0)
cout<<"\n空闲块已经分配完毕,需要再分配,请回收!\n";
for(i=0;i cout<<"序号:"< cout<<"-------------------------------------\n";
}
未完。请自己从参考资料上复制。
⑵ 最佳适应算法
最佳适应算法:
1、最佳适应算法(Best Fit):它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表(空闲区链)中的空闲分区要按大小从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。
该算法保留大的空闲区,但造成许多小的空闲区。
2、首次适应算法(First Fit):从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。
该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高地址空间保留大的空闲区。
3、循环首次适应算法(Next Fit):该算法是首次适应算法的变种。在分配内存空间时,不再每次从表头(链首)开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。
该算法能使内存中的空闲区分布得较均匀。
⑶ 镎崭綔绯荤粺镄勪富瑕佺畻娉曢兘链夊摢浜
涓銆佽繘绋嬶纸浣滀笟锛夎皟搴︾畻娉
- 鍏堟潵鍏堟湇锷¤皟搴︾畻娉曪纸FCFS锛夛细阃夋嫨链鍏堣繘鍏ュ氨缁阒熷垪镄勮繘绋嬶纴鍒嗛厤澶勭悊鍣ㄧ洿镊冲叾瀹屾垚鎴栧洜浜嬩欢阒诲炪傛ょ畻娉曞埄浜庨暱杩涚▼锛屼笉鍒╀簬鐭杩涚▼銆
- 鐭杩涚▼锛堜綔涓氾级浼桦厛璋冨害绠楁硶锛圫PF锛夛细阃夋嫨浼拌¤繍琛屾椂闂存渶鐭镄勮繘绋嬶纴浼桦厛鍒嗛厤澶勭悊鍣ㄣ
- 镞堕棿鐗囱疆杞璋冨害绠楁硶锛氩皢CPU鍒嗛厤缁欓槦棣栬繘绋嬶纴璁╁叾镓ц屼竴涓镞堕棿鐗囥傛椂闂寸墖鐢ㄥ畬钖庯纴杩涚▼𨱌傚仠镓ц岋纴绛夊緟涓嬩竴杞璋冨害銆
- 浼桦厛鏁拌皟搴︾畻娉曪细阃夋嫨浼桦厛𨱒冩渶楂樼殑杩涚▼鍒嗛厤澶勭悊鍣ㄣ
- 鍝嶅簲姣旈珮钥呬紭鍏堣皟搴︾畻娉曪细阃夋嫨鍝嶅簲姣旀渶楂樼殑杩涚▼锛屽钩琛′简鐭杩涚▼鍜岄暱杩涚▼镄勬墽琛屻
- 澶氱骇阒熷垪璋冨害绠楁硶锛氩皢杩涚▼鍒嗕负澶氢釜阒熷垪锛屾牴鎹涓嶅悓绛栫暐鍒嗛厤澶勭悊鍣ㄣ
浜屻佸瓨鍌ㄥ櫒杩炵画鍒嗛厤鏂瑰纺涓鍒嗗尯鍒嗛厤绠楁硶
- 棣栨¢傚簲鍒嗛厤绠楁硶锛团F锛夛细浠庣┖闂插垎鍖鸿〃寮濮嬮‘搴忔煡镓撅纴镓惧埌绗涓涓婊¤冻浣滀笟闀垮害镄勭┖闂插尯杩涜屽垎閰嶃
- 寰鐜棣栨¢傚簲绠楁硶锛氢粠涓婃″垎閰崭綅缃钖庡紑濮嬫煡镓剧┖闂插垎鍖恒
- 链浣抽傚簲鍒嗛厤绠楁硶锛圔F锛夛细鎸戦夎兘婊¤冻浣滀笟瑕佹眰镄勬渶灏忕┖闂插尯锛屽噺灏戝垎鍓插ぇ鍖哄烟镄勫彲鑳芥с
涓夈侀〉闱㈢疆鎹㈢畻娉
- 链浣崇疆鎹㈢畻娉曪纸OPT锛夛细阃夋嫨姘镐笉浣跨敤鎴栧湪链闀挎椂闂村唴涓嶅啀琚璁块梾镄勯〉闱㈡窐姹般
- 鍏堣繘鍏埚嚭缃鎹㈢畻娉曪纸FIFO锛夛细阃夋嫨链鍏堣繘鍏ュ唴瀛樼殑椤甸溃娣樻卑銆
- 链杩戞渶涔呮湭浣跨敤绠楁硶锛圠RU锛夛细娣樻卑链杩戞渶涔呮湭浣跨敤镄勯〉闱銆
- 链灏戜娇鐢ㄧ畻娉曪纸LFU锛夛细娣樻卑璁块梾娆℃暟链灏戠殑椤甸溃銆
锲涖佺佺洏璋冨害
- 鍏堟潵鍏堟湇锷★纸FCFS锛夛细鎸夎锋眰璁块梾钥呯殑鍏埚悗娆″簭钖锷ㄧ佺洏椹卞姩鍣ㄣ
- 链鐭瀵婚亾镞堕棿浼桦厛锛圫STF锛夛细阃夋嫨绂诲綋鍓岖侀亾链杩戠殑璇锋眰璁块梾钥咃纴鍑忓皯纾佽哕绉诲姩銆
- 镓鎻忕畻娉曪纸SCAN锛夛细浠庡綋鍓崭綅缃寮濮嬶纴娌跨佽哕绉诲姩鏂瑰悜阃夋嫨链杩戠殑璁块梾钥呫傛棤璇锋眰镞舵敼鍙樼Щ锷ㄦ柟钖戙
- 寰鐜镓鎻忕畻娉曪纸CSCAN锛夛细纾佽哕鍗曢”绉诲姩锛屼粠澶栧悜閲岄夋嫨链杩戠殑璁块梾钥呫傛棤璇锋眰镞跺洖鍒版渶澶栬块梾镆遍溃鍙锋渶灏忕殑浣滀笟璇锋眰銆
⑷ 【高分悬赏】用C/C++语言设计一个适应算法(最先、最佳或最坏适应算法)
考的是内存的动态划分区域内容,很好写啊
1.可以用数字来模拟内存区域划分情况,比如建一个100大小的数组(结构为struc (区号,值),值为0表示空闲,值为1表示占用,初始化几个已确定占有的分区,分区一,1-5 占有,6-12 空闲,。。。。。。。,并建立空闲区域表,很简单,从头到尾对数组扫描下就知道了
2.最先适应:从内存开始地址找到第一个大于请求大小的连续空闲区域,如请求5个空间,那就在刚开始6-12空闲处建立分区二 ,6-11 ,占用
3.最佳适应:指所有空闲块最适应请求大小的那块,min(空闲块大小-请求大小)
4.最坏:指适应请求大小,且最大的那块空闲区域
⑸ 基于RLS算法和LMS的自适应滤波器的MATLAB程序
% RLS算法
randn('seed', 0) ;
rand('seed', 0) ;
NoOfData = 8000 ; % Set no of data points used for training
Order = 32 ; % 自适应滤波权数
Lambda = 0.98 ; % 遗忘因子
Delta = 0.001 ; % 相关矩阵R的初始化
x = randn(NoOfData, 1) ;%高斯随机系列
h = rand(Order, 1) ; % 系统随机抽样
d = filter(h, 1, x) ; % 期望输出
% RLS算法的初始化
P = Delta * eye ( Order, Order ) ;%相关矩阵
w = zeros ( Order, 1 ) ;%滤波系数矢量的初始化
% RLS Adaptation
for n = Order : NoOfData ;
u = x(n:-1:n-Order+1) ;%延时函数
pi_ = u' * P ;%互相关戚烂函数
k = Lambda + pi_ * u ;
K = pi_'/k;%增益矢量
e(n) = d(n) - w' * u ;%误差函数
w = w + K * e(n) ;%递归公式
PPrime = K * pi_ ;
P = ( P - PPrime ) / Lambda ;%误差相关矩阵
w_err(n) = norm(h - w) ;%真实估计误差
end ;
% 作图表示结果
figure ;
plot(20*log10(abs(e))) ;%| e |的误差曲线
title('学习曲线') ;
xlabel('迭代次数') ;
ylabel('输出误差估计') ;
figure ;
semilogy(w_err) ;%作实际估计误差图
title('矢量估计误差') ;
xlabel('迭代次数') ;
ylabel('误差权矢量') ;
%lms 算法
clear all
close all
hold off%系统信道权数
sysorder = 5 ;%抽头数
N=1000;%总采样次数
inp = randn(N,1);%产生高斯随机系列
n = randn(N,1);
[b,a] = butter(2,0.25);
Gz = tf(b,a,-1);%逆变高滚漏换函数
h= [0.0976;0.2873;0.3360;0.2210;0.0964;];%信道特性向量
y = lsim(Gz,inp);%加入噪声
n = n * std(y)/(10*std(n));%噪声信号
d = y + n;%期望输出信号
totallength=size(d,1);%步长
N=60 ; %60节点作为训练序列
%算法的开始
w = zeros ( sysorder , 1 ) ;%初始化
for n = sysorder : N
u = inp(n:-1:n-sysorder+1) ;% u的矩阵
y(n)= w' * u;%系统输出
e(n) = d(n) - y(n) ;%误差
if n < 20
mu=0.32;
else
mu=0.15;
end
w = w + mu * u * e(n) ;%迭代方程
end
%检验结果
for n = N+1 : totallength
u = inp(n:-1:n-sysorder+1) ;
y(n) = w' * u ;
e(n) = d(n) - y(n) ;%误差
end
hold on
plot(d)
plot(y,'r');
title('系统输出') ;
xlabel('样本')
ylabel('实际输出')
figure
semilogy((abs(e))) ;% e的绝对值坐标
title('误差曲线') ;
xlabel('样本')
ylabel('误差矢量')
figure%作图
plot(h, 'k+')
hold on
plot(w, 'r*')
legend('实际权矢量','估计权矢量')
title('比较实际和估计权矢量') ;
axis([0 6 0.05 0.35])
数字滤波器在数字信号处理中的应用广泛,是数字信号处理的重要基础。自适应滤波器可以不必事先给定信号及噪声的自相关函数,它可以利用前一时刻已获得的滤波器参数自动地调节现时刻的滤波器参数使得滤波器输出和未知的输入之间的均方误差最小化,从而它可以实现最优滤波。
自适应滤波器的算法有很多,有RLS(递归最小二乘法)和LMS(最小均方算法)等。自适应LMS算法是一种很有用且很简单的估计梯度的方法,在信号处理中得到广泛应用。
本论文主要研究了自适应滤波器的基本结构和原理,然后介绍了最小均方误差算法(LMS算法),并完成了一种基于MATLAB平台的自适应LMS自适应滤波器的设计,同时实现了对信号进行初步的降噪处理。
通过仿真,我们实现了LMS自适应滤波算法,并从结果得知步长和滤波器的阶数是滤波器中很重要的两个参数,并通过修改它们证实了这一点,其中步长影响着收敛时间,而且阶数的大小也会大大地影响自适应滤波器的性能。
自适应滤波器实际上是一种能够自动调整本身参数的特殊维纳滤波器,在设计时不需要预先知道关于输入信号和噪声的统计特性,它能够在工作过程中逐步“了解” 或估计出所需的统计特性,并以此为依据自动调整自身的参数,以达到最佳滤波效果。一旦输入信号的统计特性发生变化,它又能够跟踪这种变化,自动调整参数,使滤波器性能重新达到最佳。 自适应滤波器由参数可调的数字滤波器(或称为自适应处理器)和自适应算法两部分组成,如图7-3所示。参数可调数字滤波器可以是FIR数字滤波器或IIR数字滤波器,也可以是格型数字滤波器。输入信号x(n)通过参数可调数字滤波器后产生输出信号(或响应)y(n),将其与参考信号(或称期望响应)d(n)进行比较,形成误差信号e(n),并以此通过某种自适应算法对滤波器参数进行调整,最终使e(n)的均方值最小。尽管自适应滤波器具有各种不同的算法和结构,但是,其最本质特征是始终不变的。这种最本质的特征可以概括为:自适应滤波器依据用户可以接受的准则或性能规范,在未知的而且可能是时变的环境中正常运行,而无须人为的干预。本章主要讨论的是基于维纳滤波器理论的最小均方(LMS)算法,可以看到LMS算法的主要优点是算法简单、运算量小、易于实现;其主要缺点是收敛速度较慢,而且与输入信号的统计特性有关。 自适应线性滤波器是一种参数可自适应调整的有限冲激响应(FIR)数字滤波器,具有非递归结构形式。因为它的分析和实现比较简单,所以在大多数自适应信号处理系统中得到了广泛应用。如图7-4所示的是自适应线性滤波器的一般形式。输入信号矢量x(n)的L+1个元素,既可以通过在同一时刻对L+1个不同信号源取样得到,也可以通过对同一信号源在n以前L+1个时刻取样得到。前者称为多输入情况,如图7-5所示,后者称为单输入情况如图7-4所示,这两种情况下输入信号矢量都用x(n)表示,但应注意它们有如下区别。 单输入情况: (7-18) 多输入情况: (7-19) 单输入情况下x(n)是一个时间序列,其元素由一个信号在不同时刻的取样值构成;而多输入情况下x(n)是一个空间序列,其元素由同一时刻的一组取样值构成,相当于并行输入。 对于一组固定的权系数来说,线性滤波器是输出y(n)等于输入矢量x(n)的各元素的线性加权之和。然而实际上权系数是可调的,调整权系数的过程叫做自适应过程。在自适应过程中,各个权系数不仅是误差信号e(n)的函数,而且还可能是输入信号的函数,因此,自适应线性滤波器的输出就不再是输入信号的线性函数。 输入信号和输出信号之间的关系为 单输入情况: (7-20) 多输入情况: (7-21) 如图7-4所示的单输入自适应线性滤波器,实际上是一个时变横向数字滤波器,有时称为自适应横向滤波器。它在信号处理中应用很广泛。自适应线性滤波器的L+1个权系数构成一个权系数矢量,称为权矢量,用w(n)表示,即 (7-22) 这样,输出响应表示为 (7-23) 参考响应与输出响应之差称为误差信号,用e(n)表示,即 (7-24) 自适应线性滤波器按照误差信号均方值(或平均功率)最小的准则,即 (7-25) 来自动调整权矢量。
clear all
close all
%channel system order
sysorder = 5 ;
% Number of system points
N=2000;
inp = randn(N,1);
n = randn(N,1);
[b,a] = butter(2,0.25);
Gz = tf(b,a,-1);
%This function is submitted to make inverse Z-transform (Matlab central file exchange)
%The first sysorder weight value
%h=ldiv(b,a,sysorder)'
% if you use ldiv this will give h :filter weights to be
h= [0.0976;
0.2873;
0.3360;
0.2210;
0.0964;];
y = lsim(Gz,inp);
%add some noise
n = n * std(y)/(10*std(n));
d = y + n;
totallength=size(d,1);
%Take 60 points for training
N=60 ;
%begin of algorithm
w = zeros ( sysorder , 1 ) ;
for n = sysorder : N
u = inp(n:-1:n-sysorder+1) ;
y(n)= w' * u;
e(n) = d(n) - y(n) ;
% Start with big mu for speeding the convergence then slow down to reach the correct weights
if n < 20
mu=0.32;
else
mu=0.15;
end
w = w + mu * u * e(n) ;
end
%check of results
for n = N+1 : totallength
u = inp(n:-1:n-sysorder+1) ;
y(n) = w' * u ;
e(n) = d(n) - y(n) ;
end
hold on
plot(d)
plot(y,'r');
title('System output') ;
xlabel('Samples')
ylabel('True and estimated output')
figure
semilogy((abs(e))) ;
title('Error curve') ;
xlabel('Samples')
ylabel('Error value')
figure
plot(h, 'k+')
hold on
plot(w, 'r*')
legend('Actual weights','Estimated weights')
title('Comparison of the actual weights and the estimated weights') ;
axis([0 6 0.05 0.35])
% RLS 算法
randn('seed', 0) ;
rand('seed', 0) ;
NoOfData = 8000 ; % Set no of data points used for training
Order = 32 ; % Set the adaptive filter order
Lambda = 0.98 ; % Set the fetting factor
Delta = 0.001 ; % R initialized to Delta*I
x = randn(NoOfData, 1) ;% Input assumed to be white
h = rand(Order, 1) ; % System picked randomly
d = filter(h, 1, x) ; % Generate output (desired signal)
% Initialize RLS
P = Delta * eye ( Order, Order ) ;
w = zeros ( Order, 1 ) ;
% RLS Adaptation
for n = Order : NoOfData ;
u = x(n:-1:n-Order+1) ;
pi_ = u' * P ;
k = Lambda + pi_ * u ;
K = pi_'/k;
e(n) = d(n) - w' * u ;
w = w + K * e(n) ;
PPrime = K * pi_ ;
P = ( P - PPrime ) / Lambda ;
w_err(n) = norm(h - w) ;
end ;
% Plot results
figure ;
plot(20*log10(abs(e))) ;
title('Learning Curve') ;
xlabel('Iteration Number') ;
ylabel('Output Estimation Error in dB') ;
figure ;
semilogy(w_err) ;
title('Weight Estimation Error') ;
xlabel('Iteration Number') ;
ylabel('Weight Error in dB') ;
处理的重要基础。自适应滤波器可以不必事先给定信号及噪声的自相关函数,它可以利用前一时刻已获得的滤波器参数自动地调节现时刻的滤波器参数使得滤波器输出和未知的输入之间的均方误差最小化,从而它可以实现最优滤波。
自适应滤波器的算法有很多,有RLS(递归最小二乘法)和LMS(最小均方算法)等。自适应LMS算法是一种很有用且很简单的估计梯度的方法,在信号处理中得到广泛应用。
本论文主要研究了自适应滤波器的基本结构和原理,然后介绍了最小均方误差算法(LMS算法),并完成了一种基于MATLAB平台的自适应LMS自适应滤波器的设计,同时实现了对信号进行初步的降噪处理。
通过仿真,我们实现了LMS自适应滤波算法,并从结果得知步长和滤波器的阶数是滤波器中很重要的两个参数,并通过修改它们证实了这一点,其中步长影响着收敛时间,而且阶数的大小也会大大地影响自适应滤波器的性能。
clear all
close all
N=10; %滤波器阶数
sample_N=500; %采样点数
A=1; %信号幅度
snr=10; %信噪比
t=1:sample_N;
length_t=100; %期望信号序列长度
d=A*sin(2*pi*t/length_t); %期望信号
M=length(d); %M为接收数据长度
x=awgn(d,snr); %经过信道(加噪声)
delta=1/(10*N*(A^2)); %计算能够使LMS算法收敛的delta
y=zeros(1,M);
h=zeros(1,N); %LMS滤波器系数
h_normalized=zeros(1,N); %归一化LMS滤波器系数
y1=zeros(1,N);
for n=N:M %系数调整LMS算法
x1=x(n:-1:n-N+1);
%LMS算法
y(n)=h*x1'
e(n)=d(n)-y(n);
h=h+delta*e(n)*x1;
%NLMS算法
y_normalized(n)=h_normalized*x1'
e_normalized(n)=d(n)-y_normalized(n);
h_normalized=h_normalized+e_normalized(n)*x1/(x1*x1');
end
error=e.^2; %LMS算法每一步迭代的均方误差
error_normalized=e_normalized.^2; %NLMS算法每一步迭代的均方误差
for n=N:M %利用求解得到的h,与输入信号x做卷积,得到滤波后结果
x2=x(n:-1:n-N+1);
y1(n)=h*x2'
y2(n)=h_normalized*x2'
end
subplot(411)
plot(t,d);
axis([1,sample_N,-2,2]);
subplot(412)
plot(t,x);
subplot(413)
plot(t,y);
subplot(414)
plot(t,y_normalized);
figure(2)
plot(t,error,'r',t,error_normalized,'b');
帮你在网络文库里找到这个算法,自适应噪声抵消LMS算法Matlab仿真,希望对你有帮助。如有问题,可以再讨论解决。
里面有些代码有问题,可以参考,代码还是自己写:!
%基于RLS算法的自适应线性预测
clc;
clear all;
N=300;
M=100;%计算的次数
w1=zeros(N,M);w2=zeros(N,M);I=eye(2);e1=zeros(N,M);
for k=1:M
%产生白噪声
Pv=0.008;%定义白噪声方差
a1=-0.195;a2=0.95;o=0.02;r=0.95;
m=5000;%产生5000个随机数
v=randn(1,m);
v=v*sqrt(Pv);%产生均值为0,方差为Pv的白噪声
%m=1:N;
v=v(1:N);%取出前1000个
%plot(m,v);title('均值为0,方差为0.0965的白噪声');ylabel('v(n)');xlabel('n');
v=v'
%向量初使化
x=zeros(1,N);
x(1)=v(1);%x(0)=v(0)
x(2)=v(2)-a1*v(1);%x(1)=v(1)-a1*v(0)
w=zeros(2,N);
w(:,1)=[0 0]'%w(0)=[0 0]'
X=zeros(2,N);
X(:,2)=[v(1) 0]'%X(0)=[0 0]'X(1)=[v(0) 0]'
C=zeros(2,2*N);
C(:,1:2)=1/o.*I;%C(0)=1/o*I
e=zeros(1,N)'%定义误差向量
u=zeros(1,N);
g=zeros(2,N);
%根据RLS算法进行递推
for n=1:N-2
x(n+2)=v(n+2)-a1*x(n+1)-a2*x(n);
X(:,n+2)=[x(n+1) x(n)]'
u(n)=X(:,n+1)'*C(:,2*n-1:2*n)*X(:,n+1);
g(:,n)=(C(:,2*n-1:2*n)*X(:,n+1))./(r+u(n));
w(:,n+1)=w(:,n)+g(:,n)*(x(n+1)-X(:,n+1)'*w(:,n));
C(:,2*n+1:2*(n+1))=1/r.*(C(:,2*n-1:2*n)-g(:,n)*X(:,n+1)'*C(:,2*n-1:2*n));
e(n)=x(n+1)-X(:,n+1)'*w(:,n);
w1(:,k)=w(1,:)' w2(:,k)=w(2,:)'%将每次计算得到的权矢量值储存
e1(:,k)=e(:,1);%将每次计算得到的误差储存
end
end
%求权矢量和误差的M次的平均值
wa1=zeros(N,1);wa2=zeros(N,1);en=zeros(N,1);
for k=1:M
wa1(:,1)=wa1(:,1)+w1(:,k);
wa2(:,1)=wa2(:,1)+w2(:,k);
en(:,1)=en(:,1)+e1(:,k);
end
n=1:N;
subplot(221)
plot(n,w(1,n),n,w(2,n));%作出单次计算权矢量的变化曲线
xlabel('n');ylabel('w(n)');title('w1(n)和w2(n)的单次变化曲线(线性预测,RLS)')
subplot(222)
plot(n,wa1(n,1)./M,n,wa2(n,1)./M);%作出100次计算权矢量的平均变化曲线
xlabel('n');ylabel('w(n)');title('w1(n)和w2(n)的100次平均变化曲线')
subplot(223)
plot(n,e(n,1).^2);%作出单次计算e^2的变化曲线
xlabel('n');ylabel('e^2');title('单次计算e^2的变化曲线');
subplot(224)
plot(n,(en(n,1)/M).^2);%作出M次计算e^2的平均变化曲线
xlabel('n');ylabel('e^2');title(颼次计算e^2的平均变化曲线');
⑹ C语言,“最优数字分配策略” 谁能给个思路
最佳适应算法是从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区的一种计算方法,这种方法能使碎片尽量小。
最佳适应算法(Best Fit):
它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表(空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。该算法保留大的空闲区,但造成许多小的空闲区。
Best fit算法等价于装箱问题,举例如下:
装箱问题:有体积为V的箱子N个,体积为Vi的物品M个,求使得物品全部能够装入箱子,箱子数量的最小值。
假设 V=6 N=10,V1,V2,...,V10分别为:3 4 4 3 5 1 2 5 3 1。计算过程如下:
第一步按物品体积降序排序:5 5 4 4 3 3 3 2 1 1
第二步:取未装箱的最大值5装入第一个箱子。
第三步:判断第一个箱子是否已满,不满且剩余空间为1,搜寻剩下体积小于等于1的物品填入箱子1,箱子1填满。
第四步:重复第二,第三步,直到所有物品装入箱子为止,得到箱子数量为6.
6即时本例N的最小值。