Следующий код выполняется, но я понятия не имею, как удалить элементы массива в MATLAB.
И поэтому Массив1 и Массив2 выписываются с прежними данными.
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
Массив1 (индекс) = []
Просто вставьте индекс (ы) массива, который вы хотите удалить.
Вы можете перезаписать 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
Каждый раз, когда я увеличивается, я хотел бы сбросить Array1 и Array2.