Вопрос

Привет, ребята. У меня есть этот вопрос, чтобы задать. В программировании 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);

Благодарю вас!

Это было полезно?

Решение

Такие операции обычно могут быть выполнены без петли.

Например, если наклон одинаково для всех записей, вы можете написать

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. Анкет Также обратите внимание на ./ вместо /. Анкет Точка делает его элементной операцией, что означает, что я разделяю первый элемент массива в числителе первым элементом массива в знаменателе и т. Д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top