Replace cell array based on condition

5 次查看(过去 30 天)
i have a problem in replacing cell array based on condition
if i have
A = {[1,1,2; 2,2,3];[1,3,4; 9,6,8];[1,2,5; 2,3,4];[1,1,4; 3,4,5]};
B = [2,2,2; 3,3,3];
then, the condition that apply is when A has a value more than 5 it should be replace with B
so, the result have to be like this
result = {[1,1,2; 2,2,3];[2,2,2; 3,3,3];[1,2,5; 2,3,4];[1,1,4; 3,4,5]};
is it possible to do that ?
Thanks in advance

采纳的回答

Ioannis Andreou
Ioannis Andreou 2020-2-2
Use cellfun:
tfReplace = cellfun(@(c) any(any(c>5)), A, 'UniformOutput', true);
A{tfReplace} = B;
  2 个评论
Song JL
Song JL 2020-2-3
Hi, what if i have more than one array that need to be replaced??
for example:
A = {[1,1,2; 2,2,3];[1,3,4; 9,6,8];[1,7,8; 2,3,4];[1,1,4; 8,6,5]};
and then the result should be
result = {[1,1,2; 2,2,3];[2,2,2; 3,3,3];[2,2,2; 3,3,3];[2,2,2; 3,3,3]};
i have tried to solve it using for , but i still get an error
here is my code
for r = 1:length(tfReplace)
A{tfReplace(r)} = B;
end
seems that it isn't appropriate way..

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by