使用semilogy 函数出错,不知道怎么解决

错误使用 semilogy
数据必须为单个 y 值输入或者一对或多对 x 和 y 值。

clc;clear;
lamda=1550e-9;     % 发射激光脉冲1550 nm
fs=500e6;          % 采样频率500 MHz
T=400e-9;          % 发射激光的脉冲宽度400 ns
N=[100 1000 10000];% 1000,10000
CNR=-40:5:10;      % -40~10 dB
M=T*fs;            % M为采样点数
W=sqrt(log(2))/(pi*T*sqrt(2)); w=W/fs;     % 归一化谱宽

CNR1=linspace(-40,10,50); % -40~10 dB
CNR=10.^(CNR1/10);
V_cr1=zeros(1,50);
a=lamda*fs*w/(2*sqrt(N(1)*M));

for index=1:50
    u =@(f) (f./w).^2./(1+((CNR(index)./(w*(2*pi).^0.5)).*exp(-f.^2./(2*w.^2))).^(-1)).^2;
    q = integral(u,-1/2,1/2);
    V_cr1(index)=a*q.^(-1/2);

end
V=V_cr1;
semilogy(CNR1,V,line);

title('V_crl with CNR');
ylabel('V_crl(m/s)');
xlabel('CNR(dB)');
ylim([1e-3,1e1]);

参考GPT和自己的思路:

semilogy函数要求输入的数据必须是单个y值或一对或多对x和y值,但在代码中的第22行,输入的line参数是错误的,应该改为'-o'或其他符合要求的参数。修改后的代码如下:

1. clc;clear;
2. lamda=1550e-9; % 发射激光脉冲1550 nm
3. fs=500e6; % 采样频率500 MHz
4. T=400e-9; % 发射激光的脉冲宽度400 ns
5. N=[100 1000 10000];% 1000,10000
6. CNR=-40:5:10; % -40~10 dB
7. M=T\*fs; % M为采样点数
8. W=sqrt(log(2))/(pi\*T\*sqrt(2)); w=W/fs; % 归一化谱宽
9. 
10. CNR1=linspace(-40,10,50); % -40~10 dB
11. CNR=10.^(CNR1/10);
12. V\_cr1=zeros(1,50);
13. a=lamda\*fs\*w/(2\*sqrt(N(1)\*M));
14. 
15. for index=1:50
16. u =@(f) (f./w).^2./(1+((CNR(index)./(w\*(2\*pi).^0.5)).\*exp(-f.^2./(2\*w.^2))).^(-1)).^2;
17. q = integral(u,-1/2,1/2);
18. V\_cr1(index)=a\*q.^(-1/2);
19. 
20. end
21. V=V\_cr1;
22. semilogy(CNR1,V,'-o');
23. 
24. title('V\_crl with CNR');
25. ylabel('V\_crl(m/s)');
26. xlabel('CNR(dB)');
27. ylim([1e-3,1e1]);

这样就可以正常使用semilogy函数来绘制CN值与V_crl的关系曲线了。

CNR1=linspace(-40,10,50);
这里怎么返回的,调试输出下