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)含义不是很懂
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- b
1、若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