错误使用 reshape 要执行 RESHAPE,请勿更改元素数目。 出错 Untitled (line 19) symbol = reshape(bin, floor(length(bin)/2), 2); % 将二进制序列分为符号
时间: 2024-03-12 13:45:47 浏览: 70
这个错误是因为使用 `reshape` 函数时,第一个参数的元素数目必须和原始矩阵的元素数目相同,但是经过二进制转换后的 `bin` 数组的元素数目可能不是偶数,不能被分成两列。可以在 `bin` 数组后面添加一个或多个零,使其元素数目为偶数,并且能够被分成两列。以下是修改后的代码:
```matlab
clc;
clear;
close all;
% 将拼音scb转换为ASCII码
msg = 'scb';
ascii = double(msg);
% 将ASCII码转换为二进制序列
bin = dec2bin(ascii, 8);
bin = bin';
bin = bin(:)';
bin = str2num(bin);
bin = [bin, 0]; % 添加一个零,使其元素数目为偶数
% 进行BPSK调制
fc = 10000; % 载波频率为10kHz
fs = 40000; % 采样率为40kHz
T = 1/1000; % 一个符号的时间
symbol = reshape(bin, floor(length(bin)/2), 2); % 将二进制序列分为符号
phi = pi/2 * (1 - 2*symbol(:,1)) + pi/2 * (1 - 2*symbol(:,2)); % 映射到相位上
t = (0:T/fs:T*(length(phi)-1))'; % 时间向量
s = cos(2*pi*fc*t + phi); % 调制信号
% 绘制调制信号波形图
figure;
plot(t, s);
xlabel('Time(s)');
ylabel('Amplitude');
title('BPSK Modulated Signal');
```
运行上述代码,即可得到BPSK调制后的信号波形图。
阅读全文