for loop to scan matrix and output a new matrix
2 次查看(过去 30 天)
显示 更早的评论
I would like to take an e.g. 8x1 matrix such as the one below:
0
1
0
1
1
1
0
1
and I would like to scan through it and generate a new matrix of the same dimensions, following the rules below.
- Make the first value of the new matrix the same as the first value of the original matrix.
- Then from here on:
- If the value is 0, add a 0 to the new matrix.
- If the value is 1 AND the value above it is 1, assign a 0 to the new matrix.
- However, if the value is 1 but the value above it is 0, then assign a 1 to the new matrix.
So, the resulting matrix should be:
0
1
0
1
0
0
0
1
Any help, with clear notation of what each part of the for loop is doing, would be much appreciated! Many thanks.
2 个评论
回答(1 个)
Walter Roberson
2022-8-19
matrix = [0; 1; 0; 0; 1; 1; 1; 1; 0; 0; 1; 1; 0];
matrix_new = [matrix(1); matrix(2:end) & ~matrix(1:end-1)]
5 个评论
Walter Roberson
2022-8-19
inf and -inf are not a problem, but nan is a problem.
~[-inf inf]
~nan
另请参阅
类别
在 Help Center 和 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!