24小时热门版块排行榜    

查看: 736  |  回复: 0

yhyffrshuh

木虫 (正式写手)

流浪者一枚

[求助] 两个for循环出错

问题:设置N为3,F为5,A97中的每一行(一个样本)的到的平滑数据、一阶导数和二阶导数均是是1*104的矩阵;有97个样本,得到的数据应该是97*104的矩阵,但按下面的程序运行得到的平滑数据和一阶导数,二阶导数为 1*9897,这显然不对啊

程序代码如下:
clear,clc
load A97 %导入光谱,第一列为编号,最后一列为浓度值
dx=1;
x=215:321;      %波长范围是215nm-321nm
a=length(x); %x的数据个数
k=0:96;     % k为样本编号
SG0=[];
SG1=[];
SG2=[];
N=input('请输入拟合次数');
F=input('设置窗口参数(奇数)');
for k=k+1
y=A97(k,2:108); %第k个样本 215nm-321nm对应的吸光度
[b,g]=sgolay(N,F);
Halfwin=((F+1)/2)-1;
for n=(F+1)/2:a-(F+1)/2,
%SG平滑
SG0(n)=dot(g(:,1),y(n-Halfwin:n+Halfwin));
SG0=[SG0,SG0(n)];
%一阶差分求导
SG1(n)=dot(g(:,2),y(n-Halfwin:n+Halfwin));
SG1=[SG1,SG1(n)];
%二阶差分求导
SG2(n)=2*dot(g(:,3)',y(n-Halfwin:n+Halfwin))';
SG2=[SG2,SG2(n)];
end

SG1=SG1/dx;
SG2=SG2/(dx*dx);

subplot(3,1,1);
plot(SG0)
legend('S-G Smooth');

subplot(3,1,2);
plot(SG1)
legend('S-G Smooth 1st derivative');

subplot(3,1,3);
plot(SG2)
legend('S-G Smooth 2st derivativa');
end
回复此楼
Allhumanwisdomissummedupintwowords:waitandhope.
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

相关版块跳转 我要订阅楼主 yhyffrshuh 的主题更新
信息提示
请填处理意见