How to implement a set in MATLAB?

조회 수: 92 (최근 30일)
Jonathan Mayers
Jonathan Mayers 2016년 6월 23일
답변: Jonathan Mayers 2016년 6월 24일
In the algorithm below, you can see that there is a variable, C, initialized to the empty set. How would I go about creating a set in MATLAB? Because of this confusion I am unclear on how to code lines 5 and 7 of the algorithm. Furthermore, I am unclear of how to implement the condition on line 13. What is the best way to implement this logic?

채택된 답변

Jonathan Mayers
Jonathan Mayers 2016년 6월 24일
Thank you for the responses. I have arrived at what I needed and hope it will help anyone in the future viewing this post.
First, each Ci is a different set so C can be a (mx*my+1)-by-N matrix of zeros where each row would a different set Ci.
C = zeros(mx*my+1,N);
Next, the logic of lines 5 and 7 can be coded as below where col_t and col_f are the indices of the column to change when the condition is true or false respectively. They are initialized to 1 before the for loop.
%%line 5
row = (i-1)*mx+j;
C(row,col_t) = n;
col_t = col_t + 1;
%%line 7
row = mx*my+1;
C(row,col_f) = n;
col_f = col_f + 1;
Finally, after line 11 and before the for loop of line 12, you can extract the subset with the following code:
Ci = C(i,:);
And the condition on line 13 would be as Titus answered:
if ismember(n,Ci)

추가 답변 (2개)

Walter Roberson
Walter Roberson 2016년 6월 23일
If you want an actual set, in the sense of an unordered collection in which there can be at most one "copy" of any given value, then you can use a vector together with the union and setdiff operators.

Titus Edelhofer
Titus Edelhofer 2016년 6월 23일
Hi,
if I see it correctly, your "set" is meant to be a set of numbers? In this case you might simply use a vector in MATLAB. And the empty set in this case would be
C = [];
To test if an element of a "set", use the function ismember, so line 13 would read
if ismember(n, C)
Titus Titus
  댓글 수: 1
Jonathan Mayers
Jonathan Mayers 2016년 6월 23일
Thank you. So for example, I can code the assignment in line 5 as below?
index = (i-1)*mx+j;
C(index) = n;

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

카테고리

Help CenterFile Exchange에서 Time Series에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by