Concept of the null operator question
3 次查看(过去 30 天)
显示 更早的评论
This is more of a conceputal question that I need help with.
If I have say sampleMatrix=[1,2,3,4,5] and then I type the code sampleMatrix(3)=[], does that make the matrix now look like [1,2,4,5]?
I ask because I want to know if you do the previously mentioned null operator code, does that now make the third element 4, or is 4 still the fourth element?
Thank you and I apologize if it is confusing.
2 个评论
the cyclist
2021-3-4
编辑:the cyclist
2021-3-4
That syntax fully removes the element from the vector. What used to be a length-5 vector is now a length-4 vector. The number 4 is now the 3rd element of that vector,
sampleMatrix = [1 2 3 4 5];
sampleMatrix(3)=[];
idx = find(sampleMatrix==4)
采纳的回答
John D'Errico
2021-3-8
编辑:John D'Errico
2021-3-8
MATLAB does not allow arrays with empty elements. Double precision arrays are always nice rectangular things. So, for example, the array
[1 2 3 [] 5 6]
is just a vector with 5 elements. The 4th element there is the number 5.
Similarly, you cannot insert an "empty" cell into a vector.
Therefore, the syntax in MATLAB to delete an element of a vector is to set it equal to [], empty brackets.
V = 1:5;
V(4) = []
Again, the result is a vector of length 4. Everything to the right of that element gets shuffled over.
You can use [] to delete multiple elements at once, thus
V = 1:10;
V(2:2:end) = []
And, for example, the third element of the new vector V is just 5.
V(3)
All of that said, you need to be careful when working with cell arrays, because cell arrays CAN contain empty cells. But for regular flat arrays, [] is just the tool to delete elements.
0 个评论
更多回答(1 个)
另请参阅
类别
在 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!