【问题标题】:How can I delete the elements of array on MATLAB?如何在 MATLAB 上删除数组的元素?
【发布时间】:2019-05-31 03:58:40
【问题描述】:

执行了以下代码,但我不知道在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 

【问题讨论】:

    标签: arrays excel matlab io output


    【解决方案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 将有多少个元素,所以preallocate 比分配一个空数组然后在末尾添加元素要好得多(更快)。例如:

    Array1 = zeros(N,1);
    for j = 1:N
       Array1(j) = j-1;
    end
    

    【讨论】:

      【解决方案2】:

      Array1(index)=[]

      只需插入要删除的数组的索引即可。

      【讨论】:

      • 每次i增加时,我想重置Array1和Array2。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 2021-04-21
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多