Как создать цикл для вычитания в MATLAB для массивов? - PullRequest
0 голосов
/ 12 октября 2019

Я новичок в MATLAB и хочу узнать больше о цикле. Во-первых, у меня есть массив с именем «A»:

A = 4 
    6
    7
    11
    12 
    17
    22
    25 

Далее я хочу создать массив, который будет вычитать каждую строку. Таким образом, он по существу будет делать «6-4», «7-6», «11-7», «12-11», «17-12», «22-17», «25-22». Я хочу, чтобы это отображалось как:

2
1
3
1
5
5
3

Однако то, что у меня есть, ничего не выводит.

Я попытался использовать цикл while, но я не получаю никаких выходных данных, также нет сообщений об ошибках. То, что у меня есть, показано ниже: PS - я раньше использовал Python, поэтому, возможно, я смешиваю синтаксис Python с MATLAB или, возможно, моя логика неверна?

B = length(A); %will output the length of A, which is 8

while i <= B
    X = A(i, 1); %set X equal to "row i" and column 1
    Y = A(i+1, 1); %this i don't know what to do.. I want this to be the row 
                  %directly below i so if i is row 1, then I want this to be 
                  %row 2
    bsxfun(@minus, X, Y)
end

Мне кажется, это должно быть просто, ноЯ не уверен, что я делаю неправильно. Я ценю все отзывы! Если мой вопрос нуждается в уточнении, пожалуйста, дайте мне знать! :)

1 Ответ

0 голосов
/ 14 октября 2019

MATLAB имеет встроенную функцию diff, которая делает то, что вы хотите:

>> A = [4; 6; 7; 11; 12; 17; 22; 25];
>> diff(A)

ans =

     2
     1
     4
     1
     5
     5
     3

Вы также можете получить тот же результат, используя нарезку массива:

>> A(2:end) - A(1:end-1)
...