what is assignment error in the following code?
Show older comments
clc;
clear all;
Pa=9;
R=3;
beta=8;
N=4;
P0=0.3726;
q1= 1:1:10;
pout3=1-exp(-(((2^R)-1)/(P0))^(beta/2));
for j=1:length(q1)
k = floor((j*N)/Pa);
for jj = 1:N-k-1
P(j,jj)=0;
pout1(j,jj)=1-exp(-(((2^R)-1)/(P(j,jj)))^(beta/2));
end
for l = N-k+1:N
PP(j,l)=((N*j)-P0)/k;%ko;
pout2(j,l)=1-exp(-(((2^R)-1)/(PP(j,l)))^(beta/2));
end
end
for j=1:length(q1)
k = floor((j*N)/Pa);
outage_f(j)=((pout1(j,:)+sum(pout2(j,N-k+1:N))+ pout3)/N);
end
plot(q1,outage_f,'*y');
grid on;
xlabel('transmit power');
ylabel('outage probability');
while executing above code..... In an assignment A(I) = B, the number of elements in B and I must be the same.
Error in fig2 (line 28) outage_f(j)=((pout1(j,:)+sum(pout2(j,N-k+1:N))+ pout3)/N);
it showing above error........... how to correct it??
Answers (2)
Iain
on 29 Jan 2014
1 vote
Changing outage(j) to outage(j,:) or outage(:,j) will corect the error.
The problem is that you're adding a scalar to a vector and then trying to put the result in a space thats only big enough for a scalar.
9 Comments
kanchanamala
on 29 Jan 2014
Iain
on 29 Jan 2014
Ok, so the first error is corrected, now to deal with the second:
You're trying to use the seventh, eightth, nineth and tenth rows of pout1, when it has six. How would you like it to behave?
kanchanamala
on 29 Jan 2014
kanchanamala
on 29 Jan 2014
Edited: kanchanamala
on 29 Jan 2014
Iain
on 29 Jan 2014
In that case, your formulae are entirely wrong, or they're not quite entirely wrong but you've also got garbage data.
kanchanamala
on 29 Jan 2014
Iain
on 29 Jan 2014
pout3 evaluates to 1. pout1 evaluates to 1. Your probability of outage would therefore be at least 200%, which is clearly wrong.
I don't understand what you are trying to do because I don't know the background of the problem.
kanchanamala
on 29 Jan 2014
kanchanamala
on 30 Jan 2014
Azzi Abdelmalek
on 29 Jan 2014
Edited: Azzi Abdelmalek
on 29 Jan 2014
% The expression outage_f(j)=(pout1(j,:)+sum(pout1(j,N-k+1:N))+ pout3)/N; becomes
outage_f(j,:)=(pout2(j,:)+sum(pout2(j,N-k+1:N))+ pout3)/N;
Because the size of pout1 is 6x3 and length(q1) is 10
%-----------------------------------------
clc;
clear
Pa=9;
R=3;
beta=8;
N=4;
P0=0.3726;
q1= 1:1:10;
pout3=1-exp(-(((2^R)-1)/(P0))^(beta/2));
for j=1:length(q1)
k = floor((j*N)/Pa);
for jj = 1:N-k-1
P(j,jj)=0;
pout1(j,jj)=1-exp(-(((2^R)-1)/(P(j,jj)))^(beta/2));
end
for l = N-k+1:N
PP(j,l)=((N*j)-P0)/k;%ko;
pout2(j,l)=1-exp(-(((2^R)-1)/(PP(j,l)))^(beta/2));
end
end
for j=1:length(q1)
k = floor((j*N)/Pa);
outage_f(j,:)=(pout2(j,:)+sum(pout2(j,N-k+1:N))+ pout3)/N;
end
plot(q1,outage_f,'*r');
grid on;
xlabel('transmit power');
ylabel('outage probability');
10 Comments
kanchanamala
on 29 Jan 2014
Azzi Abdelmalek
on 29 Jan 2014
You have to decide what to put instead of q1, because the size of pout1 is 6x3 and the length of q1 is 10, unless you zeros to pout1, just before the for loop
pout1(end+1:end+3,:)=0
kanchanamala
on 29 Jan 2014
kanchanamala
on 29 Jan 2014
Azzi Abdelmalek
on 29 Jan 2014
Edited: Azzi Abdelmalek
on 29 Jan 2014
No, it's pout1(end+1:end+4,:)=0
pout1(end+1:end+4,:)=0;
for j=1:length(q1)
k = floor((j*N)/Pa);
outage_f(j,:)=(pout1(j,:)+sum(pout2(j,N-k+1:N))+ pout3)/N;
end
kanchanamala
on 29 Jan 2014
kanchanamala
on 29 Jan 2014
kanchanamala
on 30 Jan 2014
Azzi Abdelmalek
on 30 Jan 2014
What theorem you are talking about?
kanchanamala
on 30 Jan 2014
Categories
Find more on Resampling Techniques 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!