📄 dev_ls.m
字号:
function [XX]=dev_ls(X,ws,pol,n)
%it can derive the sectral X 's derivative spectrum.
%input:X SPECTRUM
% ws windowsize (it is used to least square smooth)
% pol the order of polymer
% n the order of the derivative\
%output:XX the devrivative spectrum
%this is written by orient!!!!!!!
%date: 2007.4.8
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
c=0.5*(ws-1);
b=c+1;
[lllll,mmmmm]=size(X);
M=[];
switch pol
case 2
poll=pol+1;
M=zeros(ws,poll);
for i=1:poll
for j=1:ws
M(j,i)=(j-b).^(i-1);
end
end
case 3
poll=pol+1;
M=zeros(ws,poll);
for i=1:poll
for j=1:ws
M(j,i)=(j-b).^(i-1);
end
end
% end
case 4
poll=pol+1;
M=zeros(ws,poll);
for i=1:poll
for j=1:ws
M(j,i)=(j-b).^(i-1);
end
end
case 5
poll=pol+1;
M=zeros(ws,poll);
for i=1:poll
for j=1:ws
M(j,i)=(j-b).^(i-1);
end
end
case 6
poll=pol+1;
M=zeros(ws,poll);
for i=1:poll
for j=1:ws
M(j,i)=(j-b).^(i-1);
end
end
end
end
a=inv(M'*M)*M';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%the derivative sectrum coeffcient
if n==1
aa=a(n+1,:) ;
end
if n==2
aa=a(n+1,:)*2*1;
end
if n==3
aa=a(n+1,:)*3*2*1 ;
end
if n==4
aa=a(n+1,:)*4*3*2*1;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[ll,mm]=size(X);
yy_dev=[];
for jj=1:ll
y=X(jj,:);
%y=X(1,:);
% for ii=1:b-1
% y_dev(i)=0;
%end
%%the spectrum ones ahead
for ii=1:b-1
k=ii-b;
[row,col]=size(a);
yyy=zeros(row,col);
yyyy=0;
for j=1:row
yyy(j,:)=j*a(j,:)*k^(j-1);
yyyy=yyyy+y(1:ws)* yyy(j,:)';
end
% y_dev(ii)=yyyy;
%yyy
%y_dev(ii)=y(1:ws)*yyy';
%y_dev(1)=y(2)-y(1);
%y_dev(2)=y(3)-y(2);
%y_dev(3)=y(4)-y(3);
%y_dev
end
%%the spectrum ones middle
for i=b:mm-c
y_dev(i)=y(i-c:i+c)*aa';
end
%%the spectrum ones tailed
%%the total deviative spectrum
yy_dev=[yy_dev;y_dev];
end
XX=yy_dev;
%yy_dev(:,1:5);
%subplot(2,1,1)
%plot(yy_dev(1,:))
%subplot(2,1,2)
%plot(X(1,:))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -