Remove column in cell data

6 次查看(过去 30 天)
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 个评论
Mohamad Agung Prawira Negara
编辑:Mohamad Agung Prawira Negara 2018-8-13
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 个评论
jonas
jonas 2018-8-13
No problem! It only works for symmetric bounds. Just so you know.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile 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