sum logical 1's independently for each column

6 次查看(过去 30 天)
I've attached a sample data from excel.
how can I create a "for loop" to sum each column and give me print out total for each column.
I also need to compare the "length" of the column to the sum of the logical 1's in that column then print out a pass or fail for each column tested.
example:
1 1 1 1
1 1 1 1
1 1 1 0
1 1 1 1
-----------sum
first column = 4 ==length(column) = pass
fourth column = 3 == lenght(column = fail

采纳的回答

DGM
DGM 2022-2-12
编辑:DGM 2022-2-13
If the inputs are integer-valued, just use all()
A = randi([0 1],5)
A = 5×5
0 0 1 1 0 1 1 1 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 1
isfull = all(A,1)
isfull = 1×5 logical array
0 0 0 1 0
% if you really need text output for some reason
flmap = {'fail','pass'};
fulllabels = flmap(isfull+1)
fulllabels = 1×5 cell array
{'fail'} {'fail'} {'fail'} {'pass'} {'fail'}

更多回答(2 个)

David Hill
David Hill 2022-2-12
No loop is needed.
r=readmatrix('logicalDataCount.xlsx');
s=sum(r);
l=s==size(r,1);
  10 个评论
David Hill
David Hill 2022-2-13
The below code is completely flexible (does not depend on the size of r)
s=sum(r);
allPassed = (numPasses == size(r, 1));
You are really not understanding, the logical array above tells you every column that is passed (1) or failed (0). Converting the logical array to 'pass' or 'fail' is trivial.
Michael Angeles
Michael Angeles 2022-2-13
Hi David,
Thanks...Maybe I don't understand...The reason why I want each column to print out pass or fail as part of the output message is to inform the operator immediately that the column checked for a certain message passed or failed. This allows the operator to re-run the test.

请先登录,再进行评论。


Michael Angeles
Michael Angeles 2022-2-14
Thank you Everyone!!

类别

Help CenterFile Exchange 中查找有关 Characters and Strings 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by