matlab中文教程内容摘要:

1,sdate)。 semilogy(cdate,logpred1,39。 –39。 ,cdate,pop,39。 +39。 )。 grid on logres2 = log10(pop) –polyval(logp2,sdate)。 plot(cdate,logres2,39。 +39。 ) 上面的图不令人满意,下面,我们用二阶的对数分析: logp2 = polyfit(sdate,log10(pop),2)。 logpred2 = 10.^polyval(logp2,sdate)。 semilogy(cdate,logpred2,39。 –39。 ,cdate,pop,39。 +39。 )。 grid on r = pop – 10.^(polyval(logp2,sdate))。 plot(cdate,r,39。 +39。 ) 这种余量分析比多项式拟合的余量分析图案要随机的多(没有很强的规律性),可以预见,随着人数的增加,余粮所反映的不确定度也在增加,但总的说来,这种拟合方式要强好多。 误差边界 误差边界常用来反映你所用的拟合方式是否适用于数据,为得到误差边界,只需在 polyfit()中传递第二个参数,并将其送入 polyval(). 下面是一个二阶多项式拟合模型 ,年份已被标准化 ,下面的代码用了 2σ ,对应于 95%的可置信度 : [p2,S2] = polyfit(sdate,pop,2)。 [pop2,del2] = polyval(p2,sdate,S2)。 plot(cdate,pop,39。 +39。 ,cdate,pop2,39。 g–39。 ,cdate,pop2+2*del2,39。 r:39。 ,... cdate,pop2–2*del2,39。 r:39。 ), grid on 差分方程和滤波 MatLab 中的差分和滤波基本都是对向量而言的,向量则是存储取样信号或序列的. 函数 y = filter(b, a, x)将用 a,b描述的滤波器处理向量 x,然后将其存储在向量 y中 , filter()函数可看为是一差分方程 a1y(n)=b1*x(1)+b2*x(2)+...a2*y(2)... 如有以下差分方程 :y(n)=1/4*x(n)+1/4*x(n1)+1/4*x(n2)+1/4*x(n3),则 a = 1。 b = [1/4 1/4 1/4 1/4]。 我们载入数据 ,取其第一列 ,并计算有 : load x = count(:,1)。 y = filter(b,a,x)。 t = 1:length(x)。 plot(t,x,39。 –.39。 ,t,y,39。 –39。 ), grid on legend(39。 Original Data39。 ,39。 Smoothed Data39。 ,2) 实现所表示的就是滤波后的数据 ,它代表了 4 小时的平均车流量 MatLab 的信号处理工具箱中提供了很多用来滤波的函数 ,可用来处理实际问 题 ! 快速傅立叶变换 (FFT) 傅立叶变换能把信号按正弦展开成不同的频率值 ,对于取样信号 ,用的是离散傅立叶变换 . FFT 是离散傅立叶变换的一种高速算法 ,在信号和图像处理中有极大的用处 ! fft 离散傅立叶变换 fft2 二维离散傅立叶变换 fftn n 维离散傅立叶变换 ifft 离散傅立叶反变换 ifft2 二维离散傅立叶反变换 ifftn n 维离散傅立叶反变换 abs 幅度 angle 相角 unwrap 相位按弧度展开 ,大于π的变换为 2π的补角 fftshift 把零队列移至功率谱中央 cplxpair 把数据排成复数对 nextpow2 下两个更高的功率 向量 x 的 FFT 可以这样求 : x = [4 3 7 –9 1 0 0 0]’ y = fft(x) y = – – – – + – – – + + x虽然是实数 ,但 y是复数 ,其中 ,第一个是因为它是常数相加的结果 ,第五个则对应于奈奎斯特频率 ,后三个数是由于负频率的影响 ,它们是前面三个数的共轭值 ! 下面 ,让我们来验证一下太阳黑子活动周期是 11 年 !Wolfer数记录了 300年太阳黑子的数量及大小 : load year = sunspot(:,1)。 wolfer = sunspot(:,2)。 plot(year,wolfer) title(’Sunspot Data’) 现在来看看其 FFT: Y = fft(wolfer)。 Y 的幅度是功率谱 ,画出功率谱和频率的对应关系就得出了周期图 ,去掉第一点 ,因为他只是所有数据的和 ,画图有 : N = length(Y)。 Y(1) = []。 power = abs(Y(1:N/2)).^2。 nyquist = 1/2。 freq = (1:N/2)/(N/2)*nyquist。 plot(freq,power), grid on xlabel(’cycles/year’) title(’Periodogram’) 上面的图看起来不大方便 ,下面我们画出频谱 周期图 period = 1./freq。 plot(period,power), axis([0 40 0 2e7]), grid on ylabel(’Power’) xlabel(’Period(Years/Cycle)’) 为了得出精确一点的解 ,如下 : [mp index] = max(power)。 period(index) ans = 变换后的幅度和相位 abs()和 angle()是用来计算幅度和相位的 先创建一信号 ,再进行分析 ,unwarp()把相位大于π的变换为 2π的补角 : t = 0:1/99:1。 x = sin(2*pi*15*t) + sin(2*pi*40*t)。 y = fft(x)。 m = abs(y)。 p = unwrap(angle(y))。 f = (0:length(y)–1)39。 *99/length(y)。 subplot(2,1,1), plot(f,m), ylabel(39。 Abs. Magnitude39。 ), grid on subplot(2,1,2), plot(f,p*180/pi) ylabel(39。 Phase [Degrees]39。 ), grid on xlabel(39。 Frequency [Hertz]39。 ) 可以发现幅度曲线关于奈奎斯特频率对称 ,只有 050Hz的信息是有用的 ! FFT 的长度与速度 可以为 FFT 加上第二个参数 ,告诉 MatLab这是 n点 y = fft(x,n),若 x长度大于 n,软件自动补 0,否则截取 x. 若 : 1. n 为 2 的幂 ,软件将执行基 2 快速傅立叶算 法 ,这时的运算速度是最快的 2. n 为合数 ,软件将 n 分解为素数来算 ,计算量与 n 的值有关 .n 为 1013将比 1000点的速度慢的多 ! 3. n 为素数 ,软件执行 DFT 的公式 ,此时最慢 矩阵和线性代数 MatLab 中的矩阵 MatLab 中有好多函数可以产生不同的矩阵 ,下面就让我们产生两个 3*3的矩阵 ,这一章中 ,我们的学习就靠她们了 !!! A = pascal(3) A = 1 1 1 1 2 3 1 3 6 B = magic(3) B = 8 1 6 3 5 7 4 9 2 还有一个 3*2 的随机矩阵 : C = fix(10*rand(3,2)) C = 9 4 2 8 6 7 看看列矩阵,行矩阵,以及常数的表达: u = [3。 1。 4] v = [2 0 —1] s = 7 产生的矩阵是: u = 3 1 4 v = 2 0 —1 s = 7 加减法 X = A + B X = 9 2 7 4 7 10 5 12 8 Y = X –A Y = 8 1 6 3 5 7 4 9 2 若二矩阵维数不统一,则会出错。 X = A + C Error using == + Matrix dimensions must agree. 向量的乘积与转置 x = v*u x = 2 X = u*v X = 6 0 —3 2 0 —1 8 0 —4 X = B39。 X = 8 3 4 1 5 9 6 7 2 如x与y均是列向量,则 x*y 无解 ,但下二表达式却可以 : x39。 *y y39。 *x 称 内积 或 点积 . 下面的语句产生 单位矩阵 eye(m,n) 若用 eye(n)则产生 n*n 的方阵 解线性方程 情况一 : x = A\u x = 10 —12 5 又如: X = A\B X = 19 –3 —1 —17 4 13 6 0 —6 情况二; y 是不同时刻 t 时的观测值 : t = [0 .3 .8 ]39。 y = [.82 .72 .63 .60 .55 .50]39。 若函数形式是 :y(t)=。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。