MATLAB在for语句中使用plot画图,画出来只有点不是线,输出的y在前面的语句中需要经过迭代,怎样保存y? 5

forSNR=0:1:15amp=1;tx_waveform=bpsk(u,amp);rx_waveform=awgn(tx_waveform,SNR);scale(1:... for SNR=0:1:15
amp=1;
tx_waveform=bpsk(u,amp);
rx_waveform=awgn(tx_waveform,SNR);

scale(1:length(u))=1; %No fading.

%LDPC译码
[uhat, vhat]=ldpc_decode(rx_waveform,SNR,amp,scale,H,rearranged_cols);

errmax=find(s~=uhat);
nerr=length(errmax)
BER=nerr/(cols-rows)%这里的BER在调用别的函数时需要经过迭代,请问要怎么保存BER每次的结果最后画出来呢?我之前用了i=0:16,打算把数据存到一个新的BERBER[]数组中,但是最后输出的BERBER数组中全变成0了。请问有方法可以保存下来吗?或者有没有别的方法直接把点连成线

%LDPC性能图
plot(SNR,BER,'-ro')
set(gca,'Yscale','log');
hold on
end

感谢解答!!!!!!!!
展开
 我来答
lhmhz
高粉答主

2022-04-02 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7272 获赞数:17047

向TA提问 私信TA
展开全部

在for语句中使用plot画图,画出来是只有点。

因为plot(SNR,BER,'-ro')中的BER变量为单一数值。所以如想绘画出直线段的话,则应考虑数值变量,即BER变量为一数组变量。

因此,题主的代码应作如下改动:

1、for循环语句头改动,即为

for i=0:1:15

2、BER=nerr/(cols-rows)代码改动,即为

BER(i)=nerr/(cols-rows)

3、plot函数位置改动,放在for循环语句外,即

。。。

end

%LDPC性能图
plot(SNR,BER,'-ro')
set(gca,'Yscale','log');
hold on

追问

1、那请问如果我的SNR要设置-4:0.5:12区间呢?
2、我刚刚试了一下用for i=0:1:15,画出来的图有线了,但是中间有几个点不知道是不是超过了迭代次数就直接不管了?然后输出来的图就中间空了一截,变成两部分了。。。我刚刚查了一下,发现BER第四个值和第五个值为0,所以就这种情况下,不会连在一起么

追答
应这样改:
SNR=[-4:0.5:12]
for i=1:length(SNR)
。。。
end
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式