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