如何绘制并行曲线

在平时的图形绘制中我们经常会遇到平行线的绘制,对于平行线的绘制下面将详细介绍基本的思路以及部分实现代码。

具体的请到www.msvdraw.com 下载相关的函数库

 

平行线如下所示:

         ss

7.3 并行曲线

通过上面的图形你大概也能了解是怎么处理的,严格的说这里仅仅是做了简单的实现,在实际的项目操作中是要求连接处是光滑的。这个问题留给你来处理,我们只做简单的连接。

垂线的获得:

线条CD所在的折线(曲线)为基准线(为了讲解我们这样做了假设,在实际中是两条线之间的直线为基准,就是经过四个小矩形区域中点的折线为基准线)如何求垂直于CD的直线CL1DL2两条直线。

实现代码如下

     //计算轨迹两边的边界线坐标

     定义中间变量

     Vector2D curV,pervV;

     求得AB点的坐标

     Vector2D pointAPointB;

 

Point C,D;

AB点赋值

     int k = 0;

 

     Vector2D vf1(C.X,C.Y) ;

     Vector2D vf2(D.X,D.Y) ;

     //取得数据点

     curV = vf2 - vf1;

     将向量DC单位化处理

     curV.SetUnit();

     curV.Set(curV.y,-curV.x);

     pointA = vf1+ curV * m_nOffsetLeft;

     pointB = vf2+ curV * m_nOffsetLeft;

     说明的是m_nOffsetLeft 为当前要求的平行线距离直线CD的距离(像素)。

这样就求得了直线AB(直线Line1)。依据同样的原理求得直线Line2 ,根据前面介绍的方法(直线求交)可以求得直线Line1与直线Line2的交点E,这样就可以求得关于CD直线的平行线AE。依次类推就可以求得其他折线段的平行线。同理求得另外的一条折线,这两条折线可以组成平行折线。

当折线是闭合的,那么需要针对折线的两个端点所在的直线作特殊的处理,使得求得偏移折线是闭合的。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现MATLAB仿真PCM编码的误码率随信噪比变化曲线并行传输,您可以按照以下步骤进行: 1. 生成待传输的数字信号,例如随机生成一个长度为N的二进制序列。 2. 对数字信号进行PCM编码,生成对应的模拟信号。这里可以使用MATLAB中的 `quantize()` 函数来实现。 3. 对模拟信号进行并行传输,例如将信号分成M个子信道传输。 4. 为每个子信道添加高斯白噪声,以模拟信道中的噪声影响。这里可以使用 MATLAB 中的 `awgn()` 函数来实现。 5. 对每个子信道接收到的信号进行PCM解码,恢复出数字信号。 6. 计算误码率,即接收到的数字信号与原始数字信号不同的比例。可以使用 MATLAB 中的 `biterr()` 函数来实现。 7. 重复步骤3-6,分别计算不同信噪比下的误码率,生成误码率随信噪比变化曲线。 下面是一个简单的示例代码,演示如何实现上述步骤: ```matlab % 生成待传输的数字信号 N = 10000; data = randi([0 1], 1, N); % PCM编码 bits_per_sample = 8; % 每个采样位数 L = 2^bits_per_sample; % 量化级数 delta = 2/L; % 量化间隔 x = data*(2-delta) + delta/2; % 将二进制序列转换为模拟信号 xq = quantize(x, L, -1, 1); % 进行PCM编码 % 并行传输 M = 4; % 子信道数 xq_m = reshape(xq, [], M); % 将编码后的信号分成M个子信道 % 添加高斯白噪声 SNR = 10; % 信噪比 sigma = sqrt(1/(2*10^(SNR/10))); % 计算噪声标准差 xq_m_noisy = xq_m + sigma*randn(size(xq_m)); % 添加高斯白噪声 % PCM解码 data_m = zeros(size(xq_m_noisy)); for i = 1:M data_m(:,i) = round((xq_m_noisy(:,i) + 1)*(L-1)/2); % 解码为数字信号 end data_m = data_m(:)'; % 恢复为一维序列 % 计算误码率 num_errors = biterr(data, data_m); error_rate = num_errors/N; % 重复上述步骤,计算不同信噪比下的误码率 SNR_range = 0:2:20; % 信噪比范围 error_rate_range = zeros(size(SNR_range)); for i = 1:length(SNR_range) SNR = SNR_range(i); sigma = sqrt(1/(2*10^(SNR/10))); xq_m_noisy = xq_m + sigma*randn(size(xq_m)); data_m = zeros(size(xq_m_noisy)); for j = 1:M data_m(:,j) = round((xq_m_noisy(:,j) + 1)*(L-1)/2); end data_m = data_m(:)'; num_errors = biterr(data, data_m); error_rate_range(i) = num_errors/N; end % 绘制误码率随信噪比变化曲线 figure; semilogy(SNR_range, error_rate_range); xlabel('信噪比(dB)'); ylabel('误码率'); title('误码率随信噪比变化曲线'); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值