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 中查找有关 Operators and Elementary Operations 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by