Как я могу удалить элементы массива на MATLAB? - PullRequest
0 голосов
/ 31 мая 2019

Следующий код выполняется, но я не имею представления удалить элементы массива в MATLAB.

И, следовательно, Array1 и Array2 записываются с прежними данными.

MATLAB версияR2017b

global Array1
global Array2
filename = 'data.xlsx';
for i = 1:3
    sheet = i
    for j = (1:2)-1
        one = [1];
        two = [2];
        Array1 = [Array1; one]
        Array2 = [Array2; two]      
    end
    xlswrite(filename, Array1, sheet, 'A1');
    xlswrite(filename, Array2, sheet, 'B1');
    %here I would like to delete the elements of Array1 and Array2global 
    %Array1 = [];
    %Array2 = [];
end 

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

Вы можете перезаписать Array1 пустым массивом, чтобы удалить все его элементы: Array1 = [].Вы должны сделать это либо в верхней, либо в нижней части внешнего цикла:

filename = 'data.xlsx';
for sheet = 1:3
    Array1 = [];
    Array2 = [];
    for j = 0:1
        one = 1;
        two = 2;
        Array1(end+1) = one;
        Array2(end+1) = two;   
    end
    xlswrite(filename, Array1, sheet, 'A1');
    xlswrite(filename, Array2, sheet, 'B1');
end 

Я также немного изменил ваш код для лучшей практики.Некоторые из них рекомендуются также редактором MATLAB (найдите красные подчеркивания и наведите на них курсор мыши, чтобы получить подсказки).Я рекомендую вам взглянуть на различия с вашим кодом.Примечательно, что старайтесь избегать глобальных переменных!

Но поскольку вы знаете, сколько элементов будет иметь Array1 в этом случае, гораздо лучше (быстрее) предварительно выделить , чем назначатьпустой массив, а затем добавление элементов в конце.Например:

Array1 = zeros(N,1);
for j = 1:N
   Array1(j) = j-1;
end
0 голосов
/ 31 мая 2019

Массив1 (индекс) = []

Просто вставьте индекс (ы) массива, который вы хотите удалить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...