diff不是用来求导的吗,为什么我会得到这个

img

你好!matlab函数的diff有两种功能
功能1
当输入的变量是矩阵或者向量时,diff作差分使用,就是后面的变量减去前面的变量得到的数

a = [1,2,3,5,9];
b = diff(a)

结果是

b =

     1     1     2     4

功能2
用来求符号函数的导数,注意是符号函数,不是字符串!!
例子

syms y x
y = x^2;
diff(y)

得到y对x的导数如下

ans =
 
2*x

题主的问题分析
题主输入的是一段字符串,不是一个符号表达式,按照字符串的定义,字符串本身就是由它的ascii值构成的,所以一串字符串就是一个包含字符对应的ascii值得到得整数数组,所以题主用diff时,其实是使用了diff的第一种用法。
若要使用第二组用法,用str2sym函数就行

>> s1=str2sym('6*x^3-4*x^2+b*x-5');
>> diff(s1)
 
ans =
 
18*x^2 - 8*x + b