配列操作と符号誤り率測定プログラムについて

2 ビュー (過去 30 日間)
N/A
N/A 2019 年 11 月 12 日
コメント済み: N/A 2019 年 11 月 15 日
Transmitter2とReceiverの各行を比較し符号誤り率を測定するプログラムを作成したいです。そこで、下記のようなプログラムを作成してみましたが、「%(Transmitterの配列をiだけずらしたものをTranmitter2に代入する)」というプログラムを書くことができませんでした。どのようにプログラムを書けばいいですか?ご回答お待ちしております。
※「%(Transmitterの配列をiだけずらしたものをTranmitter2に代入する)」プログラムについて
Transmitterの配列は、「Transmitter(1):1、Transmitter(2):1、Transmitter(3):1、Transmiter(4):0、Transmitter(5):0、Transmitter(6):0、Transmitter(7):1、Transmitter(8):0、Transmiter(9):0、Transmitter(10):1、・・・・・」となっています。
i=1の時には、「Transmitter2(1):1、Transmitter2(2):1、Transmitter2(3):0、Transmiter2(4):0、Transmitter2(5):0、Transmitter2(6):1、Transmitter2(7):0、Transmitter2(8):0、Transmiter2(9):1、Transmitter2(10):1、・・・・・」
i=2の時には、「Transmitter2(1):1、Transmitter2(2):0、Transmitter2(3):0、Transmiter2(4):0、Transmitter2(5):1、Transmitter2(6):0、Transmitter2(7):0、Transmitter2(8):1、Transmiter2(9):0、Transmitter2(10):0、・・・・・」にしたいです。
MinBER = 10;
for i=1:1:128
%(Transmitterの配列をiだけずらしたものをTranmitter2に代入する)
nt = numel(Transmitter2);
nr = numel(Receiver);
if nr<nt
Transmitter2(nr,:) = [];
l = nr;
end
if nr>nt
Receiver(nt,:) = [];
l = nt;
end
ber = biterr(Transmitter2, Receiver);
ber1 = ber/l;
if ber1 < MinBER
MinBER = ber1;
end
if ber1 > MinBER
MinBER = MinBER;
end
end

採用された回答

Naoya
Naoya 2019 年 11 月 15 日
Transmitter を i 個分だけずらすということで、例えば以下の様な操作は如何でしょうか?
% Transmitter と同じサイズの Transmitter2 ベクトルを0 で初期化
Transmitter2 = zeros( size(Transmitter));
% Transmitter2 に i個ずらした Transmitter1 に割り当てる
Transmitter2(1:end-i) = Transmitter(i:end);
※ 変数 i は、MATLAB では、通常、複素数の虚数として表されます。
複素数を扱うベースバンドでのシミュレーションを行う場合、 i を別の意味合いを持つ変数として使いますと、予期せぬ結果になる可能性がありますので、ご注意ください。
  1 件のコメント
N/A
N/A 2019 年 11 月 15 日
ご回答頂きありがとうございます。配列をずらすことが出来ました。

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

その他の回答 (0 件)

タグ

製品


リリース

R2016b

Community Treasure Hunt

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

Start Hunting!