# Optimization of manipulating an array

조회 수: 1 (최근 30일)
Mahmood AL Imam . 2022년 2월 28일
댓글: Mahmood AL Imam . 2022년 3월 1일
I have an array, where 0s are between non-zeros integer or floating numbers.
>> a = [1, 0, 5, 0, 6, 0, 12, 0];
I am looking to find the average of every adjacent two numbers and insert it to replace the zero between them:
like for the example above:
>> b = [1, 3, 5, 5.5, 6, 9, 12, 15]
For the last 0, we should add the difference between 12 and 9 to the last value, which is 12. So that makes (12 - 9) + 12.
I am looking for an optimized code (may be if possible without loop).
Thanks

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

### 채택된 답변

Ive J 2022년 2월 28일
a = [1, 0, 5, 0, 6, 0, 12, 0];
b = a;
zero_idx = a == 0;
b(zero_idx(1:end - 1)) = a_adj_mean(2: end);
b(end) = 2*b(end-1) - b(end - 2)
b = 1×8
1.0000 3.0000 5.0000 5.5000 6.0000 9.0000 12.0000 15.0000
##### 댓글 수: 1표시 없음숨기기 없음
Mahmood AL Imam 2022년 3월 1일
Thank you very much Ive J

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

### 카테고리

Help CenterFile Exchange에서 Get Started with Optimization Toolbox에 대해 자세히 알아보기

R2013a

### Community Treasure Hunt

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

Start Hunting!