I have a cell such as
C={};
C{1,1}='A';
C{1,2}='B';
C{1,3}='C';
C{2,1}=[1 0 1;0 0 1;2 1 -1];
C{2,2}=[1 2 -1;-1 0 1;0 1 -1];
C{2,3}=[1 0 -1;-1 0 1;-1 1 -1];
C{3,1}=5/9;
C{3,2}=2/9;
C{3,3}=-1/9;
C =
3×3 cell array
{'A' } {'B' } {'C' }
{3×3 double} {3×3 double} {3×3 double}
{[ 0.5556]} {[ 0.2222]} {[ -0.1111]}
I want to remove a column which have the value -1<=x>=1 in all of the elements in the matrix at the second row. Such that
C =
3×2 cell array
{'A' } {'B' }
{3×3 double} {3×3 double}
{[ 0.5556]} {[ 0.2222]}

4 个评论

jonas
jonas 2018-8-13
编辑:jonas 2018-8-13
Unclear to me. Do the 3x3 arrays change? Can you highlight the values between -1 and 1 you are referring to?
C{2,2} also has -1<=x>=1.....isn't it?
What I mean is that all elements of 3x3 arrays (all 9 elements is -1<=x<=1). As for C{2,2}, it has 2 in one of the elements.
jonas
jonas 2018-8-13
编辑:jonas 2018-8-13
So what you mean is that you want to keep columns where at least one element (out of 9) lies outside of the specified bounds?

请先登录,再进行评论。

 采纳的回答

jonas
jonas 2018-8-13
编辑:jonas 2018-8-13
Try this
B=cellfun(@(x) sum(sum(abs(x)>1)),C(2,:),'uniformoutput',false)
B=cell2mat(B);
C(:,B<1)=[]
C =
3×2 cell array
{'A' } {'B' }
{3×3 double} {3×3 double}
{[ 0.5556]} {[ 0.2222]}

2 个评论

Thanks, this one works for me
No problem! It only works for symmetric bounds. Just so you know.

请先登录,再进行评论。

更多回答(0 个)

类别

在 帮助中心 和 File Exchange 中查找有关 Structures 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by