关于Matlab数组操作的入门级问题

时间:2011-01-15 04:28:20

标签: arrays matlab matrix operators operation

嘿伙计们。我有这个问题要问。在C编程中,如果我们想在数组中存储多个值,我们使用这样的循环来实现:

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);

谢谢!

1 个答案:

答案 0 :(得分:2)

通常可以在不循环的情况下完成此类操作。

例如,如果所有条目的斜率相同,则可以写

slope = ones(numRows,numCols) * (y2-y1)/(x2-x1);

其中numRowsnumCols是数组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的第二个元素和第一个元素之间的差异来计算的。另请注意./而不是/。点使其成为元素操作,这意味着我将分子中数组的第一个元素除以分母中数组的第一个元素等。

相关问题