错误使用 reshape 大小参数必须为整型实数。 出错 Untitled2 (line 19) symbol = reshape(bin, length(bin)/2, 2); % 将二进制序列分为符号
时间: 2024-03-12 10:45:42 浏览: 590
有符号整数/小数转化为二进制有符号数
这个错误是因为 `reshape` 函数的第一个参数必须是整数,但是 `length(bin)/2` 得到的结果可能是一个浮点数,所以需要将其转换为整数。可以使用 `floor` 函数对结果进行向下取整,或者使用 `fix` 函数将其转换为整数。以下是修改后的代码:
```matlab
clc;
clear;
close all;
% 将拼音scb转换为ASCII码
msg = 'scb';
ascii = double(msg);
% 将ASCII码转换为二进制序列
bin = dec2bin(ascii, 8);
bin = bin';
bin = bin(:)';
bin = str2num(bin);
% 进行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调制后的信号波形图。
阅读全文