查看单个帖子
旧 2019-12-14, 20:13   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 关于Matlab数组操作的入门级问题

大家好。我有这个问题要问。在C编程中,如果我们想在一个数组中存储多个值,则可以使用如下循环来实现:

j=0; //initialize for (idx=1,idx less than a constant; idex++) { slope[j]=(y2-y1)/(x2-x1); j++; } 我的问题是在Matlab中,我们有没有更简单的方法来获得相同的数组“ slope”而无需手动增加j?就像是:

for idx=1:constant slope[]=(y2-y1)/(x2-x1); 谢谢!



回答:

这样的操作通常可以不循环而完成。

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

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的第二个元素与第一个元素之间的差来计算斜率的第一个元素。另外,请注意./而不是/ 。点使它成为逐个元素的运算,这意味着我将分子中数组的第一个元素除以分母中数组的第一个元素,依此类推。



更多&回答...
poster 当前离线   回复时引用此帖