24小时热门版块排行榜    

查看: 737  |  回复: 4

heio

金虫 (小有名气)

[求助] matlab求助

本人打算用matlab处理数据中的趋势项问题  但无法运行  跪求高手指点  程序如下
%滑动平均法消除趋势项
clear
clc
close all hidden
fni=input('输入数据文件名称','s');
fid=fopen(fni,'r')
sf=fscanf(fid,'%f',1);     %读入采样频率值
l=fscanf(fid,'%d',1);      %读入滑动阶次
m=fscanf(fid,'%d',1);      %读入平滑次数
fno=fscanf(fid,'%d',1);    %读入输出数据文件名
x=fscanf(fid,'%f',inf);    %读入时程数据存成列向量
status=fclose(fid);
n=length(x);
t=(0:1/sf : (n-1)/sf);
b=ones(1,l);
a=[b*x(1),x,b*x(n)];
b=a;
for k=1:m
    for j=l+1:n-1
        b(j)=mean(a(j-1:j+1));
    end
    a=b;
end
y=x(1:n)-a(l+1:n+l);
plot(t,x,':',t,y,t,a(l+1:n+l),'-.');
xlabel('时间(s)');
ylabel('位移 mm');
legend('输入','输出','趋势');
grid on;
fid=fopen(fno,'w');
for k=1:n
   fprintf(fid,'%f%f\n',t(k),y(k));
end
status=fclose(fid);

[ Last edited by heio on 2012-8-9 at 10:29 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖


感谢参与,应助指数 +1
xzhdty: 金币+1, 谢谢参与 2012-08-09 18:11:02
没数据很难说。
a=[b*x(1),x,b*x(n)];
x是列向量,b是行向量,放一起组成a错了,可改成
a=[b*x(1),x‘,b*x(n)];

改之后
y=x(1:n)-a(l+1:n+l);
以及画图那句都要变下横竖。

» 本帖已获得的红花(最新10朵)

showmethemoney
2楼2012-08-09 10:51:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

heio

金虫 (小有名气)

送鲜花一朵
引用回帖:
2楼: Originally posted by csgt0 at 2012-08-09 10:51:34
没数据很难说。
a=;
x是列向量,b是行向量,放一起组成a错了,可改成
a=;

改之后
y=x(1:n)-a(l+1:n+l);
以及画图那句都要变下横竖。

没看太懂  能不能加个扣扣 聊
3楼2012-08-09 12:32:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小新爱小白

金虫 (小有名气)

Function [eval]=targetalloc (chrom)
[m,n]=size(chrom);
p=[87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;62 87 70 22 80 42 43 90 13 95 18 19 12 61 35;48 20 42 16 43 58 69 03 34 72 15 24 29 30 75];
w=[47 97 76 62 48 77 33 74 54 65 43 35 63 66 57];
for i=1:m
for j=1:15
chrom(i,j)=p(chrom(i,j),j);
end;
end
eval=chrom*w';
NIND=40;
MAXGEN=50;
GGAP=0.9;
trace=zeros(MAXGEN,2);
BaseV=crtbase(15,8);
Chrom=crtbp(NIND,BaseV)+ones(NIND,15);
gen=0;
ObjV=taretalloc(Chrom);
while gen FitnV=ranking(-ObjV);
SelCh=select('sus',Chrom,FitnV,GGAP);
SelCh=recombin('xovsp',SelCh,0.7);
f=rep([1;8],[1,15]);
SelCh=mutbga(SelCh,f);SelCh=fix(SelCh);
ObjVSel=taretalloc(SelCh);
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);
gen=gen+1;
trace(gen,1)=max(ObjV);
trace(gen,2)=sum(ObjV)/length(ObjV);
end
[Y,I]=max(ObjV);Chrom(I,,Y
plot(trace(:,1),'-.');hold on;
plot(trace(:,2));grid
Legend('解的变化','种群均值的变化')
这个程序有什么问题,怎么总是提示错误,也运行不了呢?或者请指教怎么在Matlab 7.7.0(R2008b)里边具体步骤。
O(∩_∩)O谢谢
天天开心,事事顺利
4楼2012-08-11 20:08:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小新爱小白

金虫 (小有名气)

引用回帖:
2楼: Originally posted by csgt0 at 2012-08-09 10:51:34
没数据很难说。
a=;
x是列向量,b是行向量,放一起组成a错了,可改成
a=;

改之后
y=x(1:n)-a(l+1:n+l);
以及画图那句都要变下横竖。

Function [eval]=targetalloc (chrom)
[m,n]=size(chrom);
p=[87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;62 87 70 22 80 42 43 90 13 95 18 19 12 61 35;48 20 42 16 43 58 69 03 34 72 15 24 29 30 75];
w=[47 97 76 62 48 77 33 74 54 65 43 35 63 66 57];
for i=1:m
for j=1:15
chrom(i,j)=p(chrom(i,j),j);
end;
end
eval=chrom*w';
NIND=40;
MAXGEN=50;
GGAP=0.9;
trace=zeros(MAXGEN,2);
BaseV=crtbase(15,8);
Chrom=crtbp(NIND,BaseV)+ones(NIND,15);
gen=0;
ObjV=taretalloc(Chrom);
while gen FitnV=ranking(-ObjV);
SelCh=select('sus',Chrom,FitnV,GGAP);
SelCh=recombin('xovsp',SelCh,0.7);
f=rep([1;8],[1,15]);
SelCh=mutbga(SelCh,f);SelCh=fix(SelCh);
ObjVSel=taretalloc(SelCh);
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);
gen=gen+1;
trace(gen,1)=max(ObjV);
trace(gen,2)=sum(ObjV)/length(ObjV);
end
[Y,I]=max(ObjV);Chrom(I,,Y
plot(trace(:,1),'-.');hold on;
plot(trace(:,2));grid
Legend('解的变化','种群均值的变化')
这个程序有什么问题,怎么总是提示错误,也运行不了呢?或者请指教怎么在Matlab 7.7.0(R2008b)里边具体步骤。
O(∩_∩)O谢谢
天天开心,事事顺利
5楼2012-08-11 20:08:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 heio 的主题更新
信息提示
请填处理意见