Arrays 如何基于该值创建索引列表并从中创建新数组?MATLAB

Arrays 如何基于该值创建索引列表并从中创建新数组?MATLAB,arrays,matlab,indexing,Arrays,Matlab,Indexing,我想消除数据集中第三行包含零值的所有列 例如: original_data = [1 2 3 4 5; 1 2 3 4 5; 0 0 0 1 2] 对于前三列(第三行为零),我想创建一个新数组,其中删除第三行为零的列以获得结果: new_data = [ 4 5; 4 5; 1 2] 我还想要原始数组中非零值的列索引数组 例如: original_indices = [4, 5] 我试过: dados_teste = dados_out_15; dados_p6 = []; [m,n

我想消除数据集中第三行包含零值的所有列

例如:

original_data = [1 2 3 4 5; 1 2 3 4 5; 0 0 0 1 2] 
对于前三列(第三行为零),我想创建一个新数组,其中删除第三行为零的列以获得结果:

new_data = [ 4 5;  4 5; 1 2] 
我还想要原始数组中非零值的列索引数组

例如:

original_indices = [4, 5]
我试过:

dados_teste = dados_out_15;
dados_p6 = [];
[m,n] = size(dados_teste)
for i = 1:n
    
    if dados_teste(3:i) == 0;
        dados_p6 = dados_teste(:,i)
    else
        dados_p6 = dados_teste(:,n)
    end
end

但它显然不起作用…

我将应用find()函数查找所有非零索引,然后应用矩阵索引生成一个新数组,该数组只包含第三行中与非零索引对应的列

Sample_Array = [20 30 40 50; 30 20 70 90; 0 2 1 2];

%Grabbing the third row of the matrix%
Third_Row = Sample_Array(3,:);

%Finding all the non-zero indices%
[Non_Zero_Indices] = find(Third_Row);

%Using matrix indices to generate a new array based on the non-zero
%indicies%
New_Matrix = Sample_Array(:,Non_Zero_Indices);

%Printing matrices% 
Sample_Array

New_Matrix

Non_Zero_Indices

您应该在自己尝试解决此问题后提供MCVE。所以这不是做基础研究的替代品。你好,疯了,对不起。我用我试过的一段代码更新了我的问题。用随机数做一个小例子,这样就可以重现。看看randi左右。显示您的输入和预期输出。通过与预期输出的比较来解释代码的功能。请阅读进一步的澄清。我刚刚做了。非常感谢你!