# To concatenate rows in matrix within for loop based on if else statement

1 回表示 (過去 30 日間)
om prakash 2019 年 9 月 24 日

Hello everyone,
m = 2;
PU = 4;
NumBits=1000;
lamda_val=0.5;
si=rand(m,NumBits);
hi=rand(m,NumBits);
ni=rand(m,NumBits);
PU = input('Enter No. of primary user = ');
Fc = zeros(1, PU);
if PU >=1
for x = 1:PU
Fc(x) = input('Enter 1 for signal present and 0 for noise in channel = ');
end
else
disp('No primary signal detected');
return;
end
table = zeros(m,PU*NumBits);
for index = 1:(PU)
if Fc(index) == 1
for ii=1:m
temp(ii,:)=abs((hi(ii,:).*si(ii,:))+ni(ii,:)).^2;
end
else
for ii=1:m
temp_noise(ii,:)=abs(ni(ii,:)).^2;
end
end
table = [temp(ii,:) temp_noise(ii,:)]
end
can somebody tell me how to do this. I have to store values in rows.
I have edited the code for better understanding. Hope it helps.
If PU is 4 with values 1011, then values generated due to these values should be stored in concatenation to evaluate further.
Regards
Om Prakash
##### 3 件のコメント1 件の古いコメントを表示1 件の古いコメントを非表示
Fabio Freschi 2019 年 9 月 24 日
your example is not working because Fc is not defined
om prakash 2019 年 9 月 26 日
hi kalyan
I have edited my question, any suggestion?

サインインしてコメントする。

### 回答 (2 件)

Jos (10584) 2019 年 9 月 24 日
This code is weird.
In each iteration of "index" you fill either a matrix temp or a matrix temp_noise with m rows of values.
Then you concatenate only the last (= ii-th) row of both of these matrices into a single row, and store this in the variable table. One the of these last rows was just created, and for the other one you use the one created one or more iterations ago.
At every subsequention iteration, this variable table is overwritten.
So, first you need to carefully think about what you are trying to do ....
##### 2 件のコメントなしを表示なしを非表示
Fabio Freschi 2019 年 9 月 24 日
I agree, I was trying to reverse engineer the problem from the code, but a clear example would help
om prakash 2019 年 9 月 26 日
Hi jos,
I have edited my question, any suggestion?

サインインしてコメントする。

om prakash 2019 年 10 月 3 日
m = 2;
PU = 4;
NumBits=1000;
lamda_val=0.5;
si=rand(m,NumBits);
hi=rand(m,NumBits);
ni=rand(m,NumBits);
PU = input('Enter No. of primary user = ');
Fc = zeros(1, PU);
if PU >=1
for x = 1:PU
Fc(x) = input('Enter 1 for signal present and 0 for noise in channel = ');
end
else
disp('No primary signal detected');
return;
end
table = zeros(m,PU*NumBits);
for index = 1:(PU)
if Fc(index) == 1
for ii=1:m
temp(ii,:)=abs((hi(ii,:).*si(ii,:))+ni(ii,:)).^2;
A(ii,:) = temp(ii,:);
end
else
for ii=1:m
temp_noise(ii,:)=abs(ni(ii,:)).^2;
A(ii,:) = temp_noise(ii,:);
end
end
table(index*ii,:) = A(ii,:);
%then it need to be transposed
end
I tried this, but table matrix is not storing the correct values. Apart from that it need to be transposed to convert matrix [2,4000]
can anyone tell me how this can be done.

サインインしてコメントする。

### カテゴリ

Help Center および File ExchangeLogical についてさらに検索

R2017b

### Community Treasure Hunt

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

Start Hunting!

Translated by