v(n:1)=1 where n>1
显示 更早的评论
Hello! I have some old code from a colleague who is unavailable to answer Qs. There is a case where:
v(n:1)=1 where n>1
The fact that n>1 is the part that is confusing me. I understand that the : acts as an indices range assigning the value 1 to all values in vector v.
What am I missing? Why would 1 be at the end? Does this reverse the order of the array or continue back to the first element after reaching the end?
Thanks!
1 个评论
Image Analyst
2014-8-15
Please copy and paste the exact line of code. I don't understand the "where n>1" part. How are you determining that from the code? Or was it in a comment? Or do you have a for loop like "for k = 1 : n" and then the "v" line of code inside the for loop? Don't make us guess.
回答(1 个)
Matlab doesn't reverse the order. Try this code:
A=1:10;
n=3;
A(n:1)=1
or run this:
3:1
answer is:
ans =
Empty matrix: 1-by-0
9 个评论
AnnaB
2014-8-15
AnnaB
2014-8-15
AnnaB
2014-8-15
Amir
2014-8-15
AnnaB, when does it give 1 from n to end? v(n:m)? or v(n:end)?
Amir
2014-8-15
Are you sure that the value of n has not been changed before this was run?
AnnaB
2014-8-15
编辑:Image Analyst
2014-8-15
Andy L
2014-8-15
just swap n:1 with 1:n if that is the range that you want to make == 1, i.e
v(n:1) == 1; % becomes...
v(1:n) == 1;
Julia
2014-8-15
From the Matlab help:
j:k is the same as [j,j+1,j+2,...,j+m], where m = fix(k-j). In the case where both j and k are integers, this is simply [j,j+1,...,k]. This syntax returns an empty matrix when j > k
So I think your guess that nothing happens is right.
Amir
2014-8-15
I will ask this from my friends. If you find the reason please share it here.
类别
在 帮助中心 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!