Conditional statements on array.
古いコメントを表示
Hello MathWorks community!
Could someone give me a hand?
I'm struggling on a loop involving a conditional statement in order to get a particular array.
This is my Input array (1x24):
Input = [0,0,0,0,0,5,6,7,25,68,0,0,0,0,0,36,221,78,14,16,96,75,0,0]
What I'm trying to check is if there is any value bigger than 100 on a 12 range positions of the array. In case the statement is true, I would like to make the 12 range values equal 1, otherwise equal 0. (Note: the array input dimensions will always be a multiple of 12)
The Output on this particular example should look like this:
Output = [0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1]
The first 12 positions are equal to 0 because there aren't any values bigger than 100. But from 13 to 24 postions are equal to 1, because 221 is bigger than 100.
I hope I've explained my-self well enough.
Thanks for the help!
採用された回答
その他の回答 (2 件)
David Hill
2021 年 1 月 12 日
i=reshape(Input,12,[])'>100;
Output=zeros(size(i));
for k=1:size(i,1)
if nnz(i(k,:))>0
Output(k,:)=1;
end
end
Output=Output';
Output=Output(:)';
Mathieu NOE
2021 年 1 月 12 日
hello Santos
this is one way to do it
split the input vector in 12 long extracts, then search for any value inside that is above your threshold and do some outputs (0 or 1's vectors)
not the fanciest code but it works
Input = [0,0,0,0,0,5,6,7,25,68,0,0,0,0,0,36,221,78,14,16,96,75,0,0];
ll = length(Input);
threshold = 100;
offset = 12;
loops = fix(ll/offset);
Output = [];
for ci = 1:loops
ind = 1+(ci-1)*offset;
input_extract = Input(ind:ind+offset-1);
if any(input_extract >= threshold)
out = ones(1,offset);
else
out = zeros(1,offset);
end
Output = [Output out];
end
カテゴリ
ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!