Я хотел бы удалить все столбцы, в которых третья строка содержит нулевые значения в моем наборе данных.

Например:

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

Но это явно не работает ...

2
Karol B 29 Июл 2020 в 19:23
Вы должны предоставить MCVE после попытки решить эту проблему самостоятельно. SO не заменяет фундаментальные исследования.
 – 
Mad Physicist
29 Июл 2020 в 19:51
Здравствуй, Мэд, извини. Я обновил свой вопрос фрагментом кода, который пробовал.
 – 
Karol B
29 Июл 2020 в 20:05
1
Сделайте небольшой пример со случайными числами, чтобы его можно было воспроизвести. Загляните в randi или около того. Покажите свой вклад и ожидаемый результат. Объясните, что делает ваш код, по сравнению с ожидаемым результатом. Прочтите stackoverflow.com/help/how-to-ask для получения дополнительных разъяснений.
 – 
Mad Physicist
29 Июл 2020 в 20:18
Я только что это сделал. Спасибо большое муйч!
 – 
Karol B
29 Июл 2020 в 20:50

1 ответ

Лучший ответ

Я бы применил функцию 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
2
MichaelTr7 29 Июл 2020 в 20:36