如何在MATLAB上删除数组的元素?

时间:2019-05-31 03:58:41

标签: arrays excel matlab io output

执行以下代码,但我不知道要在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 :(得分: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