Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-06-10, 21:34   #1
jy00295005
初级会员
 
注册日期: 2009-04-23
年龄: 40
帖子: 4
声望力: 0
jy00295005 正向着好的方向发展
默认 求助:我在传输随机NRZ信号进laser rate equation老出错,高人帮我看看吧(code见内)

小弟做毕业设计第一步,要把一个nrz 信号放到激光rate equation里去,老是出错,下面我详细讲一下,希望各位大哥大姐帮我解答一下,困扰了好几天了。

我先用matlab模拟了一个rate equation 电流是一个恒定值,成功了,code如下:

function [dy] = rate_equation2(t,y)
dy = zeros(2,1);

tau_s = 3e-9; % carriers lifetime
tau_p = 1e-12; % photons lifetime
A = 1e-12; % linear gain costant
N0 = 1e24; % trasparency carries density
V = 3.75e-14; % modal volume
gamma = 1e-5; % gain compression factor
q = 1.6e-19; % electron charge

I0 = N0*q*V/tau_s; % trasparency current
tau_norm = tau_s/tau_p;
eta = A*tau_p*N0; % efficiency
I = 3*I0;


dy(1)= I/I0 -y(2)*(y(1) - 1) -y(1);
dy(2) = tau_norm*(y(2)*(eta*(y(1) - 1) -1) + gamma*eta*y(1));
end


然后把这个function画出来:
clc
clear all
close all

tau_s = 3e-9;
N0 = 1e24;
A =1e-12;
P0 = 1/(A*tau_s);

TSPAN = [0 10];
Y0 =[0 0];

[T,Y] = ODE45(@rate_equation1,TSPAN,Y0);

subplot(2,1,1)
plot(T*tau_s ,Y(:,1)*N0)
title('plot of photon densities')

subplot(2,1,2)
plot(T*tau_s ,Y(:,2)*P0)
title('plot of carrier densities')


这都成功了不过当我想把一个nrz data 当成电流放到公式里面看看photon变化就一直错误。下面是function2 code:
function [dy] = rate_equation2(t,y)
dy = zeros(2,1);

%generate NRZ siganl ---------------------------------------------------
T1=1; % symbol duration
nb=100; % number of transmiting bits
delta_T=T1/100;

% generate source data
data=randn(1,nb)>0.5;
datanrz=data.*2+0.5; % translate source data into NRZ code
data1=zeros(1,nb/delta_T);
for q=1:nb
data1((q-1)/delta_T+1:q/delta_T)=datanrz(q);
end % transmiting signal
I = data1; % pumping data
%------------------------------------------------------------------------
tau_s = 3e-9; % carriers lifetime
tau_p = 1e-12; % photons lifetime
A = 1e-12; % linear gain costant
N0 = 1e24; % trasparency carries density
V = 3.75e-14; % modal volume
gamma = 1e-5; % gain compression factor
q = 1.6e-19; % electron charge

I0 = N0*q*V/tau_s; % trasparency current
tau_norm = tau_s/tau_p;
eta = A*tau_p*N0; % efficiency
% I = 3*I0;

dy(1)= I/I0 -y(2)*(y(1) - 1) -y(1);
dy(2) = tau_norm*(y(2)*(eta*(y(1) - 1) -1) + gamma*eta*y(1));
end


错误显示:
??? In an assignment A(I) = B, the number of elements in B and I must be the same.

我就把一电流是恒定值改成了一个nrz的变化值,就是错误,我试了很久都没找到错误,希望好心人能帮助我,另外抱歉有些用词不太准确。
jy00295005 当前离线   回复时引用此帖
旧 2009-06-11, 00:02   #2
jy00295005
初级会员
 
注册日期: 2009-04-23
年龄: 40
帖子: 4
声望力: 0
jy00295005 正向着好的方向发展
默认 回复: 求助:我在传输随机NRZ信号进laser rate equation老出错,高人帮我看看吧(code见内)

我大概知道错在哪,dy(2)是个一个数,i=data1是个矩阵,不对等,不知道怎么解决它
jy00295005 当前离线   回复时引用此帖
旧 2009-06-11, 22:09   #3
jy00295005
初级会员
 
注册日期: 2009-04-23
年龄: 40
帖子: 4
声望力: 0
jy00295005 正向着好的方向发展
默认 回复: 求助:我在传输随机NRZ信号进laser rate equation老出错,高人帮我看看吧(code见内)

问题以解决

用一个i=interp1(mytime,myi,t)
可以得到ode每轮迭代对应的i 值,在【T,Y】= ODE(@)下也做相应的修改就可以了
jy00295005 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 21:43


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.