两个matlab细节问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 20:43:02
1:
simplify(diff(f,'x',2))

x为什么要打上引号?一般diff后面的x是不打引号的,是不是因为simplify的缘故?

2:
x=linspace(0,5,20);
l=20*sqrt(9+x.^2)+15*(5-x);
tt=diff(l);
plot(x(2:length(x)),tt)
中,如果没有(2:length(x)),就会出错,请问这个东西是干什么用的。

为什么
x=linspace(0,5,20);
l=20*sqrt(9+x.^2)+15*(5-x);
plot(x,l)

就不会出现类似错误?

谢谢达人指教!!!
第一个问题的回答
你们说x是符号,但是对于
syms x;f='5*x^4+1';diff(f,x,2)

x为什么就不用带引号,看不出这两个有什么区别。都是符号啊?

1,因为这个时候x是符号变量,如果是一般变量也不需要
2,x(2:length(x)) 取x的第二个元素到最后一个元素,x如果有n个元素哪么x(2:length(x))就是n-1个元素,diff(l)以后元素少了一个,如果任然用X,这样两个就不对应了

1:标准用法是需要加引号的,你help一下diff就知道了。
diff(f,'t') 传回f对独立变数t的一次微分值;

2:plot(x(2:length(x)),tt)

tt的个数是比length(x)少1,所以x只能取2:length(x),这样与tt的长度才相同。

如果x是个符号变量,不打也无妨

这时截取x,使它和tt长度一致,因为diff的结果会比原来的向量长度少1,不用diff当然就不用这样了

1、x是个符号吧,不是数。
2、diff比原数组要少一个元素,x(2:length(x))是指x中除了第一个元素,剩余的数组,这样,才和tt维数一直。