EDA365电子论坛网
标题:
请教一个程序
[打印本页]
作者:
embnn
时间:
2020-1-9 10:13
标题:
请教一个程序
h = 0.001;
% step size
X = -pi:h:pi;
% domain
f = sin(X);
% range
Y = diff(f)/h;
% first derivative
Z = diff(Y)/h;
% second derivative
plot(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