EDA365电子论坛网

标题: 请教一个程序 [打印本页]

作者: embnn    时间: 2020-1-9 10:13
标题: 请教一个程序
h = 0.001;       % step sizeX = -pi:h:pi;    % domainf = sin(X);      % rangeY = diff(f)/h;   % first derivativeZ = diff(Y)/h;   % second derivativeplot(X(:,1:length(Y)),Y,'r',X,f,'b', X(:,1:length(Z)),Z,'k')请问plot中的(:,1:length(Y))是什么含义?对于:和length(Y)含义不是很懂% U0 H7 o* K. J% v" S) d  S# P5 }

9 g7 ^$ O# O" [+ K! W
6 R2 ^' R6 t/ t; h2 s
作者: STM    时间: 2020-1-9 18:05
是X(:,1:length(Y)),在本例中,X是一个行向量,:表明取X向量的第一行,length(Y)计算Y向量的长度,1:length(Y)表明X向量从第一个值开始取长度为length(Y)的向量。在这里,使用一次diff函数会导致计算结果向量比X向量少一个数,使用X(:,1:length(Y))是为了确保绘图的时候横纵坐标的数据长度一致。
作者: tlott    时间: 2020-1-9 21:40
先说明length(y):+ n& _, z8 S0 J- g5 Q; B% E
1、若y为行向量/列向量,则返回该向量的长度3 U$ y. a: g5 A+ ^/ i+ K
2、若y为m*n的矩阵,则返回n与m二者中的最大值
9 o3 [  s8 W" \6 e* q# B/ i0 p3 W原程序对应情况一- n$ _) H) R3 I- L

8 ^! D# p# x4 O2 w2 U! b. p接着‘:’符号:: x+ t0 b# I1 X. q3 S
例:代码:1:6
9 k: C/ G* I+ y3 `9 I       实际:[1 2 3 4 5 6]    %默认间隔为1的1至6的向量1 h8 ?' j! L4 [# W9 H
       代码:1:0.5:4
7 Q0 Z7 h" f/ c7 c; l8 l7 ~. G        实际:[1 1.5 2 2.5 3 3.5  4 ]    %间隔为0.5的1至4的向量
7 H  E. q" M- H) x8 a- Z/ E! a; z1 _; Q& J. K7 C, S
matlab中diff函数使用相邻两位的数据求解近似导数,所以若x有n个数值,y就只能有n-1个# l6 F6 N/ P' q. B2 Y% S
而plot(a,b)这个函数必须保证输入向量a与b长度相等
: X3 L5 b# E# [/ \4 R" u为保证输出,需要用y的长度来限制x取用的长度7 F& O& @/ ]" a5 z+ t
x(1:length(y))是取x中第1到n-1个元素作为向量




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2