Tag Archives: matlab
import txt file in matlab
I failed to import the attached txt which I need it to be read with the below function
which converts it into another data shape. I do not know what seems to be the problem. Any ideas?
function FBW = get_FBW(Ftable)
d = importdata(Ftable);
for i = 2:size(d.data,1) % do each row separately
rowdat = d.data(i,:);
rowdat = rowdat(~isnan(rowdat));
col = (rowdat(1:2:end-1));
val = rowdat(2:2:end);
nframes = col(end);
FBW(i-1,:) = zeros(1,nframes);
for j = 2:length(col)
if col(j) – col(j-1) >0
slope = (val(j) – val(j-1)) ./ (col(j) – col(j-1));
for k = 0:col(j)-col(j-1)
FBW(i-1, (col(j-1)+k)) = val((j-1)) + k*slope;
end
end
end
endI failed to import the attached txt which I need it to be read with the below function
which converts it into another data shape. I do not know what seems to be the problem. Any ideas?
function FBW = get_FBW(Ftable)
d = importdata(Ftable);
for i = 2:size(d.data,1) % do each row separately
rowdat = d.data(i,:);
rowdat = rowdat(~isnan(rowdat));
col = (rowdat(1:2:end-1));
val = rowdat(2:2:end);
nframes = col(end);
FBW(i-1,:) = zeros(1,nframes);
for j = 2:length(col)
if col(j) – col(j-1) >0
slope = (val(j) – val(j-1)) ./ (col(j) – col(j-1));
for k = 0:col(j)-col(j-1)
FBW(i-1, (col(j-1)+k)) = val((j-1)) + k*slope;
end
end
end
end I failed to import the attached txt which I need it to be read with the below function
which converts it into another data shape. I do not know what seems to be the problem. Any ideas?
function FBW = get_FBW(Ftable)
d = importdata(Ftable);
for i = 2:size(d.data,1) % do each row separately
rowdat = d.data(i,:);
rowdat = rowdat(~isnan(rowdat));
col = (rowdat(1:2:end-1));
val = rowdat(2:2:end);
nframes = col(end);
FBW(i-1,:) = zeros(1,nframes);
for j = 2:length(col)
if col(j) – col(j-1) >0
slope = (val(j) – val(j-1)) ./ (col(j) – col(j-1));
for k = 0:col(j)-col(j-1)
FBW(i-1, (col(j-1)+k)) = val((j-1)) + k*slope;
end
end
end
end import text as matrix MATLAB Answers — New Questions
In simulink for Tms320F28388D controller for cpu 1 and cpu 2 it is possible to generate the code but when i trying to generate code with cortex M4 i am unable to generate it
I tried and generate codes for cpu1 and cpu 2 but while i am trying to generate for M4 i am facing the issueI tried and generate codes for cpu1 and cpu 2 but while i am trying to generate for M4 i am facing the issue I tried and generate codes for cpu1 and cpu 2 but while i am trying to generate for M4 i am facing the issue nonlinear MATLAB Answers — New Questions
How to read and plot Rinex messages?
How to read and plot rinex messages like longitude, latitude, time, no.of SV(number of satellites) and GDOP from a raw file (obs/nav or ubx file) recorded/saved on my pc using matlab?How to read and plot rinex messages like longitude, latitude, time, no.of SV(number of satellites) and GDOP from a raw file (obs/nav or ubx file) recorded/saved on my pc using matlab? How to read and plot rinex messages like longitude, latitude, time, no.of SV(number of satellites) and GDOP from a raw file (obs/nav or ubx file) recorded/saved on my pc using matlab? read and plot rinex messages like longitude, latitude MATLAB Answers — New Questions
deal signal in simulink
You can see that my original signal is the yellow line in the picture, similar to a series of pulses. I want to process the original signal to look like the red in the picture, a ramp signal with a class period. After a peak, it immediately decreases to 0 and then linearly increases from 0 to a new peak
i use matlab function in simulink ,but can‘t work like i expect
my english is not that good ,if you have any question,please let me knowYou can see that my original signal is the yellow line in the picture, similar to a series of pulses. I want to process the original signal to look like the red in the picture, a ramp signal with a class period. After a peak, it immediately decreases to 0 and then linearly increases from 0 to a new peak
i use matlab function in simulink ,but can‘t work like i expect
my english is not that good ,if you have any question,please let me know You can see that my original signal is the yellow line in the picture, similar to a series of pulses. I want to process the original signal to look like the red in the picture, a ramp signal with a class period. After a peak, it immediately decreases to 0 and then linearly increases from 0 to a new peak
i use matlab function in simulink ,but can‘t work like i expect
my english is not that good ,if you have any question,please let me know simulink, signal processing MATLAB Answers — New Questions
How to simulate code in symbolic form?
o2 = [0, 0, 0]; % Origin for ain
ain = [26, 0, 0]; % Initial vector for ain
input_axis = [0, 1, 0]; % Axis of rotation for ain (y-axis)
theta1 = deg2rad(10); % Angle of rotation for ain in radians
% Rotation matrix function
rot_matrix = @(axis, theta) cos(theta) * eye(3) + …
sin(theta) * [0, -axis(3), axis(2); axis(3), 0, -axis(1); -axis(2), axis(1), 0] + …
(1 – cos(theta)) * (axis’ * axis);
% Compute the rotated vector for ain
a_rotated = rot_matrix(input_axis, theta1) * (ain’ – o2′) + o2′;
a_final = a_rotated’;
disp(norm(a_final));
cin=[122.95, -20, 0];
c_rotated= rot_matrix(input_axis, theta1) * (cin’ – o2′) + o2′;
naxis=[sin(theta1),0,cos(theta1)];
syms phi;
c_final_rotated=rot_matrix(naxis,phi)*(c_rotated-a_rotated)+a_rotated;
bin = [29.5, 30, 0];
o4 = [13.5, 30, 0]; % Origin for bin
output_axis = [0, 1, 0]; % Axis of rotation for bin (y-axis)
theta2 = deg2rad(10); % Angle of rotation for bin in radians
% Compute the rotated vector for bin
b1_rotated = rot_matrix(output_axis, theta2) * (bin’ – o4′) + o4′;
b1_final = b1_rotated’;
disp(norm(b1_final-o4));
coupler = c_final_rotated’-b1_final;
coupler = subs(coupler, conj(phi), phi);
syms t;
cos_phi = (1 – t^2) / (1 + t^2);
sin_phi = 2 * t / (1 + t^2);
% Substitute parametric forms into coupler components
coupler_parametric = subs(coupler, [cos(phi), sin(phi)], [cos_phi, sin_phi]);
% Display the parametric coupler
disp(‘Parametric form of coupler:’);
disp(coupler_parametric);
syms targetvalue % it might be 3.5 …
normsq = expand(sum(coupler_parametric.^2) – targetvalue^2);
normpoly = simplify(normsq*(t^2+1)^2);
vpa(expand(normpoly),4);
tsolve = solve(normpoly,t,’maxdegree’,4,’returnconditions’,true);
h=vpa(subs(tsolve.t,targetvalue, 106));
%disp(h);
real_solutions = h(imag(h) == 0);
disp(‘Real roots:’);
disp(real_solutions);
angles_rad = 2 * atan(real_solutions);
angles_deg = rad2deg(angles_rad);
% Display angles in degrees
disp(‘Angles in degrees before adjustment:’);
disp(angles_deg);
phi=double(angles_rad(2));
c1_position = double(rot_matrix(naxis,phi) * (c_rotated – a_rotated) + a_rotated);
p=(c1_position’-a_final)’;
%q=(c1_position’-b1_final)’;
angle=acosd(p(2)/norm(p));
disp(angle);
%%I want to run this code for symbolic variables including o2,ain,o4,bin,input_axis,output_axis,naxis,theta1,theta2.
can someone tell how can i do all above calculations in symbolic formo2 = [0, 0, 0]; % Origin for ain
ain = [26, 0, 0]; % Initial vector for ain
input_axis = [0, 1, 0]; % Axis of rotation for ain (y-axis)
theta1 = deg2rad(10); % Angle of rotation for ain in radians
% Rotation matrix function
rot_matrix = @(axis, theta) cos(theta) * eye(3) + …
sin(theta) * [0, -axis(3), axis(2); axis(3), 0, -axis(1); -axis(2), axis(1), 0] + …
(1 – cos(theta)) * (axis’ * axis);
% Compute the rotated vector for ain
a_rotated = rot_matrix(input_axis, theta1) * (ain’ – o2′) + o2′;
a_final = a_rotated’;
disp(norm(a_final));
cin=[122.95, -20, 0];
c_rotated= rot_matrix(input_axis, theta1) * (cin’ – o2′) + o2′;
naxis=[sin(theta1),0,cos(theta1)];
syms phi;
c_final_rotated=rot_matrix(naxis,phi)*(c_rotated-a_rotated)+a_rotated;
bin = [29.5, 30, 0];
o4 = [13.5, 30, 0]; % Origin for bin
output_axis = [0, 1, 0]; % Axis of rotation for bin (y-axis)
theta2 = deg2rad(10); % Angle of rotation for bin in radians
% Compute the rotated vector for bin
b1_rotated = rot_matrix(output_axis, theta2) * (bin’ – o4′) + o4′;
b1_final = b1_rotated’;
disp(norm(b1_final-o4));
coupler = c_final_rotated’-b1_final;
coupler = subs(coupler, conj(phi), phi);
syms t;
cos_phi = (1 – t^2) / (1 + t^2);
sin_phi = 2 * t / (1 + t^2);
% Substitute parametric forms into coupler components
coupler_parametric = subs(coupler, [cos(phi), sin(phi)], [cos_phi, sin_phi]);
% Display the parametric coupler
disp(‘Parametric form of coupler:’);
disp(coupler_parametric);
syms targetvalue % it might be 3.5 …
normsq = expand(sum(coupler_parametric.^2) – targetvalue^2);
normpoly = simplify(normsq*(t^2+1)^2);
vpa(expand(normpoly),4);
tsolve = solve(normpoly,t,’maxdegree’,4,’returnconditions’,true);
h=vpa(subs(tsolve.t,targetvalue, 106));
%disp(h);
real_solutions = h(imag(h) == 0);
disp(‘Real roots:’);
disp(real_solutions);
angles_rad = 2 * atan(real_solutions);
angles_deg = rad2deg(angles_rad);
% Display angles in degrees
disp(‘Angles in degrees before adjustment:’);
disp(angles_deg);
phi=double(angles_rad(2));
c1_position = double(rot_matrix(naxis,phi) * (c_rotated – a_rotated) + a_rotated);
p=(c1_position’-a_final)’;
%q=(c1_position’-b1_final)’;
angle=acosd(p(2)/norm(p));
disp(angle);
%%I want to run this code for symbolic variables including o2,ain,o4,bin,input_axis,output_axis,naxis,theta1,theta2.
can someone tell how can i do all above calculations in symbolic form o2 = [0, 0, 0]; % Origin for ain
ain = [26, 0, 0]; % Initial vector for ain
input_axis = [0, 1, 0]; % Axis of rotation for ain (y-axis)
theta1 = deg2rad(10); % Angle of rotation for ain in radians
% Rotation matrix function
rot_matrix = @(axis, theta) cos(theta) * eye(3) + …
sin(theta) * [0, -axis(3), axis(2); axis(3), 0, -axis(1); -axis(2), axis(1), 0] + …
(1 – cos(theta)) * (axis’ * axis);
% Compute the rotated vector for ain
a_rotated = rot_matrix(input_axis, theta1) * (ain’ – o2′) + o2′;
a_final = a_rotated’;
disp(norm(a_final));
cin=[122.95, -20, 0];
c_rotated= rot_matrix(input_axis, theta1) * (cin’ – o2′) + o2′;
naxis=[sin(theta1),0,cos(theta1)];
syms phi;
c_final_rotated=rot_matrix(naxis,phi)*(c_rotated-a_rotated)+a_rotated;
bin = [29.5, 30, 0];
o4 = [13.5, 30, 0]; % Origin for bin
output_axis = [0, 1, 0]; % Axis of rotation for bin (y-axis)
theta2 = deg2rad(10); % Angle of rotation for bin in radians
% Compute the rotated vector for bin
b1_rotated = rot_matrix(output_axis, theta2) * (bin’ – o4′) + o4′;
b1_final = b1_rotated’;
disp(norm(b1_final-o4));
coupler = c_final_rotated’-b1_final;
coupler = subs(coupler, conj(phi), phi);
syms t;
cos_phi = (1 – t^2) / (1 + t^2);
sin_phi = 2 * t / (1 + t^2);
% Substitute parametric forms into coupler components
coupler_parametric = subs(coupler, [cos(phi), sin(phi)], [cos_phi, sin_phi]);
% Display the parametric coupler
disp(‘Parametric form of coupler:’);
disp(coupler_parametric);
syms targetvalue % it might be 3.5 …
normsq = expand(sum(coupler_parametric.^2) – targetvalue^2);
normpoly = simplify(normsq*(t^2+1)^2);
vpa(expand(normpoly),4);
tsolve = solve(normpoly,t,’maxdegree’,4,’returnconditions’,true);
h=vpa(subs(tsolve.t,targetvalue, 106));
%disp(h);
real_solutions = h(imag(h) == 0);
disp(‘Real roots:’);
disp(real_solutions);
angles_rad = 2 * atan(real_solutions);
angles_deg = rad2deg(angles_rad);
% Display angles in degrees
disp(‘Angles in degrees before adjustment:’);
disp(angles_deg);
phi=double(angles_rad(2));
c1_position = double(rot_matrix(naxis,phi) * (c_rotated – a_rotated) + a_rotated);
p=(c1_position’-a_final)’;
%q=(c1_position’-b1_final)’;
angle=acosd(p(2)/norm(p));
disp(angle);
%%I want to run this code for symbolic variables including o2,ain,o4,bin,input_axis,output_axis,naxis,theta1,theta2.
can someone tell how can i do all above calculations in symbolic form #symbolic, #numerical MATLAB Answers — New Questions
Tricks to increase computational speed for D = (A + A*B).*C
Hello
I am working on computing the time evolution of a distribution. The distribution evolves as follows
g(t + dt) = (g(t) + dt*MAT*g(t)).*exp(-k*dt)
here g and k are column vector of size m*1, MAT is a square matrix of size m*m.
Say i have to evolve it "n" times, the way I have attempted my solution is
g = zeros(m,n)
g(:,1) = g0 % initalising
MAT, k = something pre calculated
for i = 1:1:n
g(:,i+1) = (g(:,i) + dt*MAT*g(:,i) ).*exp(-k*dt)
end
This is the conventional basic way I guess but it takes a long time. How else can I implement the evolution to make it faster.
For perspective the matrices are of the order of 10,000*10,000 and I would like to evolve it for another 5000 ish points
MAT is a mostly a sparse matrix. It has significant non zero diagonal elements and in a given row maybe 50-60 elements are non zero.
Grateful for any suggestions!Hello
I am working on computing the time evolution of a distribution. The distribution evolves as follows
g(t + dt) = (g(t) + dt*MAT*g(t)).*exp(-k*dt)
here g and k are column vector of size m*1, MAT is a square matrix of size m*m.
Say i have to evolve it "n" times, the way I have attempted my solution is
g = zeros(m,n)
g(:,1) = g0 % initalising
MAT, k = something pre calculated
for i = 1:1:n
g(:,i+1) = (g(:,i) + dt*MAT*g(:,i) ).*exp(-k*dt)
end
This is the conventional basic way I guess but it takes a long time. How else can I implement the evolution to make it faster.
For perspective the matrices are of the order of 10,000*10,000 and I would like to evolve it for another 5000 ish points
MAT is a mostly a sparse matrix. It has significant non zero diagonal elements and in a given row maybe 50-60 elements are non zero.
Grateful for any suggestions! Hello
I am working on computing the time evolution of a distribution. The distribution evolves as follows
g(t + dt) = (g(t) + dt*MAT*g(t)).*exp(-k*dt)
here g and k are column vector of size m*1, MAT is a square matrix of size m*m.
Say i have to evolve it "n" times, the way I have attempted my solution is
g = zeros(m,n)
g(:,1) = g0 % initalising
MAT, k = something pre calculated
for i = 1:1:n
g(:,i+1) = (g(:,i) + dt*MAT*g(:,i) ).*exp(-k*dt)
end
This is the conventional basic way I guess but it takes a long time. How else can I implement the evolution to make it faster.
For perspective the matrices are of the order of 10,000*10,000 and I would like to evolve it for another 5000 ish points
MAT is a mostly a sparse matrix. It has significant non zero diagonal elements and in a given row maybe 50-60 elements are non zero.
Grateful for any suggestions! matrix manipulation, ode, speed MATLAB Answers — New Questions
Trying to display text and variable in a single output line. I was initially trying to use disp then a matrix then fprintf
desired output:
The answer is: 800 %
I am trying to display this sentence in a single line of output in the command window. thankyoudesired output:
The answer is: 800 %
I am trying to display this sentence in a single line of output in the command window. thankyou desired output:
The answer is: 800 %
I am trying to display this sentence in a single line of output in the command window. thankyou sentence with variable, text output with varyable MATLAB Answers — New Questions
save tic toc in duration style
Hi all, I would like to save my computational time using tic toc but in format duration (i am trying to use duration but I don’t know how to save it).
Here is my code, so far I just get the time in second, and exact time give me number separate by comas. What I want to get is something like
1 hour 20 second saving in txt file. Do you guys can help me?
close all, clc, clear all
tStart = tic;
a=load(‘PE_201507_LPF7Hz_m5L3.dat’);
plot(a)
tEnd = toc(tStart)
tEnd = toc(tStart);
time_exec=datevec(tEnd./(60*60*24)) %change time in tictoc to
name=sprintf(‘exec_time.txt’)
dlmwrite (name,time_exec);Hi all, I would like to save my computational time using tic toc but in format duration (i am trying to use duration but I don’t know how to save it).
Here is my code, so far I just get the time in second, and exact time give me number separate by comas. What I want to get is something like
1 hour 20 second saving in txt file. Do you guys can help me?
close all, clc, clear all
tStart = tic;
a=load(‘PE_201507_LPF7Hz_m5L3.dat’);
plot(a)
tEnd = toc(tStart)
tEnd = toc(tStart);
time_exec=datevec(tEnd./(60*60*24)) %change time in tictoc to
name=sprintf(‘exec_time.txt’)
dlmwrite (name,time_exec); Hi all, I would like to save my computational time using tic toc but in format duration (i am trying to use duration but I don’t know how to save it).
Here is my code, so far I just get the time in second, and exact time give me number separate by comas. What I want to get is something like
1 hour 20 second saving in txt file. Do you guys can help me?
close all, clc, clear all
tStart = tic;
a=load(‘PE_201507_LPF7Hz_m5L3.dat’);
plot(a)
tEnd = toc(tStart)
tEnd = toc(tStart);
time_exec=datevec(tEnd./(60*60*24)) %change time in tictoc to
name=sprintf(‘exec_time.txt’)
dlmwrite (name,time_exec); tic toc, duration MATLAB Answers — New Questions
How to plot time from 0-24?
Dear All,
I have time :
Description:Time of GPS measurement (GPS seconds)
Data Type: double
Units: s
Valid Range: 0, 99999
How can I plot it from 0-24 UT and LT?
Best,
AraDear All,
I have time :
Description:Time of GPS measurement (GPS seconds)
Data Type: double
Units: s
Valid Range: 0, 99999
How can I plot it from 0-24 UT and LT?
Best,
Ara Dear All,
I have time :
Description:Time of GPS measurement (GPS seconds)
Data Type: double
Units: s
Valid Range: 0, 99999
How can I plot it from 0-24 UT and LT?
Best,
Ara time MATLAB Answers — New Questions
ODE15i DAE Warning:Failure at t=0.000000e+00. Unable to meet integration tolerances without reducing the step size below the smallest value allowed (0.000000e+00) at time t.
I’m solving a DAE using ode15i. I use the same syntaxs as the example of Robertson in Matlab help
https://it.mathworks.com/help/matlab/ref/ode15i.html?s_tid=doc_ta
The script is
h = 2/2; % h = L/n, L = 2, n = 2
y0 = [0;-2/h^2;1;2/h^2;1/h;-1/h;1/h;0];
yp0 = [
-2.0000
-0.0545
2.0000
0.0545
0
0
0
0];
%The initial conditions must be "consistent", meaning
% that f(T0,Y0,YP0)=0
% With y0 and yp0 given, Node_2(0,y0,yp0) = [0 … 0] so initial conditions
% are consistent
%opt = odeset(‘RelTol’,10^-3,’AbsTol’,10^-6,’Jacobian’,@Jac_Node_2); %Optionnal
tspan = [0 4];
[t,y] = ode15i(@Node_2,tspan,y0,yp0);%,opt);
And the odefunction is :
function res = Node_2(t,y,yp)
h = 2/2;
m = 25000*0.12^2/9.81;
res = [
(y(3) – y(1))/h – y(5);
(y(6)-y(5))/h – m*yp(2);
y(1);
yp(1) – y(2);
(y(8)-y(3))/h – y(6);
(y(7)-y(6))/h – m*yp(4);
yp(3) – y(4);
y(8)
];
end
The problem is that i get the following error :
Warning: Failure at t=0.000000e+00. Unable to meet integration tolerances without reducing the step size below the smallest value allowed (0.000000e+00) at time t.
I tried to change the relative and absolute error tolerance ‘RelTol’ and ‘AbsTol’ but nothing change for every possible values, i tried to provide the Jacobian matrix but again it gives the same error.
The initial conditions are consistent because Node_2(0,y0,yp0) = [0 … 0]
I would like to understand why there is this error so that i can find a solution, or i you spot the error in the code i would appreciate.I’m solving a DAE using ode15i. I use the same syntaxs as the example of Robertson in Matlab help
https://it.mathworks.com/help/matlab/ref/ode15i.html?s_tid=doc_ta
The script is
h = 2/2; % h = L/n, L = 2, n = 2
y0 = [0;-2/h^2;1;2/h^2;1/h;-1/h;1/h;0];
yp0 = [
-2.0000
-0.0545
2.0000
0.0545
0
0
0
0];
%The initial conditions must be "consistent", meaning
% that f(T0,Y0,YP0)=0
% With y0 and yp0 given, Node_2(0,y0,yp0) = [0 … 0] so initial conditions
% are consistent
%opt = odeset(‘RelTol’,10^-3,’AbsTol’,10^-6,’Jacobian’,@Jac_Node_2); %Optionnal
tspan = [0 4];
[t,y] = ode15i(@Node_2,tspan,y0,yp0);%,opt);
And the odefunction is :
function res = Node_2(t,y,yp)
h = 2/2;
m = 25000*0.12^2/9.81;
res = [
(y(3) – y(1))/h – y(5);
(y(6)-y(5))/h – m*yp(2);
y(1);
yp(1) – y(2);
(y(8)-y(3))/h – y(6);
(y(7)-y(6))/h – m*yp(4);
yp(3) – y(4);
y(8)
];
end
The problem is that i get the following error :
Warning: Failure at t=0.000000e+00. Unable to meet integration tolerances without reducing the step size below the smallest value allowed (0.000000e+00) at time t.
I tried to change the relative and absolute error tolerance ‘RelTol’ and ‘AbsTol’ but nothing change for every possible values, i tried to provide the Jacobian matrix but again it gives the same error.
The initial conditions are consistent because Node_2(0,y0,yp0) = [0 … 0]
I would like to understand why there is this error so that i can find a solution, or i you spot the error in the code i would appreciate. I’m solving a DAE using ode15i. I use the same syntaxs as the example of Robertson in Matlab help
https://it.mathworks.com/help/matlab/ref/ode15i.html?s_tid=doc_ta
The script is
h = 2/2; % h = L/n, L = 2, n = 2
y0 = [0;-2/h^2;1;2/h^2;1/h;-1/h;1/h;0];
yp0 = [
-2.0000
-0.0545
2.0000
0.0545
0
0
0
0];
%The initial conditions must be "consistent", meaning
% that f(T0,Y0,YP0)=0
% With y0 and yp0 given, Node_2(0,y0,yp0) = [0 … 0] so initial conditions
% are consistent
%opt = odeset(‘RelTol’,10^-3,’AbsTol’,10^-6,’Jacobian’,@Jac_Node_2); %Optionnal
tspan = [0 4];
[t,y] = ode15i(@Node_2,tspan,y0,yp0);%,opt);
And the odefunction is :
function res = Node_2(t,y,yp)
h = 2/2;
m = 25000*0.12^2/9.81;
res = [
(y(3) – y(1))/h – y(5);
(y(6)-y(5))/h – m*yp(2);
y(1);
yp(1) – y(2);
(y(8)-y(3))/h – y(6);
(y(7)-y(6))/h – m*yp(4);
yp(3) – y(4);
y(8)
];
end
The problem is that i get the following error :
Warning: Failure at t=0.000000e+00. Unable to meet integration tolerances without reducing the step size below the smallest value allowed (0.000000e+00) at time t.
I tried to change the relative and absolute error tolerance ‘RelTol’ and ‘AbsTol’ but nothing change for every possible values, i tried to provide the Jacobian matrix but again it gives the same error.
The initial conditions are consistent because Node_2(0,y0,yp0) = [0 … 0]
I would like to understand why there is this error so that i can find a solution, or i you spot the error in the code i would appreciate. ode15i, dae, error MATLAB Answers — New Questions
HDL Coder Mult + Add uses DSP48E1 + fabric
Matlab 2023a, HDL Coder ver4.1, and VC707 board. I tried to use Coder on dsp_subsys1 from: https://www.mathworks.com/help/hdlcoder/ug/modeling-efficient-multiplication-and-division-operations-for-fpga-targeting.html
But the workflow advisor always generates adder logic in the fabric, in addition to using a DSP slice. THe resets are configured as synchronous.
I’m basing my last sentence on this: https://www.mathworks.com/matlabcentral/answers/1727185-multiply-and-add-not-correctly-mapping-to-a-single-dsp-slice?s_tid=srchtitle
Help on this would be much appreciated…Matlab 2023a, HDL Coder ver4.1, and VC707 board. I tried to use Coder on dsp_subsys1 from: https://www.mathworks.com/help/hdlcoder/ug/modeling-efficient-multiplication-and-division-operations-for-fpga-targeting.html
But the workflow advisor always generates adder logic in the fabric, in addition to using a DSP slice. THe resets are configured as synchronous.
I’m basing my last sentence on this: https://www.mathworks.com/matlabcentral/answers/1727185-multiply-and-add-not-correctly-mapping-to-a-single-dsp-slice?s_tid=srchtitle
Help on this would be much appreciated… Matlab 2023a, HDL Coder ver4.1, and VC707 board. I tried to use Coder on dsp_subsys1 from: https://www.mathworks.com/help/hdlcoder/ug/modeling-efficient-multiplication-and-division-operations-for-fpga-targeting.html
But the workflow advisor always generates adder logic in the fabric, in addition to using a DSP slice. THe resets are configured as synchronous.
I’m basing my last sentence on this: https://www.mathworks.com/matlabcentral/answers/1727185-multiply-and-add-not-correctly-mapping-to-a-single-dsp-slice?s_tid=srchtitle
Help on this would be much appreciated… multiply add hdl coder MATLAB Answers — New Questions
Assignment of colors in a scatter plot
I have a problem when using the colorbar in my scatter plot. I have a variable called flag, that can have the value 0, 1 or 2 and is used to plot the color of my scatter plot. Furthermore I defined a custom colormap with three colors which are assigned to each flag. The problem that arrises now is that the wrong colors are used in my scatter plot.
For example: Flag 1 is coded with green but the scatter shows it in blue (used for flag 0). I tried to solve it by setting the limits manually but it still has a problem with correctly assigning the colors.
c = colorbar;
c.Ticks = [0, 1, 2];
clim([0 2]);
Heres an example shown:
The first tile shows both data together and the two tiles at the bottom seperately. The colors in the third tile (bottom right) are shown correctly but in the first tile they are shown in a different color.I have a problem when using the colorbar in my scatter plot. I have a variable called flag, that can have the value 0, 1 or 2 and is used to plot the color of my scatter plot. Furthermore I defined a custom colormap with three colors which are assigned to each flag. The problem that arrises now is that the wrong colors are used in my scatter plot.
For example: Flag 1 is coded with green but the scatter shows it in blue (used for flag 0). I tried to solve it by setting the limits manually but it still has a problem with correctly assigning the colors.
c = colorbar;
c.Ticks = [0, 1, 2];
clim([0 2]);
Heres an example shown:
The first tile shows both data together and the two tiles at the bottom seperately. The colors in the third tile (bottom right) are shown correctly but in the first tile they are shown in a different color. I have a problem when using the colorbar in my scatter plot. I have a variable called flag, that can have the value 0, 1 or 2 and is used to plot the color of my scatter plot. Furthermore I defined a custom colormap with three colors which are assigned to each flag. The problem that arrises now is that the wrong colors are used in my scatter plot.
For example: Flag 1 is coded with green but the scatter shows it in blue (used for flag 0). I tried to solve it by setting the limits manually but it still has a problem with correctly assigning the colors.
c = colorbar;
c.Ticks = [0, 1, 2];
clim([0 2]);
Heres an example shown:
The first tile shows both data together and the two tiles at the bottom seperately. The colors in the third tile (bottom right) are shown correctly but in the first tile they are shown in a different color. scatter plot, colorbar, assignment MATLAB Answers — New Questions
how do these function (separate functions)
clc; clear;
input=[‘MATLAB’];
for i= 1:length(input)
fprintf(input(1:i))
fprintf(‘n’)
end
%—————————————————————————————–
clc; clear;
for j=length(input):-1:2
fprintf(input(1:j-1))
fprintf(‘n’)
end
for x= 5:-1:1
msg=[];
for y = 1 : x
number= x*y;
msg = [msg number];
end
disp(msg);
end
%—————————————————————————————–
clc; clear;
height = 10;
for i= 1:height;
for j= i:height;
if mod(i,2)==0
fprintf ‘O’
else
fprintf ‘X’
end
end
fprintf ‘n’
endclc; clear;
input=[‘MATLAB’];
for i= 1:length(input)
fprintf(input(1:i))
fprintf(‘n’)
end
%—————————————————————————————–
clc; clear;
for j=length(input):-1:2
fprintf(input(1:j-1))
fprintf(‘n’)
end
for x= 5:-1:1
msg=[];
for y = 1 : x
number= x*y;
msg = [msg number];
end
disp(msg);
end
%—————————————————————————————–
clc; clear;
height = 10;
for i= 1:height;
for j= i:height;
if mod(i,2)==0
fprintf ‘O’
else
fprintf ‘X’
end
end
fprintf ‘n’
end clc; clear;
input=[‘MATLAB’];
for i= 1:length(input)
fprintf(input(1:i))
fprintf(‘n’)
end
%—————————————————————————————–
clc; clear;
for j=length(input):-1:2
fprintf(input(1:j-1))
fprintf(‘n’)
end
for x= 5:-1:1
msg=[];
for y = 1 : x
number= x*y;
msg = [msg number];
end
disp(msg);
end
%—————————————————————————————–
clc; clear;
height = 10;
for i= 1:height;
for j= i:height;
if mod(i,2)==0
fprintf ‘O’
else
fprintf ‘X’
end
end
fprintf ‘n’
end matlab MATLAB Answers — New Questions
Sorting an array of strings based on number pattern
I’m looking for an _efficient_ way to solve the following issue:
Typically I read out all files in a directory that match a certain pattern by means of the *dir* function:
dirFiles = dir(‘Common_*_common.ext’);
fileNames= {dirFiles.name};
This does what it is supposed to do and gives me a nice cell array with files I need to load.
However, the pattern is of the format _0, 1, 2, …, 8, 9, 10_ and the order of my *fileNames* comes out as _0, 10, 1, …, 7, 8, 9_. Unfortunately, changing the filenames themselves to _00, 01, 02, …, 10_ is not an option. Is there an efficient way to sort such arrays to the correct format?
Of course this should also hold when the sequence increases to larger numbers (e.g. _0, 1, 2, …, 29, 30, 31_).I’m looking for an _efficient_ way to solve the following issue:
Typically I read out all files in a directory that match a certain pattern by means of the *dir* function:
dirFiles = dir(‘Common_*_common.ext’);
fileNames= {dirFiles.name};
This does what it is supposed to do and gives me a nice cell array with files I need to load.
However, the pattern is of the format _0, 1, 2, …, 8, 9, 10_ and the order of my *fileNames* comes out as _0, 10, 1, …, 7, 8, 9_. Unfortunately, changing the filenames themselves to _00, 01, 02, …, 10_ is not an option. Is there an efficient way to sort such arrays to the correct format?
Of course this should also hold when the sequence increases to larger numbers (e.g. _0, 1, 2, …, 29, 30, 31_). I’m looking for an _efficient_ way to solve the following issue:
Typically I read out all files in a directory that match a certain pattern by means of the *dir* function:
dirFiles = dir(‘Common_*_common.ext’);
fileNames= {dirFiles.name};
This does what it is supposed to do and gives me a nice cell array with files I need to load.
However, the pattern is of the format _0, 1, 2, …, 8, 9, 10_ and the order of my *fileNames* comes out as _0, 10, 1, …, 7, 8, 9_. Unfortunately, changing the filenames themselves to _00, 01, 02, …, 10_ is not an option. Is there an efficient way to sort such arrays to the correct format?
Of course this should also hold when the sequence increases to larger numbers (e.g. _0, 1, 2, …, 29, 30, 31_). sort, strings, pattern, sequence, natsort, natsortfiles MATLAB Answers — New Questions
When saving a MATLAB figure with arrows and text as a PDF using print, the annotations are rescaled incorrectly, but using exportgraphics preserves the correct scaling
Hi everyone,
I’m encountering an issue when saving a figure in PDF format using MATLAB.
Here’s the context: I create a figure and plot some data using the following code (Part from the code comes from https://www.youtube.com/watch?v=wP3jjk1O18A&t=383s&ab_channel=PhysicsLaure):
hfig = figure; % save the figure handle in a variable
stairs(Results2Coal.Power_demand,’LineWidth’,1.5,’DisplayName’,’Load’,’Color’,colorsScheme(13,:));
hold on
stairs(Results2Coal.P_generated_coal_1,’LineWidth’,1.5,’DisplayName’,’G1′,’Color’,colorsScheme(2,:));
stairs(Results2Coal.P_generated_coal_2,’LineWidth’,1.5,’DisplayName’,’G2′,’Color’,colorsScheme(9,:));
plot(Results2Coal.P_max_coal_2*ones(1,24),’LineWidth’,0.5,’HandleVisibility’,’off’,’Color’,’k’,’LineStyle’,’–‘);
plot(Results2Coal.P_max_coal_1*ones(1,24),’LineWidth’,0.5,’HandleVisibility’,’off’,’Color’,’k’,’LineStyle’,’–‘);
xlabel(‘time $t$ (h)’)
ylabel(‘Power (MW)’)
legend(‘Location’, ‘northwest’,’FontSize’,12)
picturewidth = 20; % set this parameter and keep it forever
hw_ratio = 0.65; % feel free to play with this ratio
set(findall(hfig,’-property’,’FontSize’),’FontSize’,12) % adjust fontsize to your document
axis([0 25 1000 8000])
set(gca,’YTick’,[1000,1500, 2000,2685, 4000,5000,6000,7000, 8000]) % impose sensible tickmark locations
set(gca,’YTickLabel’,{‘1000’, ‘$G1_{min}$’,’2000′, ‘$G1_{max}$’,’4000′,’$G2_{max}$’,’6000′,’7000′,’8000′}) % put in informative labels at these tickmarks
set(gca,’XTick’,[0, 4,8,12, 16,20, 24]) % impose sensible tickmark locations
set(gca,’XTickLabel’,{’00:00′, ’04:00′, ’08:00′,’12:00′, ’16:00′, ’20:00′, ’24:00′}) %consistent tick interval
set(findall(hfig,’-property’,’Box’),’Box’,’off’) % optional
set(findall(hfig,’-property’,’Interpreter’),’Interpreter’,’latex’)
set(findall(hfig,’-property’,’TickLabelInterpreter’),’TickLabelInterpreter’,’latex’)
set(hfig,’Units’,’centimeters’,’Position’,[3 3 picturewidth hw_ratio*picturewidth])
pos = get(hfig,’Position’);
set(hfig,’PaperPositionMode’,’Auto’,’PaperUnits’,’centimeters’,’PaperSize’,[pos(3), pos(4)])
fname = [‘CommitmentProblem with two power plants’, datestr(now,’dd yyyy hhMM’)];
print(hfig,fname,’-dpdf’,’-vector’,’-fillpage’)
The problem arises when I use the figure menu to insert arrows and text (via Insert/Arrows and Insert/Text). These arrows and text appear correctly in the MATLAB figure window, but when I save the figure as a PDF, the arrows are rescaled and don’t match the original placement.
If I save the figure as a .png file, the scaling is correct, and the arrows and text maintain their placement. However, I prefer to use the .pdf format for my figures.
When I use:
exportgraphics(hfig, [fname, ‘.pdf’], ‘ContentType’, ‘vector’);
This method works and preserves the correct scaling of arrows and text in the PDF.
Although this solves my problem, I am still curious to understand why the print function does not work as expected.
Has anyone experienced a similar problem or have any insights on why print causes this scaling issue while exportgraphics does not?
Thanks in advance for your help!Hi everyone,
I’m encountering an issue when saving a figure in PDF format using MATLAB.
Here’s the context: I create a figure and plot some data using the following code (Part from the code comes from https://www.youtube.com/watch?v=wP3jjk1O18A&t=383s&ab_channel=PhysicsLaure):
hfig = figure; % save the figure handle in a variable
stairs(Results2Coal.Power_demand,’LineWidth’,1.5,’DisplayName’,’Load’,’Color’,colorsScheme(13,:));
hold on
stairs(Results2Coal.P_generated_coal_1,’LineWidth’,1.5,’DisplayName’,’G1′,’Color’,colorsScheme(2,:));
stairs(Results2Coal.P_generated_coal_2,’LineWidth’,1.5,’DisplayName’,’G2′,’Color’,colorsScheme(9,:));
plot(Results2Coal.P_max_coal_2*ones(1,24),’LineWidth’,0.5,’HandleVisibility’,’off’,’Color’,’k’,’LineStyle’,’–‘);
plot(Results2Coal.P_max_coal_1*ones(1,24),’LineWidth’,0.5,’HandleVisibility’,’off’,’Color’,’k’,’LineStyle’,’–‘);
xlabel(‘time $t$ (h)’)
ylabel(‘Power (MW)’)
legend(‘Location’, ‘northwest’,’FontSize’,12)
picturewidth = 20; % set this parameter and keep it forever
hw_ratio = 0.65; % feel free to play with this ratio
set(findall(hfig,’-property’,’FontSize’),’FontSize’,12) % adjust fontsize to your document
axis([0 25 1000 8000])
set(gca,’YTick’,[1000,1500, 2000,2685, 4000,5000,6000,7000, 8000]) % impose sensible tickmark locations
set(gca,’YTickLabel’,{‘1000’, ‘$G1_{min}$’,’2000′, ‘$G1_{max}$’,’4000′,’$G2_{max}$’,’6000′,’7000′,’8000′}) % put in informative labels at these tickmarks
set(gca,’XTick’,[0, 4,8,12, 16,20, 24]) % impose sensible tickmark locations
set(gca,’XTickLabel’,{’00:00′, ’04:00′, ’08:00′,’12:00′, ’16:00′, ’20:00′, ’24:00′}) %consistent tick interval
set(findall(hfig,’-property’,’Box’),’Box’,’off’) % optional
set(findall(hfig,’-property’,’Interpreter’),’Interpreter’,’latex’)
set(findall(hfig,’-property’,’TickLabelInterpreter’),’TickLabelInterpreter’,’latex’)
set(hfig,’Units’,’centimeters’,’Position’,[3 3 picturewidth hw_ratio*picturewidth])
pos = get(hfig,’Position’);
set(hfig,’PaperPositionMode’,’Auto’,’PaperUnits’,’centimeters’,’PaperSize’,[pos(3), pos(4)])
fname = [‘CommitmentProblem with two power plants’, datestr(now,’dd yyyy hhMM’)];
print(hfig,fname,’-dpdf’,’-vector’,’-fillpage’)
The problem arises when I use the figure menu to insert arrows and text (via Insert/Arrows and Insert/Text). These arrows and text appear correctly in the MATLAB figure window, but when I save the figure as a PDF, the arrows are rescaled and don’t match the original placement.
If I save the figure as a .png file, the scaling is correct, and the arrows and text maintain their placement. However, I prefer to use the .pdf format for my figures.
When I use:
exportgraphics(hfig, [fname, ‘.pdf’], ‘ContentType’, ‘vector’);
This method works and preserves the correct scaling of arrows and text in the PDF.
Although this solves my problem, I am still curious to understand why the print function does not work as expected.
Has anyone experienced a similar problem or have any insights on why print causes this scaling issue while exportgraphics does not?
Thanks in advance for your help! Hi everyone,
I’m encountering an issue when saving a figure in PDF format using MATLAB.
Here’s the context: I create a figure and plot some data using the following code (Part from the code comes from https://www.youtube.com/watch?v=wP3jjk1O18A&t=383s&ab_channel=PhysicsLaure):
hfig = figure; % save the figure handle in a variable
stairs(Results2Coal.Power_demand,’LineWidth’,1.5,’DisplayName’,’Load’,’Color’,colorsScheme(13,:));
hold on
stairs(Results2Coal.P_generated_coal_1,’LineWidth’,1.5,’DisplayName’,’G1′,’Color’,colorsScheme(2,:));
stairs(Results2Coal.P_generated_coal_2,’LineWidth’,1.5,’DisplayName’,’G2′,’Color’,colorsScheme(9,:));
plot(Results2Coal.P_max_coal_2*ones(1,24),’LineWidth’,0.5,’HandleVisibility’,’off’,’Color’,’k’,’LineStyle’,’–‘);
plot(Results2Coal.P_max_coal_1*ones(1,24),’LineWidth’,0.5,’HandleVisibility’,’off’,’Color’,’k’,’LineStyle’,’–‘);
xlabel(‘time $t$ (h)’)
ylabel(‘Power (MW)’)
legend(‘Location’, ‘northwest’,’FontSize’,12)
picturewidth = 20; % set this parameter and keep it forever
hw_ratio = 0.65; % feel free to play with this ratio
set(findall(hfig,’-property’,’FontSize’),’FontSize’,12) % adjust fontsize to your document
axis([0 25 1000 8000])
set(gca,’YTick’,[1000,1500, 2000,2685, 4000,5000,6000,7000, 8000]) % impose sensible tickmark locations
set(gca,’YTickLabel’,{‘1000’, ‘$G1_{min}$’,’2000′, ‘$G1_{max}$’,’4000′,’$G2_{max}$’,’6000′,’7000′,’8000′}) % put in informative labels at these tickmarks
set(gca,’XTick’,[0, 4,8,12, 16,20, 24]) % impose sensible tickmark locations
set(gca,’XTickLabel’,{’00:00′, ’04:00′, ’08:00′,’12:00′, ’16:00′, ’20:00′, ’24:00′}) %consistent tick interval
set(findall(hfig,’-property’,’Box’),’Box’,’off’) % optional
set(findall(hfig,’-property’,’Interpreter’),’Interpreter’,’latex’)
set(findall(hfig,’-property’,’TickLabelInterpreter’),’TickLabelInterpreter’,’latex’)
set(hfig,’Units’,’centimeters’,’Position’,[3 3 picturewidth hw_ratio*picturewidth])
pos = get(hfig,’Position’);
set(hfig,’PaperPositionMode’,’Auto’,’PaperUnits’,’centimeters’,’PaperSize’,[pos(3), pos(4)])
fname = [‘CommitmentProblem with two power plants’, datestr(now,’dd yyyy hhMM’)];
print(hfig,fname,’-dpdf’,’-vector’,’-fillpage’)
The problem arises when I use the figure menu to insert arrows and text (via Insert/Arrows and Insert/Text). These arrows and text appear correctly in the MATLAB figure window, but when I save the figure as a PDF, the arrows are rescaled and don’t match the original placement.
If I save the figure as a .png file, the scaling is correct, and the arrows and text maintain their placement. However, I prefer to use the .pdf format for my figures.
When I use:
exportgraphics(hfig, [fname, ‘.pdf’], ‘ContentType’, ‘vector’);
This method works and preserves the correct scaling of arrows and text in the PDF.
Although this solves my problem, I am still curious to understand why the print function does not work as expected.
Has anyone experienced a similar problem or have any insights on why print causes this scaling issue while exportgraphics does not?
Thanks in advance for your help! matlab, plotting, print, export, exportgraphics MATLAB Answers — New Questions
while i doing FFT analysis the following error is occurred
Warning: Error occurred while executing the listener callback for event InstanceCreated defined for class matlab.metadata.Class:
Invalid or deleted object.Warning: Error occurred while executing the listener callback for event InstanceCreated defined for class matlab.metadata.Class:
Invalid or deleted object. Warning: Error occurred while executing the listener callback for event InstanceCreated defined for class matlab.metadata.Class:
Invalid or deleted object. fft analysis error in 2024a version MATLAB Answers — New Questions
I want to find the centroid at a specific image
I want to find the centroid on the label of the wine bottle. After finding the centroid, I want to crop out the whole label image as it is my ROI.
Please, anyone can help me with the coding?I want to find the centroid on the label of the wine bottle. After finding the centroid, I want to crop out the whole label image as it is my ROI.
Please, anyone can help me with the coding? I want to find the centroid on the label of the wine bottle. After finding the centroid, I want to crop out the whole label image as it is my ROI.
Please, anyone can help me with the coding? image processing, digital image processing, centroid MATLAB Answers — New Questions
For loop for symbolic expressions
I need to create a symbolic matrix of symbolic functions, each of which has an expression consisting of constants and other matrices.
I need to run for loop or anything else that does my job, to generate a matrix of the symbolic variables.
how do i Do that?I need to create a symbolic matrix of symbolic functions, each of which has an expression consisting of constants and other matrices.
I need to run for loop or anything else that does my job, to generate a matrix of the symbolic variables.
how do i Do that? I need to create a symbolic matrix of symbolic functions, each of which has an expression consisting of constants and other matrices.
I need to run for loop or anything else that does my job, to generate a matrix of the symbolic variables.
how do i Do that? symbolic matrix creation using for loop MATLAB Answers — New Questions
Hello, I own PX4 cube orange+. I can not make motor for drone run with px4 PWM Output block with that PX4 cube orange+. but it works for PX4. I use Matlab 2024a. help please!
Post Content Post Content px4 cube orange +, matlab2024a MATLAB Answers — New Questions
Singularity Problem trying to Solve a higher order ODE with boundary conditions by bvp4c
Hi, i’m trying to replicate the numerical solution of a recent paper "A macroeconomic model with
Heterogeneous and financially constrained intermediaries. Wouters, R (2019)"
(https://www.econstor.eu/bitstream/10419/207747/1/1067667695.pdf) but after many runs and different
modifications i always get the following issue:
elbarnew= 0.25; %(JCSC) Un valor de salida, siguiendo el rango prob de L&W (0.65,1.66)/(0.57, 3.02)
qlbarnew = 0.05; %(JCSC) Azar corto plazo, escoger inferior frente a qinf
eubar = 3; %(JCSC) Máximo valor de busqueda de e
KK = 500;
solinitF= bvpinit(linspace(elbarnew,eubar,KK),@Finitwithproduction_rw);
solF = bvp4c(@Fvecwithproduction_rw,@Fbcwithproduction_rw,solinitF,options);
Error using bvp4c
Unable to solve the collocation equations — a singular Jacobian encountered.
The problem is to solve a nonlinear ODE of second order with boundary conditions (q2prime), that’s the equation (32) of the
appendix A.4 from the paper. That is an expression of exogeneous parameters, the prime derivative (qprime) and the function itself
(q). The aim goal is to find a density function q(e) (it’s a price, so q>0) with argument "e" (e>0). The boundary conditions
are qprime(e_)=0 and qprime(e^)=0, where e_ is a lower limit (e_>0) and e^ a higher limit. The functions are:
function yinit = Finitwithproduction_rw(x)
% —- This function is the initial guess of the ODE solution, in the form of y(x) —–
global qprime elbarnew qlbarnew eubar qinf
% Note: Finitwithproduction returns a linear interpolation of functions q(e)
% (JCSC), returns [q(e), q'(e)]
qprime = (qinf – qlbarnew)/(eubar-elbarnew);
yinit = [qlbarnew + qprime*x
qprime];
end
function res=Fbcwithproduction_rw(ya, yb);
%(JCSC) Boundary Limits. The conditions
%required by the author (q'(e_) = 0, q'(e^-) = 0)
global qlbarnew
res=[%ya(1)-qlbarnew
ya(1)
yb(1)-0];
end
function dh=Fvecwithproduction_rw(x,y)
%(JCSC, 07-02-2024) Wouters Model
% Entrada x: valor de e; y=[q(e), q'(e)]
% Salida [q'(e), q”(e)]
global k delta kappa A iota m lambda zeta phi rho theta …
sigma alpha_ti alpha_sb alpha_h i w sigma_r sigma_e …
rr qprime q q2prime eta
%(JCSC) Here x is e in the paper. y is a vector y(x) = [q(x), q'(x)]
q=y(1,:);
qprime=y(2,:);
i = (delta + (q-1)./kappa); %(JCSC, 040224)
w = q.*k; %(JCSC ok)
%alpha_h = min(1, ((x.*k)./((1-lambda).*w))); %(JCSC, 040224)
alpha_h = min((1-lambda), ((x.*k)./w)); %(JCSC, 040224)
alpha_ti = ((((1-phi).*alpha_h.*(1-lambda)).^(-1)).*(zeta*(1-(qprime/q).*x).*sigma + …
(qprime./q).*x.*phi)-(phi./(1-phi)))./(zeta.*(1-(qprime./q).*x).*sigma + (1-m).*(qprime./q).*x.*phi); %(JCSC, 270124 ok)
sigma_e = (x.*(((1-phi).*m.*alpha_ti – 1).*sigma + (phi./zeta)))./(1-(1-phi).*m.*alpha_ti.*x.*(qprime./q)); %(JCSC, revisado 040224)
sigma_r = sigma + (qprime./q).*sigma_e;
alpha_sb = 1./(zeta.*sigma_r); %(JCSC,ok)
f = A – delta + ((1 – q.^2)./(2.*kappa)); %(JCSC, nuevo modelo ajustado con la inclusión del empleo)
X1 = (1-phi).*m.*alpha_ti + phi.*alpha_sb; %(JCSC, revisado ok)
FF = (q./x) – X1.*qprime; %(JCSC, revisado ok)
G = kappa.*f.*FF + q.*((phi + m.*(1-phi)) – X1).*theta.*q.*qprime; %(JCSC, revisado, 270124)
rr = rho + theta.*(i-delta)-((0.5.*theta.*qprime.*qprime./(kappa.*f)).*(sigma_e.^2)) – …
0.5.*theta.*(theta+1).*((sigma-(q.*qprime.*sigma_e./(kappa.*f))).^2);
A0 = 0.5.*(sigma_e.^2) + ((qprime.*kappa.*f)./G).*(0.5.*X1.*(sigma_e.^2) – …
0.5.*theta.*(q.*q./kappa.*f).*(sigma.^2).*(m-phi.*m+phi-X1)).*((q./G).*(0.5.*theta.*q.*qprime.*X1.*(sigma_e.^2) + …
0.5.*theta.*q.*FF.*(sigma_e.^2)));
A1 = -q.*(eta+i-delta) + X1.*(-delta.*q+A.*(1-iota)) + q.*(m-m.*phi+phi-X1).*rr;
A2 = kappa.*f.*FF.*rr – theta.*q.*q.*qprime.*(-eta-i+delta) – theta.*q.*qprime.*X1.*(A.*(1-iota) – delta.*q);
q2prime = (1./A0).*(alpha_ti.*(sigma_r.^2)./q) – A.*(1-iota) + delta.*q – qprime.*(kappa.*f./G).*A1 + (q./G).*A2;
dh=[y(2,:)
q2prime];
end
In the paper, the author identified values of "e" between 0.65 and 1.66 but running this range
on my code it doesn’t work, so i had problems either identifiying the initial values or some equation inside
the Fvecwithproduction function, but i checked each one to avoid errors or anything else. The Fvecwithproduction
function just has the different equations required to get the equation (32) in the paper append.
From a numerical point of view, I would like to get some help or recommendation to establish the origin of the error, or some
help on matlab to find or explore initial values in this kind of exercises.
Thanks a lot
Juan Camilo,Hi, i’m trying to replicate the numerical solution of a recent paper "A macroeconomic model with
Heterogeneous and financially constrained intermediaries. Wouters, R (2019)"
(https://www.econstor.eu/bitstream/10419/207747/1/1067667695.pdf) but after many runs and different
modifications i always get the following issue:
elbarnew= 0.25; %(JCSC) Un valor de salida, siguiendo el rango prob de L&W (0.65,1.66)/(0.57, 3.02)
qlbarnew = 0.05; %(JCSC) Azar corto plazo, escoger inferior frente a qinf
eubar = 3; %(JCSC) Máximo valor de busqueda de e
KK = 500;
solinitF= bvpinit(linspace(elbarnew,eubar,KK),@Finitwithproduction_rw);
solF = bvp4c(@Fvecwithproduction_rw,@Fbcwithproduction_rw,solinitF,options);
Error using bvp4c
Unable to solve the collocation equations — a singular Jacobian encountered.
The problem is to solve a nonlinear ODE of second order with boundary conditions (q2prime), that’s the equation (32) of the
appendix A.4 from the paper. That is an expression of exogeneous parameters, the prime derivative (qprime) and the function itself
(q). The aim goal is to find a density function q(e) (it’s a price, so q>0) with argument "e" (e>0). The boundary conditions
are qprime(e_)=0 and qprime(e^)=0, where e_ is a lower limit (e_>0) and e^ a higher limit. The functions are:
function yinit = Finitwithproduction_rw(x)
% —- This function is the initial guess of the ODE solution, in the form of y(x) —–
global qprime elbarnew qlbarnew eubar qinf
% Note: Finitwithproduction returns a linear interpolation of functions q(e)
% (JCSC), returns [q(e), q'(e)]
qprime = (qinf – qlbarnew)/(eubar-elbarnew);
yinit = [qlbarnew + qprime*x
qprime];
end
function res=Fbcwithproduction_rw(ya, yb);
%(JCSC) Boundary Limits. The conditions
%required by the author (q'(e_) = 0, q'(e^-) = 0)
global qlbarnew
res=[%ya(1)-qlbarnew
ya(1)
yb(1)-0];
end
function dh=Fvecwithproduction_rw(x,y)
%(JCSC, 07-02-2024) Wouters Model
% Entrada x: valor de e; y=[q(e), q'(e)]
% Salida [q'(e), q”(e)]
global k delta kappa A iota m lambda zeta phi rho theta …
sigma alpha_ti alpha_sb alpha_h i w sigma_r sigma_e …
rr qprime q q2prime eta
%(JCSC) Here x is e in the paper. y is a vector y(x) = [q(x), q'(x)]
q=y(1,:);
qprime=y(2,:);
i = (delta + (q-1)./kappa); %(JCSC, 040224)
w = q.*k; %(JCSC ok)
%alpha_h = min(1, ((x.*k)./((1-lambda).*w))); %(JCSC, 040224)
alpha_h = min((1-lambda), ((x.*k)./w)); %(JCSC, 040224)
alpha_ti = ((((1-phi).*alpha_h.*(1-lambda)).^(-1)).*(zeta*(1-(qprime/q).*x).*sigma + …
(qprime./q).*x.*phi)-(phi./(1-phi)))./(zeta.*(1-(qprime./q).*x).*sigma + (1-m).*(qprime./q).*x.*phi); %(JCSC, 270124 ok)
sigma_e = (x.*(((1-phi).*m.*alpha_ti – 1).*sigma + (phi./zeta)))./(1-(1-phi).*m.*alpha_ti.*x.*(qprime./q)); %(JCSC, revisado 040224)
sigma_r = sigma + (qprime./q).*sigma_e;
alpha_sb = 1./(zeta.*sigma_r); %(JCSC,ok)
f = A – delta + ((1 – q.^2)./(2.*kappa)); %(JCSC, nuevo modelo ajustado con la inclusión del empleo)
X1 = (1-phi).*m.*alpha_ti + phi.*alpha_sb; %(JCSC, revisado ok)
FF = (q./x) – X1.*qprime; %(JCSC, revisado ok)
G = kappa.*f.*FF + q.*((phi + m.*(1-phi)) – X1).*theta.*q.*qprime; %(JCSC, revisado, 270124)
rr = rho + theta.*(i-delta)-((0.5.*theta.*qprime.*qprime./(kappa.*f)).*(sigma_e.^2)) – …
0.5.*theta.*(theta+1).*((sigma-(q.*qprime.*sigma_e./(kappa.*f))).^2);
A0 = 0.5.*(sigma_e.^2) + ((qprime.*kappa.*f)./G).*(0.5.*X1.*(sigma_e.^2) – …
0.5.*theta.*(q.*q./kappa.*f).*(sigma.^2).*(m-phi.*m+phi-X1)).*((q./G).*(0.5.*theta.*q.*qprime.*X1.*(sigma_e.^2) + …
0.5.*theta.*q.*FF.*(sigma_e.^2)));
A1 = -q.*(eta+i-delta) + X1.*(-delta.*q+A.*(1-iota)) + q.*(m-m.*phi+phi-X1).*rr;
A2 = kappa.*f.*FF.*rr – theta.*q.*q.*qprime.*(-eta-i+delta) – theta.*q.*qprime.*X1.*(A.*(1-iota) – delta.*q);
q2prime = (1./A0).*(alpha_ti.*(sigma_r.^2)./q) – A.*(1-iota) + delta.*q – qprime.*(kappa.*f./G).*A1 + (q./G).*A2;
dh=[y(2,:)
q2prime];
end
In the paper, the author identified values of "e" between 0.65 and 1.66 but running this range
on my code it doesn’t work, so i had problems either identifiying the initial values or some equation inside
the Fvecwithproduction function, but i checked each one to avoid errors or anything else. The Fvecwithproduction
function just has the different equations required to get the equation (32) in the paper append.
From a numerical point of view, I would like to get some help or recommendation to establish the origin of the error, or some
help on matlab to find or explore initial values in this kind of exercises.
Thanks a lot
Juan Camilo, Hi, i’m trying to replicate the numerical solution of a recent paper "A macroeconomic model with
Heterogeneous and financially constrained intermediaries. Wouters, R (2019)"
(https://www.econstor.eu/bitstream/10419/207747/1/1067667695.pdf) but after many runs and different
modifications i always get the following issue:
elbarnew= 0.25; %(JCSC) Un valor de salida, siguiendo el rango prob de L&W (0.65,1.66)/(0.57, 3.02)
qlbarnew = 0.05; %(JCSC) Azar corto plazo, escoger inferior frente a qinf
eubar = 3; %(JCSC) Máximo valor de busqueda de e
KK = 500;
solinitF= bvpinit(linspace(elbarnew,eubar,KK),@Finitwithproduction_rw);
solF = bvp4c(@Fvecwithproduction_rw,@Fbcwithproduction_rw,solinitF,options);
Error using bvp4c
Unable to solve the collocation equations — a singular Jacobian encountered.
The problem is to solve a nonlinear ODE of second order with boundary conditions (q2prime), that’s the equation (32) of the
appendix A.4 from the paper. That is an expression of exogeneous parameters, the prime derivative (qprime) and the function itself
(q). The aim goal is to find a density function q(e) (it’s a price, so q>0) with argument "e" (e>0). The boundary conditions
are qprime(e_)=0 and qprime(e^)=0, where e_ is a lower limit (e_>0) and e^ a higher limit. The functions are:
function yinit = Finitwithproduction_rw(x)
% —- This function is the initial guess of the ODE solution, in the form of y(x) —–
global qprime elbarnew qlbarnew eubar qinf
% Note: Finitwithproduction returns a linear interpolation of functions q(e)
% (JCSC), returns [q(e), q'(e)]
qprime = (qinf – qlbarnew)/(eubar-elbarnew);
yinit = [qlbarnew + qprime*x
qprime];
end
function res=Fbcwithproduction_rw(ya, yb);
%(JCSC) Boundary Limits. The conditions
%required by the author (q'(e_) = 0, q'(e^-) = 0)
global qlbarnew
res=[%ya(1)-qlbarnew
ya(1)
yb(1)-0];
end
function dh=Fvecwithproduction_rw(x,y)
%(JCSC, 07-02-2024) Wouters Model
% Entrada x: valor de e; y=[q(e), q'(e)]
% Salida [q'(e), q”(e)]
global k delta kappa A iota m lambda zeta phi rho theta …
sigma alpha_ti alpha_sb alpha_h i w sigma_r sigma_e …
rr qprime q q2prime eta
%(JCSC) Here x is e in the paper. y is a vector y(x) = [q(x), q'(x)]
q=y(1,:);
qprime=y(2,:);
i = (delta + (q-1)./kappa); %(JCSC, 040224)
w = q.*k; %(JCSC ok)
%alpha_h = min(1, ((x.*k)./((1-lambda).*w))); %(JCSC, 040224)
alpha_h = min((1-lambda), ((x.*k)./w)); %(JCSC, 040224)
alpha_ti = ((((1-phi).*alpha_h.*(1-lambda)).^(-1)).*(zeta*(1-(qprime/q).*x).*sigma + …
(qprime./q).*x.*phi)-(phi./(1-phi)))./(zeta.*(1-(qprime./q).*x).*sigma + (1-m).*(qprime./q).*x.*phi); %(JCSC, 270124 ok)
sigma_e = (x.*(((1-phi).*m.*alpha_ti – 1).*sigma + (phi./zeta)))./(1-(1-phi).*m.*alpha_ti.*x.*(qprime./q)); %(JCSC, revisado 040224)
sigma_r = sigma + (qprime./q).*sigma_e;
alpha_sb = 1./(zeta.*sigma_r); %(JCSC,ok)
f = A – delta + ((1 – q.^2)./(2.*kappa)); %(JCSC, nuevo modelo ajustado con la inclusión del empleo)
X1 = (1-phi).*m.*alpha_ti + phi.*alpha_sb; %(JCSC, revisado ok)
FF = (q./x) – X1.*qprime; %(JCSC, revisado ok)
G = kappa.*f.*FF + q.*((phi + m.*(1-phi)) – X1).*theta.*q.*qprime; %(JCSC, revisado, 270124)
rr = rho + theta.*(i-delta)-((0.5.*theta.*qprime.*qprime./(kappa.*f)).*(sigma_e.^2)) – …
0.5.*theta.*(theta+1).*((sigma-(q.*qprime.*sigma_e./(kappa.*f))).^2);
A0 = 0.5.*(sigma_e.^2) + ((qprime.*kappa.*f)./G).*(0.5.*X1.*(sigma_e.^2) – …
0.5.*theta.*(q.*q./kappa.*f).*(sigma.^2).*(m-phi.*m+phi-X1)).*((q./G).*(0.5.*theta.*q.*qprime.*X1.*(sigma_e.^2) + …
0.5.*theta.*q.*FF.*(sigma_e.^2)));
A1 = -q.*(eta+i-delta) + X1.*(-delta.*q+A.*(1-iota)) + q.*(m-m.*phi+phi-X1).*rr;
A2 = kappa.*f.*FF.*rr – theta.*q.*q.*qprime.*(-eta-i+delta) – theta.*q.*qprime.*X1.*(A.*(1-iota) – delta.*q);
q2prime = (1./A0).*(alpha_ti.*(sigma_r.^2)./q) – A.*(1-iota) + delta.*q – qprime.*(kappa.*f./G).*A1 + (q./G).*A2;
dh=[y(2,:)
q2prime];
end
In the paper, the author identified values of "e" between 0.65 and 1.66 but running this range
on my code it doesn’t work, so i had problems either identifiying the initial values or some equation inside
the Fvecwithproduction function, but i checked each one to avoid errors or anything else. The Fvecwithproduction
function just has the different equations required to get the equation (32) in the paper append.
From a numerical point of view, I would like to get some help or recommendation to establish the origin of the error, or some
help on matlab to find or explore initial values in this kind of exercises.
Thanks a lot
Juan Camilo, doe, ordinary differential equations, singularity, initial values ode MATLAB Answers — New Questions