0

大家好。我有这个问题要问。在 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);

谢谢!

4

1 回答 1

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。另外,请注意./代替/. 点使其成为逐元素运算,这意味着我将分子中数组的第一个元素除以分母中数组的第一个元素,等等。

于 2011-01-15T04:33:32.857 回答