# Is this the correct syntax for replacing a specific element in a dependent vector?

조회 수: 1(최근 30일)
Real Name 2016년 12월 27일
댓글: Real Name 2016년 12월 28일
numElem = 9990;
w = linspace(2*pi,2*pi*10^18,numElem);
wRes = 2*pi*10^9;
for n = 1:numElem
if w(n) > wRes
w = [w(1:n), wRes, w(n:numElem)];
end
end
freq = w ./ (2*pi);
lambda = 299792458 ./ freq;
if w == wRes
B = 2*pi./lambda;
else
B = pi/2 .*w./wRes;
end
I am trying to create a range of w's and make sure that a specific value, wRes is in there. For that specific wRes, I want an exceptional value for B. Is the above code the correct way of going about it?

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

### 채택된 답변

Walter Roberson 2016년 12월 27일
Note that if you are trying to replace values > wRes with wRes, then another way of doing that is:
w = min(w, wRes);
##### 댓글 수: 1표시숨기기 없음
Real Name 2016년 12월 28일
I figured it out, my code was really bad. I had meant to insert wRes into a sorted vector and keep the order.

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

### 추가 답변(1개)

Brendan Hamm 2016년 12월 27일
It looks like you are trying to change any values of w which are greater than wRes to be wRes instead, but you are instead placing an additional element into w at the (n+1)th position and then at the next iteration checking if that value is greater than wRes. I think what you are looking for is logical indexing.
idx = w > wRes;
The ith index of idx is true (1) if w(i) > wRes. Now you can use this to access the elements of w where idx is true and change only those values:
w(idx) = wRes;
Consider this on a simpler example:
x = 1:10;
idx = x > 5; % 6th through 10th elements are true!
x(idx) = -1; % 6th through 10th elements are now -1!
##### 댓글 수: 1표시숨기기 없음
Real Name 2016년 12월 28일
No, it's B that I wanted to change.

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

### Community Treasure Hunt

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

Start Hunting!