removing specific values in a cell array

3 visualizzazioni (ultimi 30 giorni)
HYZ
HYZ il 19 Mag 2020
Commentato: HYZ il 19 Mag 2020
Hi,
I have a cell array A = {[1:10] [1:10]};
I would like to remove any elements which are less than 3 and greater than 8 in all vectors in the cell array.
The result is A = {[3:8] [3:8]}; Could you please help? Thanks.

Risposta accettata

Stephen23
Stephen23 il 19 Mag 2020
>> A = {1:10,1:10}; % square brackets are not required.
>> F = @(a)a(a>=3&a<=8);
>> B = cellfun(F,A,'uni',0);
>> B{:}
ans =
3 4 5 6 7 8
ans =
3 4 5 6 7 8

Più risposte (1)

Stanislao Pinzón
Stanislao Pinzón il 19 Mag 2020
Maybe something like this
A = {1:10,1:10};
A{1}(A{1}<3|A{1}>8) = [];
A{2}(A{2}<3|A{2}>8) = [];
Naturally, it would be tedious in wide cell arrays. So you can use instead:
A = {1:10,1:10};
for i=1:length(A)
A{i}(A{i}<3|A{i}>8) = [];
end

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by