You are now following this question
- You will see updates in your followed content feed.
- You may receive emails, depending on your communication preferences.
solution for algorithm to link status?
1 view (last 30 days)
Show older comments
nodes = 3; m = 0.7
for i = 1:nodes
for j = i+1:nodes
test = unifrnd(0,1)
if ni = 1
nj = 1:nodes
if (test<=m/ni=1/nj=1)
li,j = 1
else
li,j = 0
end
lj,i = li,j
end
L = li,j;lj,i
end
please to generate this
Accepted Answer
Walter Roberson
on 17 Mar 2021
Edited: Walter Roberson
on 17 Mar 2021
nodes = 3; m = 0.7;
for i = 1:nodes
for j = i+1:nodes
test = unifrnd(0,1);
if ni == 1
nj = 1:nodes;
if (test<=m/ni==1./nj==1)
l(i,j) = 1;
else
l(i,j) = 0;
end
l(j,i) = l(i,j);
end
L = [l(i,j);l(j,i)];
end
end
However, we can prove that the if (test<=m/ni==1./nj==1) will be false except when nodes = 1 (in which case the code is just rather strange but could be true sometimes.)
31 Comments
Walter Roberson
on 17 Mar 2021
Yes, that is to be expected. Your code uses ni twice but does not define it at all. You need to define it as something appropriate to the situation.
I would, however, point out that if ni is not either 1 or a vector of all 1's, then the if ni = 1 would fail, and your code would not construct l(i,j) or l(j,i) . That would suggest that for all the interesting cases, ni = 1 would have to be in effect.
ankanna
on 17 Mar 2021
for i = 1,2,...,n
for j = i+1,...,n
test - select random number from uniform distribution between (0,1)
if (test<=;λ∩ni = 1∩nj = 1) then Li,j = 1
else; Li,j = 0
Lj,i = Li,j
L - load Li,j and Lj,i into the matrix L
this is the question actual
Walter Roberson
on 17 Mar 2021
Sorry, I looked at the document but it uses notation that I do not understand. I think that the authors would need to be asked for the meaning of part of it. In particular, I do not understand the semi-colon between the less-than-or-equal-to and the lambda.
Walter Roberson
on 17 Mar 2021
Edited: Walter Roberson
on 7 Apr 2021
nodes = 3; lambda = 0.7;
r = rand(1, nodes) * 0.3 + 0.7; %reliability
%4.2.1.1
%no loop needed in MATLAB
n = rand(1,nodes) <= r;
%4.2.1.2
%no loop needed in MATLAB
test = squareform(rand(1,nodes*(nodes-1)/2));
test(1:nodes+1:end) = 0; %node to itself is fully reliable
L = double(test <= lambda & n & n.');
L(1:nodes+1:end) = nan; %but algorithm leaves node to itself undefined
L
L = 3×3
NaN 1 1
1 NaN 0
1 0 NaN
ankanna
on 21 Mar 2021
probability of existence of a topology is given by
P(alfak=1) = lamda^nl*(1-lamda)^nu
Where
lamda = probability of link existence = 0.7
nl = linked nodes and
nu = unlinked nodes
now we take 0 0 0
p(alfak=1) =(0.7)^0*(1-0.7)^3
=0.027
0 0 1
p(alfak=1)=(0.7)^1*(1-0.7)^2
= 0.063
0 1 0 and 1 0 0 also sme because only one linked
p(alfak=1)=(0.7)^1*(1-0.7)^2
= 0.063
0 11, 1 0 1, 1 1 0
p(alfak=1)=(0.7)^2*(1-0.7)^1
= 0.147
1 1 1
p(alfak=1)=(0.7)^3*(1-0.7)^0
= 0.343
output will
L12 L13 L23 p(alfak=1)
___ ___ ___ _______
0 0 0 0.027
0 0 1 0.063
0 1 0 0.063
0 1 1 0.147
1 0 0 0.063
1 0 1 0.147
1 1 0 0.147
1 1 1 0.343
i need to generate above matrix
please help me to generate the code
Walter Roberson
on 21 Mar 2021
format long g
nodes = 10;
lamda = 0.7;
bits = dec2bin(0:2^nodes-1)-'0';
nl = sum(bits,2);
nu = nodes-nl;
P = lamda.^nl .* (1-lamda).^nu;
P(1:20)
ans = 20×1
5.90490000000001e-06
1.37781e-05
1.37781e-05
3.21489e-05
1.37781e-05
3.21489e-05
3.21489e-05
7.50141000000001e-05
1.37781e-05
3.21489e-05
[minP, minidx] = min(P)
minP =
5.90490000000001e-06
minidx =
1
bits(minidx,:)
ans = 1×10
0 0 0 0 0 0 0 0 0 0
[maxP, maxidx] = max(P)
maxP =
0.0282475249
maxidx =
1024
bits(maxidx,:)
ans = 1×10
1 1 1 1 1 1 1 1 1 1
histogram(P)
Walter Roberson
on 21 Mar 2021
I do not understand the question. You want each matrix to have 3 rows and NN columns ? What should be in the columns?
Walter Roberson
on 22 Mar 2021
I have no idea what you are asking, if you are not asking something that I solved for you days ago.
ankanna
on 7 Apr 2021
for i = 1,2,...,n
for j = i+1,...,n
test - select random number from uniform distribution between (0,1)
if (test<=;λ∩ni = 1∩nj = 1) then Li,j = 1
else; Li,j = 0
Lj,i = Li,j
L - load Li,j and Lj,i into the matrix L
this is the actual procedure to generate link status
Walter Roberson
on 7 Apr 2021
that code have an error. the error is undefined variable l
Please post the URL of the code that I posted that had the undefined variable l ?
Walter Roberson
on 7 Apr 2021
this is the actual procedure to generate link status
Sorry, I looked at the document but it uses notation that I do not understand. I think that the authors would need to be asked for the meaning of part of it. In particular, I do not understand the semi-colon between the less-than-or-equal-to and the lambda.
If the semi-colon were not there, then the test
if (test<=;λ∩ni = 1∩nj = 1) then Li,j = 1
else; Li,j = 0
would translate as
L(i,j) = test <= lambda && ni == 1 && nj == 1;
However it is not clear in the document whether ni and nj are intended to be distinct variables or are intended to be a vector n indexed at locations i and j -- but that would be a problem because n occurs as a limit in the for statement, implying that it is a scalar.
When I looked at the paper, it seemed most likely that the equation was wrong, that the operator in the test should be ∪ instead of ∩
Walter Roberson
on 8 Apr 2021
You seem to be referring to the earlier posting,
nodes = 3; m = 0.7;
for i = 1:nodes
for j = i+1:nodes
test = unifrnd(0,1);
if ni == 1
nj = 1:nodes;
if (test<=m/ni==1./nj==1)
l(i,j) = 1;
else
l(i,j) = 0;
end
l(j,i) = l(i,j);
end
L = [l(i,j);l(j,i)];
end
end
Unrecognized function or variable 'ni'.
No undefined variable l because it never gets that far due to ni and nj being undefined.
Walter Roberson
on 8 Apr 2021
So what happens if we define them?
ni = randi([0 1])
ni = 0
nj = randi([0 1])
nj = 0
nodes = 3; m = 0.7;
for i = 1:nodes
for j = i+1:nodes
test = unifrnd(0,1);
if ni == 1
nj = 1:nodes;
if (test<=m/ni==1./nj==1)
l(i,j) = 1;
else
l(i,j) = 0;
end
l(j,i) = l(i,j);
end
L = [l(i,j);l(j,i)]
end
end
Unrecognized function or variable 'l'.
Okay, that starts to make sense. You only assign to l if ni == 1 . So, we will have to initialize l
Walter Roberson
on 8 Apr 2021
ni = randi([0 1])
ni = 0
nj = randi([0 1])
nj = 0
nodes = 3; m = 0.7;
l = zeros(nodes, nodes);
for i = 1:nodes
for j = i+1:nodes
test = unifrnd(0,1);
if ni == 1
nj = 1:nodes;
if (test<=m/ni==1./nj==1)
l(i,j) = 1;
else
l(i,j) = 0;
end
l(j,i) = l(i,j);
end
L = [l(i,j);l(j,i)]
end
end
L = 2×1
0
0
L = 2×1
0
0
L = 2×1
0
0
l
l = 3×3
0 0 0
0 0 0
0 0 0
ankanna
on 8 Apr 2021
nodes=3; ri=0.9, lamda=0.7;
l = zeros(nodes, nodes);
for i=1: nodes
test=unifrnd (0,1)
if test<=ri
ni=1
else
ni=0
end
ns(i)=[ni]
end
for i=1:nodes
for j=i+3:nodes
test=unifrnd (0,1)
if test<=(lamda/ns(i)==1/ns(j)==1)
l(i,j)=1
else
l(i,j)=0
end
l(j,i) = l(i,j)
end
L = [l(i,j);l(j,i)]
end
this will be generated but the output is
L[ ]
Walter Roberson
on 8 Apr 2021
You cannot get that output with that algorithm. The paper published the wrong algorithm.
More Answers (0)
See Also
Categories
Find more on Random Number Generation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!An Error Occurred
Unable to complete the action because of changes made to the page. Reload the page to see its updated state.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom(English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)