如何在matlab中生成时间序列

如何在matlab中生成时间序列,第1张

参考代码:

t0=datenum(2013,1,1,0,0,0)

dt=1/24

tf=datenum(2013,12,31,23,0,0)

T=t0:dt:tf

dv = datevec(T)

C=mat2cell(dv(1:end,1:5),ones(length(T),1),5)

S=cellfun(@(t){sprintf('%4i_%02i_%02i_%02i%02i_02',t)},C)

S1=cell2mat(S)

生成的结果,S是cell数组,每个元素对应一个时间;S1是字符矩阵,每行对应一个时间。

1

选5个移位寄存器

其实我也不知道这名字正不正确,反正就是z分之1那个

按顺序排列好,其中第二个初始条件(initial

conditions)设置为0,其他的默认为1.

2

先把这5个移位寄存器链接起来

第一个输出连第二个输入,以此类推到第五个接out,out这里再接一个scope以便观察信号波形

3

选一个logical

operator,并从设置中调成xor,4输入端

4

继续连线,xor的输出端接第一个移位寄存器的输入端;然后把xor输入端引到第二个移位寄存器和第三个移位寄存器的连线上,此时xor还有3个输入端,分别像刚刚那样分别引到第三和第四,第四和第五,第五和out的线上

5

点击运行

scope中显示的便是m序列,看吧

周期是31,1的个数比0多一个,而且没有重复波形!

不知道你要编程的还是simulink的....

y=0.03 0.14 0.01 0.20 0.09 0.12 0.11 0.20 0.23 0.20 0.14 0.12 0.17 0.13 0.07 0.10就是上面代码的yt,

你可以这么写:

clc,clear

y=[0.03 0.14 0.01 0.20 0.09 0.12 0.11 0.20 0.23 0.20 0.14 0.12 0.17 0.13 0.07 0.10]

yt=y'n=length(yt)

alpha=[0.2 0.5 0.8]m=length(alpha)

yhat(1,1:m)=(yt(1)+yt(2))/2

for i=2:n

yhat(i,:)=alpha*yt(i-1)+(1-alpha).*yhat(i-1,:)

end

yhat

err=sqrt(mean((repmat(yt,1,m)-yhat).^2))

xlswrite('lilv.xls',yhat)

yhat2014=alpha*yt(n)+(1-alpha).*yhat(n,:)

x是时间,在这里没什么用

最后运行结果是:

yhat =

0.08500.08500.0850

0.07400.05750.0410

0.08720.09880.1202

0.07180.05440.0320

0.09740.12720.1664

0.09590.10860.1053

0.10070.11430.1171

0.10260.11210.1114

0.12210.15610.1823

0.14370.19300.2205

0.15490.19650.2041

0.15190.16830.1528

0.14560.14410.1266

0.15040.15710.1613

0.14640.14350.1363

0.13110.10680.0833

err =

0.06320.06430.0718

yhat2014 =

0.12490.10340.0967


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8107808.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存