执行以下代码,但我不知道要在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
答案 0 :(得分:0)
Array1(index)= []
只需插入要删除的数组的索引即可。
答案 1 :(得分:0)
您可以用空数组覆盖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
在这种情况下将有多少个元素,所以比preallocate更好(更快),而不是分配一个空数组然后在最后添加元素。例如:
Array1 = zeros(N,1);
for j = 1:N
Array1(j) = j-1;
end