Создайте индексный массив с концом до того, как вектор существует - PullRequest
6 голосов
/ 10 апреля 2019

Мне просто интересно, есть ли способ индексировать, используя end, прежде чем узнать размер вектора? Это должно работать для массивов с разными размерами. Как это:

subvector = (2:end) % illegal use of end

A=[1 2 3];
B=[4 5 6 7];

A(subvector) % should be 2 3
B(subvector) % should be 5 6 7

Ответы [ 2 ]

3 голосов
/ 10 апреля 2019

Вы можете настроить анонимную функцию так, чтобы она действовала аналогичным образом

f_end = @(v) v(2:end);

A = [1 2 3];
B = [4 5 6 7];

f_end( A ); % = [2 3];
f_end( B ); % = [5 6 7];

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

1 голос
/ 10 апреля 2019

Без индексации или использования end можно удалить первый элемент:

f_end = A;
f_end[1] = [];

Как функция:

function x = f_end(y, n)
    x = y;
    x[1:n]=[]; % deletes the first n elements
...