Find specific range in a table

조회 수: 10 (최근 30일)
Pouyan Sadeghian
Pouyan Sadeghian 2021년 6월 2일
댓글: Star Strider 2021년 6월 3일
Hi,
I want to find a specific range in my table.
For example I have a table like this called table:
Var1 Label MaxPosition MinValue
____ _________________ ___________ ________
678 {'Image0029.bmp'} 38 0
679 {'Image0029.bmp'} 51 0
680 {'Image0030.bmp'} 40 0
681 {'Image0030.bmp'} 47 0
682 {'Image0030.bmp'} 51 0
683 {'Image0030.bmp'} 54 0
684 {'Image0031.bmp'} 42 0
685 {'Image0031.bmp'} 53 0
686 {'Image0031.bmp'} 57 0
687 {'Image0032.bmp'} 44 0
688 {'Image0032.bmp'} 55 0
689 {'Image0032.bmp'} 59 0
690 {'Image0033.bmp'} 45 0
I want to display just the values greater than 40 and less than 50 of the column MaxPosition. I tried the code but it doesnt work and I dont know why. I searched in the forums and help and dont find a solution for my problem.
This is the code I use:
NewTable = varfun(@(x)(x>40) & (x<50),table,'GroupingVariables','MaxPosition')
If it is uesfull the error:
Error using tabular/varfun>dfltErrHandler (line 434)
Applying the function '@(x)(x>40)&(x<50)' to the 1st group in the variable 'Label' generated the following error:
Undefined function 'gt' for input arguments of type 'cell'.
Error in tabular/varfun>@(s,varargin)dfltErrHandler(grouped,funName,s,varargin{:}) (line 183)
errHandler = @(s,varargin) dfltErrHandler(grouped,funName,s,varargin{:});
Error in tabular/varfun (line 230)
outVals{igrp} = errHandler(s,inArg);
Error in calculation (line 27)
MaxV = varfun(@(x)(x>40) & (x<50),sortedTablelup,'GroupingVariables','MaxPosition')
I would be happy if someone could help me.
Best
Pouyan

채택된 답변

Star Strider
Star Strider 2021년 6월 2일
Try this —
T1 = cell2table({678. {'Image0029.bmp'}, 38 0
679 {'Image0029.bmp'} 51 0
680 {'Image0030.bmp'} 40 0
681 {'Image0030.bmp'} 47 0
682 {'Image0030.bmp'} 51 0
683 {'Image0030.bmp'} 54 0
684 {'Image0031.bmp'} 42 0
685 {'Image0031.bmp'} 53 0
686 {'Image0031.bmp'} 57 0
687 {'Image0032.bmp'} 44 0
688 {'Image0032.bmp'} 55 0
689 {'Image0032.bmp'} 59 0
690 {'Image0033.bmp'} 45 0}, 'VariableNames',{'Var1','Label','MaxPosition','MinValue'})
T1 = 13×4 table
Var1 Label MaxPosition MinValue ____ _________________ ___________ ________ 678 {'Image0029.bmp'} 38 0 679 {'Image0029.bmp'} 51 0 680 {'Image0030.bmp'} 40 0 681 {'Image0030.bmp'} 47 0 682 {'Image0030.bmp'} 51 0 683 {'Image0030.bmp'} 54 0 684 {'Image0031.bmp'} 42 0 685 {'Image0031.bmp'} 53 0 686 {'Image0031.bmp'} 57 0 687 {'Image0032.bmp'} 44 0 688 {'Image0032.bmp'} 55 0 689 {'Image0032.bmp'} 59 0 690 {'Image0033.bmp'} 45 0
T2 = T1((T1.MaxPosition>40) & (T1.MaxPosition<50),:)
T2 = 4×4 table
Var1 Label MaxPosition MinValue ____ _________________ ___________ ________ 681 {'Image0030.bmp'} 47 0 684 {'Image0031.bmp'} 42 0 687 {'Image0032.bmp'} 44 0 690 {'Image0033.bmp'} 45 0
.
  댓글 수: 2
Pouyan Sadeghian
Pouyan Sadeghian 2021년 6월 3일
Hi Star,
thanks. It works!
Best
Star Strider
Star Strider 2021년 6월 3일
As always, my pleasure!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Electromechanical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by