Puoi "lavorare direttamente su tutta la matrice in questo modo:
[*] identifica gli indici dei valori inferiori alla soglia
[*] usa la funzione "any" per identificare le colonne nelle quali c'è almeno un valore inferiore alla soglia
[*] setta i valori delle colonne identificate al punto precedente a 0
% Define the threshold
BARR=3;
% Create ax example matrix
S=randi([0 100],10,5)
% Find the indices of the values less than the threshold in the matrix
idx=S<BARR
% Find the columns in which there is at least a value less than the threshold
to_del=any(idx,1)
% Make a copy of the original matrix
S1=S
% Set the values of the columns containing at least a value less than the threshold to 0
S1(:,to_del)=0
O, se preferisci, in una sola riga:
S1=S;
S1(:,any(S<BARR,1))=0
Ad esempio, partendo dalla matrice:
S=[ 7 100 51 76 11
79 70 9 28 32
0 10 29 96 77
40 38 1 45 13
78 72 83 79 31
33 57 54 99 59
26 7 56 60 51
6 99 58 45 64
94 7 11 0 73
29 61 78 46 78
]
Settando la soglia:
BARR=3
si ottiene:
S1=[ 0 100 0 0 11
0 70 0 0 32
0 10 0 0 77
0 38 0 0 13
0 72 0 0 31
0 57 0 0 59
0 7 0 0 51
0 99 0 0 64
0 7 0 0 73
0 61 0 0 78
]