开发者

Entry level question about Matlab array operation

Hey guys. I have this question to ask. In C programming, if we want to store several values in an a开发者_如何学Crray, we implement that using loops like this:

j=0; //initialize  
for (idx=1,idx less than a constant; idex++)  
{  
    slope[j]=(y2-y1)/(x2-x1);  
    j++;  
}  

My question is in Matlab do we have any simpler way to get the same array 'slope' without manually increasing j? Something like:

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

Thank you!


Such operations can usually be done without looping.

For example, if the slope is the same for all entries, you can write

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

where numRows and numCols are the size of the array slope.

If you have a list of y-values and x-values, and you want the slope at every point, you can call

slope = (y(2:end)-y(1:end-1))./(x(2:end)-x(1:end-1)

and get everything in one go. Note that y(2:end) are all elements from the second to the last, and y(1:end-1) are all elements from the first to the second to last. Thus, the first element of the slope is calculated from the difference between the second and the first element of y. Also, note the ./ instead of /. The dot makes it an element-wise operation, meaning that I divide the first element of the array in the numerator by the first element of the array in the denominator, etc.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜