如何运行程序多次改变数组索引并保存输出。

3视图(30天)
我想扫描信噪比的值到函数所以我可以画出信噪比与误码率。我越来越错误当我尝试使用循环和靠不住的数据时成功。的误码率值应该为信噪比上升但它保持不变,不正确的趋势。
清晰;
% clc;
message_length = 1200;%的位
M = 64;% M-QAM
phase_offset = 0.5 *π/ 20;
信噪比= 0:2:45;在dB %信噪比
SignalP = 1;
NoiseP = . 01;
barker_length = 13;% 13或5只
L = 45;% L是noise-only样本长度。L = (20、50) - > 100 - L = [80]
% bits_per_symbol = log2 (M);
开关
情况下2
bits_per_symbol = 1;
情况下16
bits_per_symbol = 4;
情况下64年
bits_per_symbol = 6;
否则
“* * * * * * *金宝app *不支持QAM大小* * * * * * * * *”
结束
开关barker_length
情况下13
序言= [1 1 1 1 1 1 1 1 1 1 1 1 1];
mf_threshold = 10;%你可以尝试不同的阈值
情况下5
序言= (1 1 1 1 1);
mf_threshold = 4;%你可以尝试不同的阈值
否则
“* * * * * * *金宝app *不支持序言长度* * * * * * * * *”
结束
消息=圆(兰德(1,message_length));% rand()为0到1之间的随机数提供统一的pdf
k = 1: message_length / bits_per_symbol
t_sum = 0;
m = 1: bits_per_symbol
t_sum = t_sum + (2 ^ (bits_per_symbol-m)) *消息(bits_per_symbol * k - m + 1);%二进制无符号整数
%。“1 0 1 1”与最MSB = 1 + 0 * 2 + 1 * 4 + 1 + 1 * 8
结束
symbol_index (k) = t_sum;% 0和m - 1之间
结束
% tx_symbol = qammod (symbol_index, M, UnitAveragePower,真的,PlotConstellation, true);
tx_symbol = qammod (symbol_index, M,“UnitAveragePower”,真正的);
tx_signal =(序言tx_symbol);
tx_signal_rot = tx_signal * (cos (phase_offset) + i * sin (phase_offset));
tx_signal_sim =[0(1升)tx_signal_rot 0 (1100 - L)];
rx_signal = awgn (tx_signal_sim,信噪比(n));%的输入信号功率必须1.0(0瓦分贝),信噪比在dB
%。信噪比= 20 (dB) - >信噪比是10 ^(20/10)= 100,的力量
%的噪音是0.01
% rx_signal = awgn (tx_signal_rot、信噪比、“测量”);%信号压水式反应堆测量
% rx_signal = awgn (tx_signal_sim、信噪比、signalpower);%必须指定信号功率
[c,滞后]= xcorr(序言,rx_signal);%需要汽车相关的序言和接收到的信号
c1 =实际(c);%发现矢量的大小。
(pkt, lct) = findpeaks (c1,“阈值”,mf_threshold);%发现峰的峰值和位置与阈值。
start_index = lct(结束);%的发现的位置滞后指数
c2 = c (start_index);%发现马克斯值原始值实部和虚部
θ=角(c2);%估计相位偏移值从autocorrlated值。
start_location =(1 *滞后(start_index) + 1);%给数据开始位置然后开始第一个数据值
end_location =长度(rx_signal) - ((100 - (start_location-1)));%发现最终的位置如果0的数量是已知的
rx_signal1 = rx_signal (start_location: end_location);%删除添加0
rx_signal_not_rot = rx_signal1 * (cos(θ)+ i * sin(θ));%试图消除相移
rx_signal_no_preamble = rx_signal_not_rot (barker_length + 1:结束);%去除的巴克码信号
z = qamdemod (rx_signal_no_preamble, M,“UnitAveragePower”,真正的);% demondulates demapping之前接收到的信号就可以开始了
b_array = de2bi (z, bits_per_symbol,“right-msb”);%的映射索引并创建一个与right-msb二进制矩阵表示
rx_signal_final = [];%的矩阵,然后将它转变成一个数组的长度发送消息。
i = 1:尺寸(b_array, 1)
rx_signal_final = [rx_signal_final b_array(我:)];
结束
[BitErrors,误码率]= biterr (rx_signal_final、消息);% =数量的比特数是不同的,比=接收/发送的比率
s = isequal(消息、双(rx_signal_final));% %检查解调消息和发送消息是相同的。

答案(1)

Raunak古普塔
Raunak古普塔 2020年12月5日
曼努埃尔 ,
您可以转换不同信噪比的代码,需要运行到一个值 函数 返回系统输出。然后您可以使用 循环的 计算信噪比为多个BER值 在一个单独的脚本 下面的代码是有帮助的,我有检查与信噪比的价值观及其工作好 (BER随信噪比增加) 但在信噪比的值 更大的 比22分贝 ,数量是0。也许你可以重新检查的逻辑如果失踪。
信噪比= 0:2:45;% dB的信噪比
1 = 0(大小(信噪比));
指数= 1:长度(信噪比)
数量(指数)= calculateBER(信噪比(索引));
disp (BER(指数));
结束
函数berValue = calculateBER (snrValue)
message_length = 1200;%的位
M = 64;% M-QAM
phase_offset = 0.5 *π/ 20;
% bits_per_symbol = log2 (M);
SignalP = 1;
NoiseP = . 01;
barker_length = 13;% 13或5只
L = 45;% L是noise-only样本长度。L = (20、50) - > 100 - L = [80]
开关米
案例2
bits_per_symbol = 1;
例16
bits_per_symbol = 4;
例64
bits_per_symbol = 6;
否则
%”* * * * * * *金宝app *不支持QAM大小* * * * * * * * *”
结束
开关barker_length
例13
序言= [1 1 1 1 1 1 1 1 1 1 1 1 1];
mf_threshold = 10; %你可以尝试不同的阈值
例5
序言= (1 1 1 1 1);
mf_threshold = 4; %你可以尝试不同的阈值
否则
%”* * * * * * *金宝app *不支持序言长度* * * * * * * * *”
结束
消息=圆(兰德(1,message_length)); % rand()为0到1之间的随机数提供统一的pdf
k = 1: message_length / bits_per_symbol
t_sum = 0;
m = 1: bits_per_symbol
t_sum = t_sum + (2 ^ (bits_per_symbol-m)) *……
消息(bits_per_symbol * k - m + 1); %二进制无符号整数
%。“1 0 1 1”与最MSB = 1 + 0 * 2 + 1 * 4 + 1 + 1 * 8
结束
symbol_index (k) = t_sum;% 0和m - 1之间
结束
% tx_symbol = qammod (symbol_index, M, UnitAveragePower,真的,PlotConstellation, true);
tx_symbol = qammod (symbol_index, M, UnitAveragePower, true);
tx_signal =(序言tx_symbol);
tx_signal_rot = tx_signal * (cos (phase_offset) + 1我* sin (phase_offset));
tx_signal_sim =[0(1升)tx_signal_rot 0 (1100 - L)];
rx_signal = awgn (tx_signal_sim snrValue); %输入信号功率必须1.0(0瓦分贝),信噪比在dB
%。信噪比= 20 (dB) - >信噪比是10 ^(20/10)= 100,的力量
%的噪音是0.01
% rx_signal = awgn (tx_signal_rot、信噪比、“测量”);%信号压水式反应堆测量
% rx_signal = awgn (tx_signal_sim、信噪比、signalpower);%必须指定信号功率
[c,滞后]= xcorr(序言,rx_signal); %需要汽车相关的序言和接收到的信号
c1 =实际(c); %发现矢量的大小。
(pkt, lct) = findpeaks (c1,“阈值”,mf_threshold); %发现峰的峰值和位置与阈值。
start_index = lct(结束);%的发现的位置滞后指数
c2 = c (start_index); %发现马克斯值原始值实部和虚部
θ=角(c2); %估计相位偏移值从autocorrlated值。
start_location =(1 *滞后(start_index) + 1);%给数据开始位置然后开始第一个数据值
end_location =长度(rx_signal) - ((100 - (start_location-1))); %发现最终的位置如果0的数量是已知的
rx_signal1 = rx_signal (start_location: end_location); %删除添加0
rx_signal_not_rot = rx_signal1 * (cos(θ)+ 1我* sin(θ));%试图消除相移
rx_signal_no_preamble = rx_signal_not_rot (barker_length + 1:结束),%去除的巴克码信号
z = qamdemod (rx_signal_no_preamble, M, UnitAveragePower, true);% demondulates demapping之前接收到的信号就可以开始了
b_array = de2bi (z, bits_per_symbol, right-msb); %需要映射索引并创建一个与right-msb二进制矩阵表示
rx_signal_final =[]; %的矩阵,然后将它转变成一个数组的长度发送消息。
i = 1:尺寸(b_array, 1)
rx_signal_final = [rx_signal_final b_array(我:)];
结束
[BitErrors, berValue] = biterr (rx_signal_final、消息);% =数量的比特数是不同的,比=接收/发送的比率
s = isequal(消息、双(rx_signal_final)); % %检查解调消息和发送消息是相同的。
结束

类别

找到更多的在测试和测量帮助中心文件交换

下载188bet金宝搏


释放

R2020b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!