I have two index arrays i1 and i2 and a data array data.
I want to set the areas of data in the following way:
data([i1(1):i2(1), i1(2):i2(2)]) = ... % and so on
Is there a way to do that fast without loops? It can be achieved via
for i=1:length(d1)
data(d1(i):d2(i)) = 1.0;
end

댓글 수: 3

Kevin Phung
Kevin Phung 2019년 3월 29일
can you be more clear in what you are trying to do? maybe give an example
James Tursa
James Tursa 2019년 3월 29일
How many dimensions does "data" have? Could that vary?
Christian Hufnagel
Christian Hufnagel 2019년 3월 29일
I edited with an example. I want to build slices from d1 and d2
"data" is one-dimensional

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

 채택된 답변

James Tursa
James Tursa 2019년 3월 29일

0 개 추천

I'm still not exactly sure what you are trying to do, but If data is 1D and you want to set all values between the indexes to some common value as your example seems to indicate, then you could simply build an index vector to use. E.g.,
x = cell2mat(arrayfun( @(i1,i2)i1:i2, i1, i2, 'uni', false ));
data(x) = 1.0;

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Matrix Indexing에 대해 자세히 알아보기

제품

릴리스

R2018b

질문:

2019년 3월 29일

답변:

2019년 3월 29일

Community Treasure Hunt

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

Start Hunting!

Translated by