C_reshape = reshape(C,length(M)+3,2).';为什么+3
时间: 2024-06-07 15:11:02 浏览: 3
这里使用了长度为N的卷积编码器,其中N为生成矢量G的列数。在进行卷积编码时,为了保证输出序列的正确性,需要将输入序列进行延拓,即在序列的头尾各添加N-1个0。这样,每个码元就能够进行N次编码,保证输出序列的正确性。
对于输入序列M=[1 1 0 0 1 0 1 1],在头尾各添加2个0,即在序列的头部添加[0 0],在序列的尾部添加[0 0],得到长度为12的序列[M_add0]=[0 0 1 1 0 0 1 0 1 1 0 0 0 0]。
在进行卷积编码时,每个码元都需要进行N次编码,而每次编码都会产生N个输出符号。因此,卷积编码后的输出序列长度为N*(len+N-1),其中len为输入序列M的长度。在本例中,N=3,len=8,因此卷积编码后的输出序列长度为3*(8+3-1)=33。
最终,C_reshape应该是一个2行17列的矩阵,每行包含16个卷积码符号和1个多余符号。因此,对C进行reshape操作时,需要将长度设置为len+N,并添加1个多余符号。即reshape(C,length(M)+3,2)。
相关问题
让代码最后输出百分号形式data = readmatrix('iris.csv'); train_data = reshape(data(1:40,:), [], 4); train_label = ones(120,1); test_data = reshape(data(41:150,:), [], 4); test_label = ones(30, 1); for i = 2:3 start_index = (i-1)50+1; end_index = i50; train_data = [train_data; reshape(data(start_index:start_index+39,:), [], 4)]; train_label = [train_label; i .* ones(40,1)]; test_data = [test_data; reshape(data(start_index+40:end_index,:), [], 4)]; test_label = [test_label; i .* ones(10,1)]; end nb = fitcnb(train_data,train_label); pred_label = predict(nb,test_data); acc = sum(pred_label==test_label) / length(test_label); disp(['Accuracy = ' num2str(acc)]);
代码如下:
```
data = readmatrix('iris.csv');
train_data = reshape(data(1:40,:), [], 4);
train_label = ones(120,1);
test_data = reshape(data(41:150,:), [], 4);
test_label = ones(30, 1);
for i = 2:3
start_index = (i-1)*50+1;
end_index = i*50;
train_data = [train_data; reshape(data(start_index:start_index+39,:), [], 4)];
train_label = [train_label; i .* ones(40,1)];
test_data = [test_data; reshape(data(start_index+40:end_index,:), [], 4)];
test_label = [test_label; i .* ones(10,1)];
end
nb = fitcnb(train_data,train_label);
pred_label = predict(nb,test_data);
acc = sum(pred_label==test_label) / length(test_label);
disp(['Accuracy = ' num2str(acc*100) '%']);
```
注意,需要将准确率acc乘以100,然后输出为百分号形式,因此在disp函数中需要使用字符串拼接的方式,将准确率转换为字符串后再加上百分号符号。
clc; clear; close all; tic; N=128; M=[4 16 32 64]; D=5; c=0.15; nt=0.1289; nr=0.9500; N_ofdm=1000; snr_dB=1:18; SNR=10.^(snr_dB./10); for kk=1:length(snr_dB) N_fft=N*2+2; for jj=1:length(M) base_data=randi([0 1],1,N*N_ofdm*log2(M(jj))); data_temp1= reshape(base_data,log2(M(jj)),[])'; data_temp2= bi2de(data_temp1); mod_data = qammod(data_temp2,M(jj)); data=reshape(mod_data,N,[])'; H_data=zeros(N_ofdm,N_fft); H_data(:,2:N_fft/2)= data; H_data(:,N_fft/2+2:N_fft)= conj(fliplr(data)); ifft_data=ifft(H_data,[],2); ifft_data=ifft_data+0.02*ones(size(ifft_data)); Noise=awgn(ifft_data,SNR(kk),'measured')-ifft_data; Rx_data=ifft_data*nt*nr*exp(-c*D)+Noise; Rx_data=Rx_data/(nt*nr*exp(-c*D)) fft_data=fft(Rx_data,[],2); Rx_psk_data=fft_data(:,2:N_fft/2); demodulation_data = qamdemod(Rx_psk_data',M(jj)); demodulation_data= reshape(demodulation_data,[],1); temp1=de2bi(demodulation_data); err(kk,jj)=sum(sum((temp1~=data_temp1))); end BER(kk,:)=err(kk,:)./(N*N_ofdm*log2(M(jj))); end figure(); for a=1:length(M) semilogy(snr_dB,BER(:,a),'*-','LineWidth',1.5);hold on; end代码翻译
clc; clear; close all; tic; % 清空变量和图形窗口,记录程序开始时间
N=128; % 子载波数
M=[4 16 32 64]; % 调制阶数
D=5; % 距离
c=0.15; % 衰落系数
nt=0.1289; % 发射天线数
nr=0.9500; % 接收天线数
N_ofdm=1000; % OFDM符号数
snr_dB=1:18; % 信噪比范围(单位:dB)
SNR=10.^(snr_dB./10); % 信噪比(单位:线性)
for kk=1:length(snr_dB) % 循环信噪比
N_fft=N*2+2; % FFT点数
for jj=1:length(M) % 循环调制阶数
base_data=randi([0 1],1,N*N_ofdm*log2(M(jj))); % 生成随机二进制数据
data_temp1= reshape(base_data,log2(M(jj)),[])'; % 二进制数据转换成M进制数据
data_temp2= bi2de(data_temp1); % 将M进制数据转换为十进制数据
mod_data = qammod(data_temp2,M(jj)); % QAM调制
data=reshape(mod_data,N,[])'; % 按子载波进行分组
H_data=zeros(N_ofdm,N_fft); % 初始化频域数据
H_data(:,2:N_fft/2)= data; % 将调制后的数据存放在频域数据中
H_data(:,N_fft/2+2:N_fft)= conj(fliplr(data)); % 利用对称性将数据存放在频域数据中
ifft_data=ifft(H_data,[],2); % IFFT变换
ifft_data=ifft_data+0.02*ones(size(ifft_data)); % 加上直流偏置
Noise=awgn(ifft_data,SNR(kk),'measured')-ifft_data; % 加入高斯白噪声
Rx_data=ifft_data*nt*nr*exp(-c*D)+Noise; % 接收信号经过信道影响和加性高斯白噪声干扰,得到接收信号
Rx_data=Rx_data/(nt*nr*exp(-c*D)); % 接收信号归一化
fft_data=fft(Rx_data,[],2); % FFT变换
Rx_psk_data=fft_data(:,2:N_fft/2); % 从频域数据中提取QAM调制后的数据
demodulation_data = qamdemod(Rx_psk_data',M(jj)); % QAM解调
demodulation_data= reshape(demodulation_data,[],1); % 将解调后的十进制数据转换为一维向量
temp1=de2bi(demodulation_data); % 将十进制数据转换为二进制数据
err(kk,jj)=sum(sum((temp1~=data_temp1))); % 统计误码数
end
BER(kk,:)=err(kk,:)./(N*N_ofdm*log2(M(jj))); % 计算误码率
end
figure(); % 新建图形窗口
for a=1:length(M) % 循环调制阶数
semilogy(snr_dB,BER(:,a),'*-','LineWidth',1.5);hold on; % 绘制误码率曲线
end
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)