what does it mean by writing [~,idx] in code?

for p= 4:4:population
dists= total_dist(rand_pair(p-3:p));
[~,idx]=min(dists);
best = routes(idx,:);
what idx, ~ means??

댓글 수: 5

the cyclist
the cyclist 2013년 4월 27일
Yogesh, I don't know why you posted this question four times, but I deleted the other three.
merlin toche
merlin toche 2023년 3월 10일
Hello
anyone can help me with my code below? I want to do a classification using fuzzyknn.please, I tried to do what I can but as I'm still a beginner, I need your help to finalize this work. thank you for your advance here attached my code
Steven Lord
Steven Lord 2023년 3월 10일
Since this doesn't sound like it's related to the original question about the [~, idx] syntax you should ask it as a separate question using the Ask link at the top of this page.
merlin toche
merlin toche 2023년 3월 13일
please I posted the question as you asked so well but no answer. I went through this page because for 2 months my concerns have been ignored, can you explain this to me? thank you
merlin toche
merlin toche 2023년 3월 13일
i have this error when i plot my code
attached

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

 채택된 답변

James Tursa
James Tursa 2013년 4월 27일
편집: James Tursa 2013년 4월 27일

15 개 추천

The ~ represents an output that is discarded. It is essentially equivalent to:
[dummy,idx]=min(dists);
clear dummy
For this example, the code wants to work with the index of the minimum value, not the value itself, so the minimum value that is returned is discarded and only the index is retained.

댓글 수: 4

Dyuman Joshi
Dyuman Joshi 2023년 3월 13일
Hello @James Tursa, do you have any source for the equivalence mentioned?
The webpage cited in the link doesn't refer to any such relation.
Adam Danz
Adam Danz 2023년 3월 13일
@Dyuman Joshi, the page James shared in his answer is a good resource but doesn't contain James' analogous explanation.
When an output is suppressed with a tilde, the output is computed from within the function but isn't returned and therefore isn't stored in the caller's workspace. The only detail that differs from James' anaology is that the dummy variable is never returned to begin with, but it is computed within the min function.
Thank you for the response, Adam.
I now know that while a variable that is suppressed is computed, but it is not returned and not stored in the caller's workspace.
I was stuck on an approach on how to show/understand it via code, but it was quite simple -
[~,~,out]=yo(5)
a = 5
b = 25
c = -5
out = -5
function [a,b,c]=yo(x)
a=x
b=x.^2
c=-x
end
Right, and if you suppress the lines within the function,
[~,~,out]=yo(5)
out = -5
function [a,b,c]=yo(x)
a=x;
b=x.^2;
c=-x;
end

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

추가 답변 (1개)

the cyclist
the cyclist 2013년 4월 27일
편집: the cyclist 2013년 4월 27일

9 개 추천

When you see
>> [a,b,c] = function(...)
then a,b, and c are the output of a function. If you do not want one of the outputs of a function, then you can replace it with the ~ symbol:
>> [a,~,c] = function(...)
and then b will not be output.

댓글 수: 1

James Tursa
James Tursa 2013년 4월 27일
To clarify, the syntax doesn't actually prevent the function from producing the output ... it just causes MATLAB to ignore the output and automatically clear it instead of assigning it to a workspace variable. So using the syntax makes your code cleaner looking but the function will still use the same resources (time & memory) to run.

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

카테고리

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

태그

질문:

2013년 4월 27일

댓글:

2023년 3월 14일

Community Treasure Hunt

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

Start Hunting!

Translated by