พล็อตฟังก์ชันการแจกแจงสะสมใน MATLAB

ฉันได้กราฟที่ดูแปลกๆ จากฟังก์ชัน cdf ของฉัน ถ้าฉันใช้ ecdf ฉันจะได้กราฟที่ฉันคาดหวัง แต่ฉันได้รับความยุ่งเหยิงยุ่งเหยิงที่ดูเหมือนว่าจะมีข้อมูลที่ถูกต้อง แต่มีลำดับที่ผิด

SNR = exprnd(1,1000,1); 
Cap = 1*log2(1+SNR); % unit bandwidth

[f,x] = ecdf(Cap);
figure(2);
plot( x,f);

cdf_Cap = cdf('Exponential', Cap, 1);
figure(3);
plot( Cap, cdf_Cap);

figure(4);
cdfplot(Cap);

รูปที่ 2 แสดงผลลัพธ์ที่คาดหวัง: ป้อนคำอธิบายรูปภาพที่นี่

และรูปที่ 3 แสดง: ป้อนคำอธิบายรูปภาพที่นี่

ฉันแน่ใจว่ามันเป็นข้อมูลที่ถูกต้อง และแค่ต้องการฟังก์ชันสัมบูรณ์หรือฟังก์ชันการเรียงลำดับเท่านั้น ฉันแค่ไม่รู้ว่ามันจะเป็นอย่างไร ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก


person Duck    schedule 20.07.2015    source แหล่งที่มา
comment
โปรดทราบว่าคุณไม่จำเป็นต้องเรียงลำดับมัน คุณสามารถพล็อตฟังก์ชันโดยไม่ต้องเชื่อมต่อบรรทัดเช่น plot( Cap, cdf_Cap,'o') แม้ว่าสำหรับ cdf คุณอาจต้องการเรียงลำดับและเชื่อมต่อบรรทัดก็ตาม   -  person Justin    schedule 20.07.2015


คำตอบ (1)


ดูเหมือนว่า Cap จะไม่เพิ่มขึ้นอย่างซ้ำซากจำเจ ฉันคิดว่าคุณอาจจัดเรียงมันก่อนที่จะวางแผน

บน figure(3) ให้แทนที่สิ่งนี้:

plot( Cap, cdf_Cap);

ด้วยสิ่งนี้:

[~, idx] = sort(Cap);
plot( Cap(idx), cdf_Cap(idx));

ตอนนี้ข้อมูลจะถูกลงจุดตามลำดับที่ถูกต้อง

person Rafael Monteiro    schedule 20.07.2015
comment
ขอบคุณ! นั่นคือสิ่งที่ฉันคาดหวัง ไชโย =) - person Duck; 20.07.2015