Hi there.I want to draw the following formula, but I get the following error
error: Vectors must be the same length.
why?
y(t) is a 41765*4 matrix and A=y(:,3).
for example y(:,3) having values as follows:
8.26665517322484e-08 - 3.08466436225798e-07i
2.94822110031966e-08 - 1.28642078260667e-07i
4.87811541654193e-08 + 1.34459400745398e-08i
5.20060276867161e-08 - 1.37015907821914e-07i
7.13757345297127e-08 - 2.06148057224859e-07i
8.21435079828878e-08 - 1.73652495134914e-07i
...
And my code in Matlab
tspan = [0 2e-9]; % time interval, up to 2 ns
y0 = [0+eps,0+eps,0+eps,0+eps];
[t,y] = ode45(@rate_eq_program_1,tspan,y0);
size(t);
t=t*1e9;
y = abs(y); % Change As Necessary To Get The Desired Resullt
delta_omega_laser=diff(atan(real(y(:,3))./imag(y(:,3))));
figure(1)
g = plot(t,delta_omega_laser ); % divided to normalize
xlabel('time [ns]','FontSize',14); % size of x label
ylabel('Arbitrary units','FontSize',14); % size of y label
set(gca,'FontSize',14); % size of tick marks on both axis
legend('\delta_omega', 'Location','SE') % legend inside the plot
Thanks in advance for helping!!

댓글 수: 2

diff is just difference between values:
dy(1) = y(2) - y(1);
dy(2) = y(3) - y(2);
%...
If you have 5 elements in y arrays. How many would you have in dy?
mohammad heydari
mohammad heydari 2019년 11월 8일
I mean derivation and implementation of formulas, not differences.y are calculated in ode and i want to calculate formulas.

댓글을 달려면 로그인하십시오.

 채택된 답변

M
M 2019년 11월 8일

0 개 추천

What lines causes the error ? Following one ?
g = plot(t,delta_omega_laser );
t and delta_omega_laser must have the same length.

댓글 수: 14

mohammad heydari
mohammad heydari 2019년 11월 8일
But both have the same length. I say this from workspace.
both have 41765.
darova
darova 2019년 11월 8일
  • But both have the same length
impossible. Please show
mohammad heydari
mohammad heydari 2019년 11월 8일
this is workspace and please pay attention to t and y----------y is a matrix with 41765*4
M
M 2019년 11월 8일
편집: M 2019년 11월 8일
Yes, t and y have same dimensions, but you are trying to plot not t and y but t and delta_omega_laser.
Using the diff command, you lose one element in your vector.
mohammad heydari
mohammad heydari 2019년 11월 8일
편집: mohammad heydari 2019년 11월 8일
Of course, delta_omega_laser. is a function of y .
What advice do you have for writing that formula? Is there another way?
You can shorten t vector
g = plot(t(2:end),delta_omega_laser);
mohammad heydari
mohammad heydari 2019년 11월 8일
There was an error resolving your suggestion but there is a problem.I should have the red curve in the figure below.s.png
But the shape I have is the following.The black and blue curves in the figure above are correctly obtained.
my.jpg
What is the problem?
image.png
You forgot to divide by dt
dA=diff(atan(real(y(:,3))./imag(y(:,3))));
delta = -dA./diff(t);
tnew = t(2:end) - diff(t)/2; % new vector "t" for delta
plot(tnew,delta)
Black points and curve is your original data y. Red points are positions where you calculate derivative
123.png
mohammad heydari
mohammad heydari 2019년 11월 9일
편집: mohammad heydari 2019년 11월 9일
Thanks for your reply and I apologize for the delay in replying.
I got the following figure
This figure is much more promising than the previous one. But it's still not accurate.What other conditions do you recommend?
I just don't understand t (2: end) and tnew. What does this mean and why should it?
Best regards
darova
darova 2019년 11월 9일
  • I just don't understand t (2: end) and tnew. What does this mean and why should it?
Because the actual postion of a derivative between points:
So to draw correctly derivatives you have to correct you original t vector
How your graph looks like if you zoom in?
mohammad heydari
mohammad heydari 2019년 11월 9일
How your graph looks like if you zoom in?
As I put it above.Zooming in does not make a difference.
darova
darova 2019년 11월 9일
Impossible. Can you attach the data?
Try:
ylim([-1 1]*2e-7)
I don't know why you don't get the graph you want. I think the problem is deeper than it seems
Results make more sense if plot like this:
plot(real(y(:,3)),imag(y(:,3)),'.-b')
mohammad heydari
mohammad heydari 2019년 11월 9일
편집: mohammad heydari 2019년 11월 9일
thanks alot for your help.
Trying to check again.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Data Distribution Plots에 대해 자세히 알아보기

질문:

2019년 11월 8일

편집:

2019년 11월 9일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by