j=0; //initialize
for (idx=1,idx less than a constant; idex++)
{
slope[j]=(y2-y1)/(x2-x1);
j++;
}
我的问题是在Matlab中我们有没有更简单的方法来获得相同的数组'斜率'而无需手动增加j?类似的东西:
for idx=1:constant
slope[]=(y2-y1)/(x2-x1);
谢谢!
答案 0 :(得分:2)
通常可以在不循环的情况下完成此类操作。
例如,如果所有条目的斜率相同,则可以写
slope = ones(numRows,numCols) * (y2-y1)/(x2-x1);
其中numRows
和numCols
是数组slope
的大小。
如果你有一个y值和x值的列表,并且你想要每个点的斜率,你可以调用
slope = (y(2:end)-y(1:end-1))./(x(2:end)-x(1:end-1)
一气呵成。请注意,y(2:end)
是从第二个到最后一个的所有元素,y(1:end-1)
是从第一个到第二个到最后一个的所有元素。因此,斜率的第一个元素是根据y
的第二个元素和第一个元素之间的差异来计算的。另请注意./
而不是/
。点使其成为元素操作,这意味着我将分子中数组的第一个元素除以分母中数组的第一个元素等。