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)含义不是很懂
7 I# ]- E( d& G$ s- [5 q3 U# l6 s+ S( G( _- o# w+ }2 g% U
% ^% ?& U& g8 q% i/ k( U3 X

作者: 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):
3 L' B  w/ _0 ?# P- b1、若y为行向量/列向量,则返回该向量的长度) q$ u) @. E0 y% M: S- @$ ^
2、若y为m*n的矩阵,则返回n与m二者中的最大值/ p0 }/ L! x: g, b3 y/ c* V! t
原程序对应情况一
3 X. e- S' s5 M2 d( a
, S5 g# w$ x" D8 p3 C; o# X1 a接着‘:’符号:7 e$ d/ Y7 ]0 m2 i6 V
例:代码:1:6  K, u& R1 {: l) [! Z
       实际:[1 2 3 4 5 6]    %默认间隔为1的1至6的向量
( `6 }# {: w0 _6 L- K       代码:1:0.5:4, U2 R# g/ h% f1 X, U3 G
        实际:[1 1.5 2 2.5 3 3.5  4 ]    %间隔为0.5的1至4的向量
' Y- H/ m' |: A" b+ O5 ?9 Q
) x8 N, M! l' I3 {matlab中diff函数使用相邻两位的数据求解近似导数,所以若x有n个数值,y就只能有n-1个3 `/ b! s; [7 R) S4 u0 f
而plot(a,b)这个函数必须保证输入向量a与b长度相等6 [9 R$ N/ y7 l  L
为保证输出,需要用y的长度来限制x取用的长度6 R9 p  e' P/ ~
x(1:length(y))是取x中第1到n-1个元素作为向量




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