Pls help me generate circulant matrix

I want to create M x M circulant matrix where M=128
h1=gallery('circul',M:M/2);
h2=gallery('circul',M:M/2);
h=horzcat(h1,h2);
But I get error with this coding.
pls see this link for more info
in page 2 (2.2 mimo-ofdm sytem)

 採用された回答

Honglei Chen
Honglei Chen 2012 年 3 月 6 日

1 投票

You may want to use
M:-1:M/2
in your code, or something like that.
M:M/2
returns an empty vector so there is nothing to construct from it.
BTW, you can also use linspace. Say you want 5 points between M and M/2, just do
linspace(M,M/2,5)

1 件のコメント

Jan
Jan 2012 年 3 月 6 日
@melody: You do not have to create two equal matrices to join them. h = [h1, h1] is ok.

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

その他の回答 (1 件)

Emmanuel Ijiga
Emmanuel Ijiga 2016 年 10 月 2 日
編集済み: Emmanuel Ijiga 2016 年 10 月 2 日

0 投票

M = 20;
input = randi([0 15], 1, M); %Random Input values between 0 and 15
CM = zeros(M,M); %Initialize M X M Circulant Matrix (CM)
CM(1,:) = input; %place the input values in the first row of CM
for kk = 1:(size(CM,1) - 1)
CM(kk+1,1) = CM(kk,end);
CM(kk+1,2:end) = CM([kk],[1:end - 1])
end

カテゴリ

ヘルプ センター および File ExchangeMultidimensional Arrays についてさらに検索

タグ

タグが未入力です。

質問済み:

2012 年 3 月 6 日

編集済み:

2016 年 10 月 2 日

Community Treasure Hunt

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

Start Hunting!

Translated by