I have an array that includes a list of temps, and I am trying to count the temps less than 75. This is the code I used -
clc;
clear;
close all;
count=0;
a = [45, 56, 66, 78, 54, 67, 56, 88, 95, 93, 23, 56, 78, 45, 67, 56, 34, 67, 87, 64, 94, 57, 61, 24]; %16 below 75
for i = 1 : length(a)
if i < 75
count = count+1;
end
end
disp(count)
Not sure what is wrong. I am not able to get the desired output. Any help?

 采纳的回答

Guillaume
Guillaume 2019-8-30
编辑:Guillaume 2019-8-30
Not sure what is wrong
You'll always going to get min(74, numel(a)) as a count, since you're comparing the index i instead of the value a(i) to 75.
Note that as usual in matlab, there's no need for a loop for this
count = nnz(A < 75)
%or
count = sum(A < 75)

2 个评论

Thank you. I tried the similar approach for other values. But that doesn't seem to work the same way.
clc;
clear workspace;
close all;
count = 0;
count2 = 0;
count3 = 0;
count4 =0;
a = [45, 56, 66, 78, 54, 67, 56, 88, 95, 93, 23, 56, 78, 45, 67, 56, 34, 67, 87, 64, 94, 57, 61, 24, 96, 98, 100, 109];
count = sum(a<75)
count2 = sum(75<a<95)
count3 = sum(95<a<105)
count4 = sum(a>105)
The variables "count2" and "count3" return output as 28, which is the array size. How do I rectify it?
Well, yes, if you look at any matlab code (or for that matter code in other languages), they never use the syntax low<x<high. That's because it doesn't do what you want.
low < x < high first compares low to x and returns a logical vector of 0 and 1. it then compares this logical vector of 0 and 1 to high. So if high is greater than 1 the final result is just a vector of 1. Just as you get. The proper syntax is low < x & x < high.
So
count2 = sum(75<a & a<95);
%etc.
Note that numbered variables are universally a bad idea. Rather than embedding the index into the variable, use proper indexing:
count(1) = nnz(a < 75);
count(2) = nnz(75 < a & a < 95); %what about if a is 75?
count(3) = nnz(95 < a & a < 105); %or 95?
count(4) = nnz(a > 105); %or 105?
But even better, use histcounts:
count = histcounts(a, [-Inf, 75, 95, 105, Inf])

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Matrix Indexing 的更多信息

产品

版本

R2019a

标签

Community Treasure Hunt

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

Start Hunting!

Translated by