Tag Archives: matlab
uifigure() laggy with multiple axes, figure() does not support scrollable components
I made an interface to display data from multiple measurement channels. It’s using a Grid Layout Manager, so the first column with fixed pixel width contains channel options, and the second column with "1x" width has axes displaying data. It is Y-scrollable so it can display many channels no matter the window size.
But it gets laggy and possibly unusable when displaying just 10 channels. But I actually found that displaying the same amount of channels in a figure() window is not laggy at all.
But figure() does not support Grid Layout Manager, nor scrollable uipanel…
nb_points = 50e3;
nb_linesperaxes = 1;
nb_axes = 15;
fig = figure("Name","figure()");
fig_ax = arrayfun(@(k)axes(fig,"OuterPosition",[0,1-k/nb_axes,1,1/nb_axes]),…
1:nb_axes);
arrayfun(@(ax)plot(ax,linspace(0,1,nb_points),randn(nb_points,nb_linesperaxes)),…
fig_ax,’UniformOutput’,false);
linkaxes(fig_ax,’x’)
zoom(fig_ax(1),’xon’)
pan(fig_ax(2),’xon’)
uifig = uifigure("Name","uifigure()");
uifig_ax = arrayfun(@(k)axes(uifig,"OuterPosition",[0,1-k/nb_axes,1,1/nb_axes]),…
1:nb_axes);
arrayfun(@(ax)plot(ax,linspace(0,1,nb_points),randn(nb_points,nb_linesperaxes)),…
uifig_ax,’UniformOutput’,false);
linkaxes(uifig_ax,’x’)
zoom(uifig_ax(1),’xon’)
pan(uifig_ax(2),’xon’)
The figure() window works wells, whereas the uifigure() window is laggy. Once compiled as app, it’s even unusable on some not-too-old computers.
Is there an alternative to Grid Layout Manager or scrollable Panel for figure() windows ?
Is there any way to prevent uifigure() window being this laggy ?I made an interface to display data from multiple measurement channels. It’s using a Grid Layout Manager, so the first column with fixed pixel width contains channel options, and the second column with "1x" width has axes displaying data. It is Y-scrollable so it can display many channels no matter the window size.
But it gets laggy and possibly unusable when displaying just 10 channels. But I actually found that displaying the same amount of channels in a figure() window is not laggy at all.
But figure() does not support Grid Layout Manager, nor scrollable uipanel…
nb_points = 50e3;
nb_linesperaxes = 1;
nb_axes = 15;
fig = figure("Name","figure()");
fig_ax = arrayfun(@(k)axes(fig,"OuterPosition",[0,1-k/nb_axes,1,1/nb_axes]),…
1:nb_axes);
arrayfun(@(ax)plot(ax,linspace(0,1,nb_points),randn(nb_points,nb_linesperaxes)),…
fig_ax,’UniformOutput’,false);
linkaxes(fig_ax,’x’)
zoom(fig_ax(1),’xon’)
pan(fig_ax(2),’xon’)
uifig = uifigure("Name","uifigure()");
uifig_ax = arrayfun(@(k)axes(uifig,"OuterPosition",[0,1-k/nb_axes,1,1/nb_axes]),…
1:nb_axes);
arrayfun(@(ax)plot(ax,linspace(0,1,nb_points),randn(nb_points,nb_linesperaxes)),…
uifig_ax,’UniformOutput’,false);
linkaxes(uifig_ax,’x’)
zoom(uifig_ax(1),’xon’)
pan(uifig_ax(2),’xon’)
The figure() window works wells, whereas the uifigure() window is laggy. Once compiled as app, it’s even unusable on some not-too-old computers.
Is there an alternative to Grid Layout Manager or scrollable Panel for figure() windows ?
Is there any way to prevent uifigure() window being this laggy ? I made an interface to display data from multiple measurement channels. It’s using a Grid Layout Manager, so the first column with fixed pixel width contains channel options, and the second column with "1x" width has axes displaying data. It is Y-scrollable so it can display many channels no matter the window size.
But it gets laggy and possibly unusable when displaying just 10 channels. But I actually found that displaying the same amount of channels in a figure() window is not laggy at all.
But figure() does not support Grid Layout Manager, nor scrollable uipanel…
nb_points = 50e3;
nb_linesperaxes = 1;
nb_axes = 15;
fig = figure("Name","figure()");
fig_ax = arrayfun(@(k)axes(fig,"OuterPosition",[0,1-k/nb_axes,1,1/nb_axes]),…
1:nb_axes);
arrayfun(@(ax)plot(ax,linspace(0,1,nb_points),randn(nb_points,nb_linesperaxes)),…
fig_ax,’UniformOutput’,false);
linkaxes(fig_ax,’x’)
zoom(fig_ax(1),’xon’)
pan(fig_ax(2),’xon’)
uifig = uifigure("Name","uifigure()");
uifig_ax = arrayfun(@(k)axes(uifig,"OuterPosition",[0,1-k/nb_axes,1,1/nb_axes]),…
1:nb_axes);
arrayfun(@(ax)plot(ax,linspace(0,1,nb_points),randn(nb_points,nb_linesperaxes)),…
uifig_ax,’UniformOutput’,false);
linkaxes(uifig_ax,’x’)
zoom(uifig_ax(1),’xon’)
pan(uifig_ax(2),’xon’)
The figure() window works wells, whereas the uifigure() window is laggy. Once compiled as app, it’s even unusable on some not-too-old computers.
Is there an alternative to Grid Layout Manager or scrollable Panel for figure() windows ?
Is there any way to prevent uifigure() window being this laggy ? figure, uifigure, performance, laggy, scrollable, grid layout manager MATLAB Answers — New Questions
MATLAB Coder: Why am I receiving Invalid MEX-file error when trying to load a TensorFlowLite model with loadTFLiteModel after upgrading to Update 1 of R2024a release?
I’m using MATLAB Coder and I upgrade to Update 1 of R2024a release. When I try to use the loadTFLiteModel API using the Deep Learning Toolbox Interface for TensorFlow Lite support package, I encounter a strange error (Invalid MEX-file).
What does this error message mean?I’m using MATLAB Coder and I upgrade to Update 1 of R2024a release. When I try to use the loadTFLiteModel API using the Deep Learning Toolbox Interface for TensorFlow Lite support package, I encounter a strange error (Invalid MEX-file).
What does this error message mean? I’m using MATLAB Coder and I upgrade to Update 1 of R2024a release. When I try to use the loadTFLiteModel API using the Deep Learning Toolbox Interface for TensorFlow Lite support package, I encounter a strange error (Invalid MEX-file).
What does this error message mean? neural network, deep learning, matlab coder, code generation, tensorflow, tensorflow-lite, coder-tips MATLAB Answers — New Questions
Unable to run Simulink simulation
I used FilterDesigner to create a banpass filter. I have imported it in Simulink and connected to a chirp block and a spectrum analyzer.
I have quantized the filter inputs and outputs. When I try to simulate, I get the following error:
Expected a GP/Channel-In block to be connected to an input pin in [bandpass3_bandpass3], but instead found block ["Input Quantizer"].I used FilterDesigner to create a banpass filter. I have imported it in Simulink and connected to a chirp block and a spectrum analyzer.
I have quantized the filter inputs and outputs. When I try to simulate, I get the following error:
Expected a GP/Channel-In block to be connected to an input pin in [bandpass3_bandpass3], but instead found block ["Input Quantizer"]. I used FilterDesigner to create a banpass filter. I have imported it in Simulink and connected to a chirp block and a spectrum analyzer.
I have quantized the filter inputs and outputs. When I try to simulate, I get the following error:
Expected a GP/Channel-In block to be connected to an input pin in [bandpass3_bandpass3], but instead found block ["Input Quantizer"]. quantization, filter MATLAB Answers — New Questions
which difference scheme is used in pdepe explicit, implicit, three-layer or symmetric?
which difference scheme is used in pdepe explicit, implicit, three-layer or symmetric? I was asked a question during the course work defense , but I can ‘t find the answer anywhere.which difference scheme is used in pdepe explicit, implicit, three-layer or symmetric? I was asked a question during the course work defense , but I can ‘t find the answer anywhere. which difference scheme is used in pdepe explicit, implicit, three-layer or symmetric? I was asked a question during the course work defense , but I can ‘t find the answer anywhere. difference scheme, pdepe MATLAB Answers — New Questions
How to filter rows from excel in matlab
Hi, I am working on a project and I need this small help. I am currently observing the average speed for cars during weekdays and weekends. Now I have an excel sheet and imported all of the data as column vectors, observation number, time, date, day of the week, average speed of a car, that sort of thing. Now here is where I am stuck. I need to classify or lets say filter all the observations as either weekday or weekend refer to the screenshot for how the excel looks like. so how can I classify the observation as a weekday or weekendHi, I am working on a project and I need this small help. I am currently observing the average speed for cars during weekdays and weekends. Now I have an excel sheet and imported all of the data as column vectors, observation number, time, date, day of the week, average speed of a car, that sort of thing. Now here is where I am stuck. I need to classify or lets say filter all the observations as either weekday or weekend refer to the screenshot for how the excel looks like. so how can I classify the observation as a weekday or weekend Hi, I am working on a project and I need this small help. I am currently observing the average speed for cars during weekdays and weekends. Now I have an excel sheet and imported all of the data as column vectors, observation number, time, date, day of the week, average speed of a car, that sort of thing. Now here is where I am stuck. I need to classify or lets say filter all the observations as either weekday or weekend refer to the screenshot for how the excel looks like. so how can I classify the observation as a weekday or weekend excel, importing excel data, statistics MATLAB Answers — New Questions
Interpolation of matrices with data points having changing derivative
Dear all,
I am trying to define a spline for a set of data whose derivative goes to zero after a certain set of time. Then I have to use this spline for interpolation in a for loop using ppval. But the problem is that in reality the derivative of the spline approaches to zero but the defined spline goes on increasing. At the start both values are matching, the actual and the spline but at larger values the deviation is greater.
In actual scenario, at approximately 20 value at the x axis, the y axis value keeps on increasing, but after that the y value remain approximately constant, even if x-axis value goes to infinity.
Thank you for your response in advance.
RegardsDear all,
I am trying to define a spline for a set of data whose derivative goes to zero after a certain set of time. Then I have to use this spline for interpolation in a for loop using ppval. But the problem is that in reality the derivative of the spline approaches to zero but the defined spline goes on increasing. At the start both values are matching, the actual and the spline but at larger values the deviation is greater.
In actual scenario, at approximately 20 value at the x axis, the y axis value keeps on increasing, but after that the y value remain approximately constant, even if x-axis value goes to infinity.
Thank you for your response in advance.
Regards Dear all,
I am trying to define a spline for a set of data whose derivative goes to zero after a certain set of time. Then I have to use this spline for interpolation in a for loop using ppval. But the problem is that in reality the derivative of the spline approaches to zero but the defined spline goes on increasing. At the start both values are matching, the actual and the spline but at larger values the deviation is greater.
In actual scenario, at approximately 20 value at the x axis, the y axis value keeps on increasing, but after that the y value remain approximately constant, even if x-axis value goes to infinity.
Thank you for your response in advance.
Regards interpolation, matlab, spline MATLAB Answers — New Questions
If Else problem Valid_date code.
Write a function called valid_date that takes three positive integer scalar inputs year, month, day. If these three represent a valid date, return a logical true, otherwise false. The name of the output argument is valid. If any of the inputs is not a positive integer scalar, return false as well. Note that every year that is exactly divisible by 4 is a leap year, except for years that are exactly divisible by 100. However, years that are exactly divisible by 400 are also leap years. For example, the year 1900 was not leap year, but the year 2000 was. Note that your solution must not contain any of the date related built-in MATLAB functions.
So ive seen other peoples code and ive been trying to get it on my own but to no luck fails all test but non-scalar and random non-leap years
function [valid] = valid_date(year, month, day);
leap_year = false;
valid = true;
if nargin ~= 3
valid = false;
else
end
if isscalar(year) && isscalar(month) && isscalar(day)
%%if isinteger(year) && isinteger(month) && isinteger(day)
if (year>=0) && (13>month>0) && (32>day>0)
%%fix(year), fix(month), fix(day)
if month == 2 && day == 29
leap_year = true;
elseif rem(year,400) == 0
leap_year = true;
elseif rem(year,4) == 0 && rem(year,100) ~= 0
leap_year = true;
else
leap_year = false;
end
if month ~= 1 || month ~= 3 || month ~= 5 || month ~= 7 || month ~= 9 month ~= 12 && day == 31
valid = false;
elseif month == 2 && day > 29
valid = false;
end
else
valid = false;
end
else
valid = false;
endWrite a function called valid_date that takes three positive integer scalar inputs year, month, day. If these three represent a valid date, return a logical true, otherwise false. The name of the output argument is valid. If any of the inputs is not a positive integer scalar, return false as well. Note that every year that is exactly divisible by 4 is a leap year, except for years that are exactly divisible by 100. However, years that are exactly divisible by 400 are also leap years. For example, the year 1900 was not leap year, but the year 2000 was. Note that your solution must not contain any of the date related built-in MATLAB functions.
So ive seen other peoples code and ive been trying to get it on my own but to no luck fails all test but non-scalar and random non-leap years
function [valid] = valid_date(year, month, day);
leap_year = false;
valid = true;
if nargin ~= 3
valid = false;
else
end
if isscalar(year) && isscalar(month) && isscalar(day)
%%if isinteger(year) && isinteger(month) && isinteger(day)
if (year>=0) && (13>month>0) && (32>day>0)
%%fix(year), fix(month), fix(day)
if month == 2 && day == 29
leap_year = true;
elseif rem(year,400) == 0
leap_year = true;
elseif rem(year,4) == 0 && rem(year,100) ~= 0
leap_year = true;
else
leap_year = false;
end
if month ~= 1 || month ~= 3 || month ~= 5 || month ~= 7 || month ~= 9 month ~= 12 && day == 31
valid = false;
elseif month == 2 && day > 29
valid = false;
end
else
valid = false;
end
else
valid = false;
end Write a function called valid_date that takes three positive integer scalar inputs year, month, day. If these three represent a valid date, return a logical true, otherwise false. The name of the output argument is valid. If any of the inputs is not a positive integer scalar, return false as well. Note that every year that is exactly divisible by 4 is a leap year, except for years that are exactly divisible by 100. However, years that are exactly divisible by 400 are also leap years. For example, the year 1900 was not leap year, but the year 2000 was. Note that your solution must not contain any of the date related built-in MATLAB functions.
So ive seen other peoples code and ive been trying to get it on my own but to no luck fails all test but non-scalar and random non-leap years
function [valid] = valid_date(year, month, day);
leap_year = false;
valid = true;
if nargin ~= 3
valid = false;
else
end
if isscalar(year) && isscalar(month) && isscalar(day)
%%if isinteger(year) && isinteger(month) && isinteger(day)
if (year>=0) && (13>month>0) && (32>day>0)
%%fix(year), fix(month), fix(day)
if month == 2 && day == 29
leap_year = true;
elseif rem(year,400) == 0
leap_year = true;
elseif rem(year,4) == 0 && rem(year,100) ~= 0
leap_year = true;
else
leap_year = false;
end
if month ~= 1 || month ~= 3 || month ~= 5 || month ~= 7 || month ~= 9 month ~= 12 && day == 31
valid = false;
elseif month == 2 && day > 29
valid = false;
end
else
valid = false;
end
else
valid = false;
end if statement MATLAB Answers — New Questions
MATLAB coder-Check for Run-Time Issues,the output of test file is totally wrong compared with the original MATLAB code output
Use MATLAB coder to convert MATLAB code into C code suitable for Xilinx ARM development. However, when the conversion process proceeded to the MEX function check step, I found that the output of the test file using MEX was inconsistent with the output of the MATLAB code running directly. Here are the results running directly in MATLAB:
As the official tutorial shows, I split the code that needs to be translated into a data file (.mat), a separately encapsulated function file (.m), and a script that calls this function file (.m). The check was then performed in MATLAB coder, but the results were inconsistent
Here is the code in the test file to load the data and call the function. I can’t figure out why the results of the test file were incorrect when all the checks passed. Perhaps the converted code itself is not equivalent?
Note: The drawing of the final result is directly related to RY_final, and the built-in functions used by the converted function such as eig, sort, etc. should also support the conversion (otherwise it will not pass the check).
clear all
load(‘Data_02.mat’);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%R:core algorithm
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[RNb_cub ,RYNb_cub, RY_final] = …
CoreFunc(PSub_mat, SDoa, var_n, M, N, J, K, Bin, Sample_vec, Time, Array, c, f_vec, EigVecNL_0);
……some compute and Plot the resultUse MATLAB coder to convert MATLAB code into C code suitable for Xilinx ARM development. However, when the conversion process proceeded to the MEX function check step, I found that the output of the test file using MEX was inconsistent with the output of the MATLAB code running directly. Here are the results running directly in MATLAB:
As the official tutorial shows, I split the code that needs to be translated into a data file (.mat), a separately encapsulated function file (.m), and a script that calls this function file (.m). The check was then performed in MATLAB coder, but the results were inconsistent
Here is the code in the test file to load the data and call the function. I can’t figure out why the results of the test file were incorrect when all the checks passed. Perhaps the converted code itself is not equivalent?
Note: The drawing of the final result is directly related to RY_final, and the built-in functions used by the converted function such as eig, sort, etc. should also support the conversion (otherwise it will not pass the check).
clear all
load(‘Data_02.mat’);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%R:core algorithm
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[RNb_cub ,RYNb_cub, RY_final] = …
CoreFunc(PSub_mat, SDoa, var_n, M, N, J, K, Bin, Sample_vec, Time, Array, c, f_vec, EigVecNL_0);
……some compute and Plot the result Use MATLAB coder to convert MATLAB code into C code suitable for Xilinx ARM development. However, when the conversion process proceeded to the MEX function check step, I found that the output of the test file using MEX was inconsistent with the output of the MATLAB code running directly. Here are the results running directly in MATLAB:
As the official tutorial shows, I split the code that needs to be translated into a data file (.mat), a separately encapsulated function file (.m), and a script that calls this function file (.m). The check was then performed in MATLAB coder, but the results were inconsistent
Here is the code in the test file to load the data and call the function. I can’t figure out why the results of the test file were incorrect when all the checks passed. Perhaps the converted code itself is not equivalent?
Note: The drawing of the final result is directly related to RY_final, and the built-in functions used by the converted function such as eig, sort, etc. should also support the conversion (otherwise it will not pass the check).
clear all
load(‘Data_02.mat’);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%R:core algorithm
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[RNb_cub ,RYNb_cub, RY_final] = …
CoreFunc(PSub_mat, SDoa, var_n, M, N, J, K, Bin, Sample_vec, Time, Array, c, f_vec, EigVecNL_0);
……some compute and Plot the result code generation, c convert MATLAB Answers — New Questions
Create “n” non-lineal equations in a loop and solved by Fsolve
Hi, guys…. I’ve been trying to create euqaitons to solve a non-lineal system in a loop. But, the number of functions to be created depends on the user (2<n<24)…. Turbine seal gas leak though labyrinth.
For example, when n=5 the loop should create 5 functions with 5 unknown variables (x1, x2, x3, x4, x5) and then, the system is solved by fsolve.
Here is my script:
All below variables are known:
n=;
pi=;
p0=;
pn=;
Ag=;
k1=;
k2=;
k3=;
k4=;
The equations:
—————————————————-
F(1)= (k1/p0^2)*(x(n)*(1/(pi*Ag))*(pi+2-5*((p0/x(i))^k4-1)+2*((p0/x(1))^k4-1)^2))^2-(x(i)/p0)^k2+(x(i)/p0)^k3];%…………. 1st equation
F(n)= [k1/(x(n-1))^2)*(x(n)*(1/(pi*Ag))*(pi+2-5*((x(n-1)/pn)^k4-1)+2*((x(n-)/pn)^k4-1)^2))^2-(pn/x(n-1))^k2+(pn/x(n-1))^k3]; %…………. “n” equation
%…………. for remained equations
For i=2:n-1
F(i) = (k1/(x(i))^2)*(x(n)*(1/(pi*Ag))*(pi+2-*((x(i)/x(i+1))^k4-1)+2*((x(i)/x(i+1))^k4-1)^2))^2- (x(i+1)/x(i))^k2+(x(i+1)/x(i))^k3;
End
————–
factor=(p0-pn)/n;
for i=1:(n-1)
x0(i)=p0-factor*i;
end
x0(n)=0;
——————-
options=optimoptions(‘fsolve’,’Display’,’iter’);
[x11,fval]=fsolve(F,x0,options)
Any help will be appreciated guys
Thanks in advance.Hi, guys…. I’ve been trying to create euqaitons to solve a non-lineal system in a loop. But, the number of functions to be created depends on the user (2<n<24)…. Turbine seal gas leak though labyrinth.
For example, when n=5 the loop should create 5 functions with 5 unknown variables (x1, x2, x3, x4, x5) and then, the system is solved by fsolve.
Here is my script:
All below variables are known:
n=;
pi=;
p0=;
pn=;
Ag=;
k1=;
k2=;
k3=;
k4=;
The equations:
—————————————————-
F(1)= (k1/p0^2)*(x(n)*(1/(pi*Ag))*(pi+2-5*((p0/x(i))^k4-1)+2*((p0/x(1))^k4-1)^2))^2-(x(i)/p0)^k2+(x(i)/p0)^k3];%…………. 1st equation
F(n)= [k1/(x(n-1))^2)*(x(n)*(1/(pi*Ag))*(pi+2-5*((x(n-1)/pn)^k4-1)+2*((x(n-)/pn)^k4-1)^2))^2-(pn/x(n-1))^k2+(pn/x(n-1))^k3]; %…………. “n” equation
%…………. for remained equations
For i=2:n-1
F(i) = (k1/(x(i))^2)*(x(n)*(1/(pi*Ag))*(pi+2-*((x(i)/x(i+1))^k4-1)+2*((x(i)/x(i+1))^k4-1)^2))^2- (x(i+1)/x(i))^k2+(x(i+1)/x(i))^k3;
End
————–
factor=(p0-pn)/n;
for i=1:(n-1)
x0(i)=p0-factor*i;
end
x0(n)=0;
——————-
options=optimoptions(‘fsolve’,’Display’,’iter’);
[x11,fval]=fsolve(F,x0,options)
Any help will be appreciated guys
Thanks in advance. Hi, guys…. I’ve been trying to create euqaitons to solve a non-lineal system in a loop. But, the number of functions to be created depends on the user (2<n<24)…. Turbine seal gas leak though labyrinth.
For example, when n=5 the loop should create 5 functions with 5 unknown variables (x1, x2, x3, x4, x5) and then, the system is solved by fsolve.
Here is my script:
All below variables are known:
n=;
pi=;
p0=;
pn=;
Ag=;
k1=;
k2=;
k3=;
k4=;
The equations:
—————————————————-
F(1)= (k1/p0^2)*(x(n)*(1/(pi*Ag))*(pi+2-5*((p0/x(i))^k4-1)+2*((p0/x(1))^k4-1)^2))^2-(x(i)/p0)^k2+(x(i)/p0)^k3];%…………. 1st equation
F(n)= [k1/(x(n-1))^2)*(x(n)*(1/(pi*Ag))*(pi+2-5*((x(n-1)/pn)^k4-1)+2*((x(n-)/pn)^k4-1)^2))^2-(pn/x(n-1))^k2+(pn/x(n-1))^k3]; %…………. “n” equation
%…………. for remained equations
For i=2:n-1
F(i) = (k1/(x(i))^2)*(x(n)*(1/(pi*Ag))*(pi+2-*((x(i)/x(i+1))^k4-1)+2*((x(i)/x(i+1))^k4-1)^2))^2- (x(i+1)/x(i))^k2+(x(i+1)/x(i))^k3;
End
————–
factor=(p0-pn)/n;
for i=1:(n-1)
x0(i)=p0-factor*i;
end
x0(n)=0;
——————-
options=optimoptions(‘fsolve’,’Display’,’iter’);
[x11,fval]=fsolve(F,x0,options)
Any help will be appreciated guys
Thanks in advance. fsolve, loop, nonlinear, functions MATLAB Answers — New Questions
No InputFormat ‘YYMMDD’ found for datetime
Is there a way to transform ‘240331’ into ’31 March 2024′ ?
The following does not work:
datetime(‘240331′,InputFormat,’YYMMDD’)Is there a way to transform ‘240331’ into ’31 March 2024′ ?
The following does not work:
datetime(‘240331′,InputFormat,’YYMMDD’) Is there a way to transform ‘240331’ into ’31 March 2024′ ?
The following does not work:
datetime(‘240331′,InputFormat,’YYMMDD’) datetime, inputformat MATLAB Answers — New Questions
where I can find mblibv1 library and install in my simulink?
I tried to simulate the cartpole simulation with simulink but I received the next message: Failed to load library ‘mblibv1’
How can I solve this problem? Where can I find it and install it?
Please suggestions. Many thanks in advance.I tried to simulate the cartpole simulation with simulink but I received the next message: Failed to load library ‘mblibv1’
How can I solve this problem? Where can I find it and install it?
Please suggestions. Many thanks in advance. I tried to simulate the cartpole simulation with simulink but I received the next message: Failed to load library ‘mblibv1’
How can I solve this problem? Where can I find it and install it?
Please suggestions. Many thanks in advance. failed to load library ‘mblibv1’, install ‘mblibv1’ library MATLAB Answers — New Questions
Can you use islocalmax2 for a nxnxn grid where the values of that grid correspond to peaks in data density?
I am trying to pickout peaks of data density. I fit my data to a kernel density estimation using the mvksdensity function.
I then get a matrix, Z, the size of my grid where the values correspond to the density of the data in the 3D variable space.
My question is, can I use islocalmax2 to pick out peaks in this nxnxn matrix Z, or does it only work in 2 dimensional arrays.
The documentation lists the input data can be a multidimensional array, though I’m not sure if it works with a page size greater than 1.
My goal is to calculate the prominence of of these peaks as well so if anyone has any resources related to that in more than 2 dimensions, that would be very helpful.
I’ve also used the imregional max function from the image processing toolbox, but the user doesn’t have control over any parameters for the peaks.I am trying to pickout peaks of data density. I fit my data to a kernel density estimation using the mvksdensity function.
I then get a matrix, Z, the size of my grid where the values correspond to the density of the data in the 3D variable space.
My question is, can I use islocalmax2 to pick out peaks in this nxnxn matrix Z, or does it only work in 2 dimensional arrays.
The documentation lists the input data can be a multidimensional array, though I’m not sure if it works with a page size greater than 1.
My goal is to calculate the prominence of of these peaks as well so if anyone has any resources related to that in more than 2 dimensions, that would be very helpful.
I’ve also used the imregional max function from the image processing toolbox, but the user doesn’t have control over any parameters for the peaks. I am trying to pickout peaks of data density. I fit my data to a kernel density estimation using the mvksdensity function.
I then get a matrix, Z, the size of my grid where the values correspond to the density of the data in the 3D variable space.
My question is, can I use islocalmax2 to pick out peaks in this nxnxn matrix Z, or does it only work in 2 dimensional arrays.
The documentation lists the input data can be a multidimensional array, though I’m not sure if it works with a page size greater than 1.
My goal is to calculate the prominence of of these peaks as well so if anyone has any resources related to that in more than 2 dimensions, that would be very helpful.
I’ve also used the imregional max function from the image processing toolbox, but the user doesn’t have control over any parameters for the peaks. local max, multi-dimensional arrays, peak finding MATLAB Answers — New Questions
RFtoolbox problem to save files that was changed in frequncies
Hi,
I am trying to open S-parameter and save it in different frequencies:
% Callbacks that handle component events
methods (Access = private)
% Button pushed function: OpenFileButton
function pushed(app, event)
global myhs
global myhs1
[file,path,indx] = uigetfile({‘*.s*p’,’*.S*P*’})
filename= [path file];
myhs = sparameters(filename);
myhs1=myhs;
msgbox(‘File loaded ok’, filename);
Lastfreq=myhs.Frequencies(end);
myfreq=linspace(0,Lastfreq,10);
myfname = ‘test1.s32p’
rfwrite(myhs, myfreq, myfname) -> this fail with error why ??
Error using rfwrite
No value was given for ‘test1.s32p’. Name-value pair arguments require a name followed by a value.
I am opening S32P file, so why does this fail ?
Thanks,
RoeeHi,
I am trying to open S-parameter and save it in different frequencies:
% Callbacks that handle component events
methods (Access = private)
% Button pushed function: OpenFileButton
function pushed(app, event)
global myhs
global myhs1
[file,path,indx] = uigetfile({‘*.s*p’,’*.S*P*’})
filename= [path file];
myhs = sparameters(filename);
myhs1=myhs;
msgbox(‘File loaded ok’, filename);
Lastfreq=myhs.Frequencies(end);
myfreq=linspace(0,Lastfreq,10);
myfname = ‘test1.s32p’
rfwrite(myhs, myfreq, myfname) -> this fail with error why ??
Error using rfwrite
No value was given for ‘test1.s32p’. Name-value pair arguments require a name followed by a value.
I am opening S32P file, so why does this fail ?
Thanks,
Roee Hi,
I am trying to open S-parameter and save it in different frequencies:
% Callbacks that handle component events
methods (Access = private)
% Button pushed function: OpenFileButton
function pushed(app, event)
global myhs
global myhs1
[file,path,indx] = uigetfile({‘*.s*p’,’*.S*P*’})
filename= [path file];
myhs = sparameters(filename);
myhs1=myhs;
msgbox(‘File loaded ok’, filename);
Lastfreq=myhs.Frequencies(end);
myfreq=linspace(0,Lastfreq,10);
myfname = ‘test1.s32p’
rfwrite(myhs, myfreq, myfname) -> this fail with error why ??
Error using rfwrite
No value was given for ‘test1.s32p’. Name-value pair arguments require a name followed by a value.
I am opening S32P file, so why does this fail ?
Thanks,
Roee rftoolbox, sparameter MATLAB Answers — New Questions
hyperparameter tuning in SVM
How to find the value of C and gamma parameter in SVM, the dataset we used is wokload dataset for prediction purpose. how to evaluate the affect of different value of parameters.How to find the value of C and gamma parameter in SVM, the dataset we used is wokload dataset for prediction purpose. how to evaluate the affect of different value of parameters. How to find the value of C and gamma parameter in SVM, the dataset we used is wokload dataset for prediction purpose. how to evaluate the affect of different value of parameters. svm, hyperparameter tuning, prediction MATLAB Answers — New Questions
How to seperate a superimposed sinusoidal wave from a signal
Could you assist me in isolating a sinusoidal wave that is overlaid(superimposed) on a signal?
I’ve attached a .mat file where a sine wave is superimposed between the 613th and 1569th data points, which have a sampling frequency of 40Hz. My goal is to extract this sine wave from the entire signal. I’ve attempted ‘blind source separation’ techniques, FFT, but it won’t works. the reason might be the frequency of introduced sine wave is too small,only 1Hz.
Additionally, could you provide suggestions on how to identify the point at which a sinusoidal wave is introduced if its location is unknown? Your help would be greatly appreciated.
Thank you in advance!
Comment if any other informantion needed.
%%Could you assist me in isolating a sinusoidal wave that is overlaid(superimposed) on a signal?
I’ve attached a .mat file where a sine wave is superimposed between the 613th and 1569th data points, which have a sampling frequency of 40Hz. My goal is to extract this sine wave from the entire signal. I’ve attempted ‘blind source separation’ techniques, FFT, but it won’t works. the reason might be the frequency of introduced sine wave is too small,only 1Hz.
Additionally, could you provide suggestions on how to identify the point at which a sinusoidal wave is introduced if its location is unknown? Your help would be greatly appreciated.
Thank you in advance!
Comment if any other informantion needed.
%% Could you assist me in isolating a sinusoidal wave that is overlaid(superimposed) on a signal?
I’ve attached a .mat file where a sine wave is superimposed between the 613th and 1569th data points, which have a sampling frequency of 40Hz. My goal is to extract this sine wave from the entire signal. I’ve attempted ‘blind source separation’ techniques, FFT, but it won’t works. the reason might be the frequency of introduced sine wave is too small,only 1Hz.
Additionally, could you provide suggestions on how to identify the point at which a sinusoidal wave is introduced if its location is unknown? Your help would be greatly appreciated.
Thank you in advance!
Comment if any other informantion needed.
%% wave seperation, fft, blind source seperation, signal processing MATLAB Answers — New Questions
How do I resolve “Error while evaluating TimerFcn for timer ‘timer-1”?
Hi:
While executing a Timer callback function, I encounter the following two error statements:
Error while evaluating TimerFcn for timer ‘timer-1’.
Insufficient number of outputs from right hand side of equal sign to satisfy assignment.
Am I correct that this error is occurring in a MATLAB library function? If so, how do I locate where this assignment is taking place so that I can further debug the problem? I am using MATLAB 2022b.
For reference, this is the callback function:
function create_batch_file_and_run_Callback(~, ~, H) % =================================================================
create_batch_file_Callback([], [], H)
H = guidata(findall(0,’type’,’figure’,’tag’,’unicorn’)); % since gets updated with batchFileName
H.IWantToCloseGUI = 1; % in create_batch_file_and_run_Callback
guidata(H.unicorn,H);
T = timer;
set(T,’StartDelay’,2,’TimerFcn’,[‘run_dr_suite_batch(”’ H.batchFileName ”’)’]);
start(T);
myclosefcn(H.unicorn);Hi:
While executing a Timer callback function, I encounter the following two error statements:
Error while evaluating TimerFcn for timer ‘timer-1’.
Insufficient number of outputs from right hand side of equal sign to satisfy assignment.
Am I correct that this error is occurring in a MATLAB library function? If so, how do I locate where this assignment is taking place so that I can further debug the problem? I am using MATLAB 2022b.
For reference, this is the callback function:
function create_batch_file_and_run_Callback(~, ~, H) % =================================================================
create_batch_file_Callback([], [], H)
H = guidata(findall(0,’type’,’figure’,’tag’,’unicorn’)); % since gets updated with batchFileName
H.IWantToCloseGUI = 1; % in create_batch_file_and_run_Callback
guidata(H.unicorn,H);
T = timer;
set(T,’StartDelay’,2,’TimerFcn’,[‘run_dr_suite_batch(”’ H.batchFileName ”’)’]);
start(T);
myclosefcn(H.unicorn); Hi:
While executing a Timer callback function, I encounter the following two error statements:
Error while evaluating TimerFcn for timer ‘timer-1’.
Insufficient number of outputs from right hand side of equal sign to satisfy assignment.
Am I correct that this error is occurring in a MATLAB library function? If so, how do I locate where this assignment is taking place so that I can further debug the problem? I am using MATLAB 2022b.
For reference, this is the callback function:
function create_batch_file_and_run_Callback(~, ~, H) % =================================================================
create_batch_file_Callback([], [], H)
H = guidata(findall(0,’type’,’figure’,’tag’,’unicorn’)); % since gets updated with batchFileName
H.IWantToCloseGUI = 1; % in create_batch_file_and_run_Callback
guidata(H.unicorn,H);
T = timer;
set(T,’StartDelay’,2,’TimerFcn’,[‘run_dr_suite_batch(”’ H.batchFileName ”’)’]);
start(T);
myclosefcn(H.unicorn); timerfcn MATLAB Answers — New Questions
Converting 32 bit to uint16
I want to convert 32bit image to uint16 image but preserve the grey values. I do not want to lose the grey value, rather scale them to the uint16. How can I do this. My code below makes the images fully grey.
% Normalize the pixel values to the range [0, 1]
img_normalized = double(img_original) / double(max(img_original(:)));
% Find the minimum and maximum values in the normalized image
min_val = min(img_normalized(:));
max_val = max(img_normalized(:));
% Define the minimum and maximum values for uint16
min_uint16 = double(intmin(‘uint16’));
max_uint16 = double(intmax(‘uint16’));
% Calculate the scaling factors
scale_factor = (max_uint16 – min_uint16) / (max_val – min_val);
% Scale the pixel values to uint16 range
img_scaled = uint16((img_normalized – min_val) * scale_factor + min_uint16);I want to convert 32bit image to uint16 image but preserve the grey values. I do not want to lose the grey value, rather scale them to the uint16. How can I do this. My code below makes the images fully grey.
% Normalize the pixel values to the range [0, 1]
img_normalized = double(img_original) / double(max(img_original(:)));
% Find the minimum and maximum values in the normalized image
min_val = min(img_normalized(:));
max_val = max(img_normalized(:));
% Define the minimum and maximum values for uint16
min_uint16 = double(intmin(‘uint16’));
max_uint16 = double(intmax(‘uint16’));
% Calculate the scaling factors
scale_factor = (max_uint16 – min_uint16) / (max_val – min_val);
% Scale the pixel values to uint16 range
img_scaled = uint16((img_normalized – min_val) * scale_factor + min_uint16); I want to convert 32bit image to uint16 image but preserve the grey values. I do not want to lose the grey value, rather scale them to the uint16. How can I do this. My code below makes the images fully grey.
% Normalize the pixel values to the range [0, 1]
img_normalized = double(img_original) / double(max(img_original(:)));
% Find the minimum and maximum values in the normalized image
min_val = min(img_normalized(:));
max_val = max(img_normalized(:));
% Define the minimum and maximum values for uint16
min_uint16 = double(intmin(‘uint16’));
max_uint16 = double(intmax(‘uint16’));
% Calculate the scaling factors
scale_factor = (max_uint16 – min_uint16) / (max_val – min_val);
% Scale the pixel values to uint16 range
img_scaled = uint16((img_normalized – min_val) * scale_factor + min_uint16); convert 32bits to 16bits MATLAB Answers — New Questions
A more efficient or compact way to sort strings that contain dates
I have strings that contain dates.
Those strings are in a "random" order, i.e. they are not ordered by following the dates, from 2024/03/01 to 2024/03/31 (i.e. from the 1st of March 2024 to the 31st of March 2024).
Is there a more efficient or compact way to sort the following strings containing dates?
% (1) input (strings containing dates, in a "random" order)
a(1,:) = ‘123_abc_01_202403020000_202403022359.txt’;
a(2,:) = ‘123_abc_01_202403040000_202403042359.txt’;
a(3,:) = ‘123_abc_01_202403030000_202403032359.txt’;
a(4,:) = ‘123_abc_01_202403050000_202403052359.txt’;
a(5,:) = ‘123_abc_01_202403010000_202403012359.txt’;
a
% (2) create substrings with ordered dates, that we can use to compare with the unordered strings of the input
for i = 1 : 31
tmp = [];
if i <=10
tmp = sprintf(‘%02d’,i);
else
tmp = sprintf(‘%0d’,i);
end
b(i,:) = append(‘_202403’,tmp);
end
% sort the unordered strings of the input, by following the substrings that have ordered dates
for i = 1 : 5
for j = 1 : 31
if contains(a(i,:),b(j,:))
which_j(i) = j;
end
end
end
sorted_a = sort(a(which_j,:))I have strings that contain dates.
Those strings are in a "random" order, i.e. they are not ordered by following the dates, from 2024/03/01 to 2024/03/31 (i.e. from the 1st of March 2024 to the 31st of March 2024).
Is there a more efficient or compact way to sort the following strings containing dates?
% (1) input (strings containing dates, in a "random" order)
a(1,:) = ‘123_abc_01_202403020000_202403022359.txt’;
a(2,:) = ‘123_abc_01_202403040000_202403042359.txt’;
a(3,:) = ‘123_abc_01_202403030000_202403032359.txt’;
a(4,:) = ‘123_abc_01_202403050000_202403052359.txt’;
a(5,:) = ‘123_abc_01_202403010000_202403012359.txt’;
a
% (2) create substrings with ordered dates, that we can use to compare with the unordered strings of the input
for i = 1 : 31
tmp = [];
if i <=10
tmp = sprintf(‘%02d’,i);
else
tmp = sprintf(‘%0d’,i);
end
b(i,:) = append(‘_202403’,tmp);
end
% sort the unordered strings of the input, by following the substrings that have ordered dates
for i = 1 : 5
for j = 1 : 31
if contains(a(i,:),b(j,:))
which_j(i) = j;
end
end
end
sorted_a = sort(a(which_j,:)) I have strings that contain dates.
Those strings are in a "random" order, i.e. they are not ordered by following the dates, from 2024/03/01 to 2024/03/31 (i.e. from the 1st of March 2024 to the 31st of March 2024).
Is there a more efficient or compact way to sort the following strings containing dates?
% (1) input (strings containing dates, in a "random" order)
a(1,:) = ‘123_abc_01_202403020000_202403022359.txt’;
a(2,:) = ‘123_abc_01_202403040000_202403042359.txt’;
a(3,:) = ‘123_abc_01_202403030000_202403032359.txt’;
a(4,:) = ‘123_abc_01_202403050000_202403052359.txt’;
a(5,:) = ‘123_abc_01_202403010000_202403012359.txt’;
a
% (2) create substrings with ordered dates, that we can use to compare with the unordered strings of the input
for i = 1 : 31
tmp = [];
if i <=10
tmp = sprintf(‘%02d’,i);
else
tmp = sprintf(‘%0d’,i);
end
b(i,:) = append(‘_202403’,tmp);
end
% sort the unordered strings of the input, by following the substrings that have ordered dates
for i = 1 : 5
for j = 1 : 31
if contains(a(i,:),b(j,:))
which_j(i) = j;
end
end
end
sorted_a = sort(a(which_j,:)) string, dates, date, sort MATLAB Answers — New Questions
how to modify code for system of delay differential equations with two delays
I have this code and i want to modify this for the system with multiple delays
%% ode simulation data, drop the transient part
tau = 1;
beta = 4;
n = 9.65;
gamma = 2;
trueModel = @(t,x,xdelay) beta*xdelay./(1+xdelay.^n)-gamma*x;
num_traj=100;
tr_c =linspace(0.5,1.5,num_traj); % 100 sets (ORIGINAL)
T = 20;
dt = 0.05;
tspan = [0 T];
N = round(T/dt)+1;
Tst = 10; % drop first 10 second
T_tr = 7;
N_tr = round(T_tr/dt)+1; % take fisrt part of remaining data for training
tau_max = 1.5; %%%FIXED DELAY FOR ODE DISCRETIZATION
M=30; %%%COLLOCATION DEGREE (ADDED), SHOULD CORRESPOND TO nx-1
[Dcheb,xcheb]=difmat(-tau_max,0,M);%%%CHEBYSHEV DIFFERENTIATION MATRIX AND NODES
wcheb=barywei(xcheb); %%%CHEBYSHEV BARYCENTIRC WEIGHTS
nX = round(tau_max/dt)+1; % number of states (OLD)
Xtrain_all = {};
BaseNet0 = struct;
BaseNet0.DiffMat = difmat(-tau_max,0,M);
BaseNet0.dt = dt;
% generate data + derivative
for k = 1:length(tr_c)
hist = @(t) tr_c(k);
sol = dde23(trueModel,tau,hist,tspan);
tint = linspace(0,T,N);
yint{k} = deval(sol,tint); %%%ALL SAMPLES IN [0,T]
tint_tr = linspace(Tst,Tst+T_tr,N_tr); %%%ALL TRAINING SAMPLES [10,17]
yint_tr{k} = yint{k}(round(Tst/dt):round(Tst/dt)+N_tr-1);
% obtain derivative via central difference
dy{k} = ctrDiff(yint{k},tint);
dy_tr{k} = ctrDiff(yint_tr{k},tint_tr);
m = length(tint_tr)-nX+1; % number of datapoints
xTrain = zeros(M+1,m);
dxTrain = zeros(M+1,m);
tchebTrain = zeros(M+1,m);
for i = 1:m
[~,tchebTrain(:,i)]=difmat(tint_tr(i),tint_tr(nX+i-1),M);%%%REINTERPOLATE AT CHEBYSHEV NODES
xTrain(:,i)=deval(sol,tchebTrain(:,i));
xTrainDelay(:,i)=deval(sol,tchebTrain(:,i)-tau);
dxTrain(:,i) = trueModel(1,xTrain(:,i),xTrainDelay(:,i));
end
Xtrain_all{k}=xTrain;
x0{k} = xTrain(:,1);
dXtrain_all{k}=dxTrain;
end
function v=barywei(x)
%BARYWEI barycentric weights.
% v=barywei(x) returns the weights v for barycentric interpolation at
% the nodes x according to [1].
%
% REFERENCES:
% [1] J.P. Berrut and L.N. Trefethen,"Barycentric Lagrange
% interpolation",SIAM Rev. 46(3):501-517,2004.
n=length(x); %number of nodes
dx=ones(n,1);
v=dx;
for m=2:n
for i=1:m-1
dx(i)=x(m)-x(i);
v(i)=-dx(i)*v(i);
end
v(m)=prod(dx(1:m));
end
v=1./v;
v=v/max(v); %normalization to 1
end
function [D,x]=difmat(a,b,N)
%DIFMAT Chebyshev nodes and pseudospectral differentiation matrix.
% [D,x]=DIFMAT(a,b,N) returns the pseudospectral differentiation
% matrix D of order N+1 on the N+1 Chebyshev nodes x in [a,b]
% according to [1].
% INPUT:
% a: left extremum (1×1)
% b: right extremum (1×1)
% N: degree of discretization (1×1)
% OUTPUT:
% D: differentiation matrix ((N+1)x(N+1))
% x: Chebyshev nodes ((N+1)x1)
%
% References:
% [1] L.N. Trefethen, "Spectral methods in Matlab", SIAM, 2000.
if N==0
x=1;
D=0;
return
end
x=(b+a+(b-a)*(cos(pi*(0:N)’/N)))/2;
c=[2;ones(N-1,1);2].*(-1).^(0:N)’;
X=repmat(x,1,N+1);
dX=X-X’;
D=(c*(1./c)’)./(dX+(eye(N+1)));
D=D-diag(sum(D’));
end
function dy = ctrDiff(yint,tint)
dt = tint(2)-tint(1);
dy = zeros(size(yint));
for k = 2:length(yint)-1
dy(:,k) = (yint(:,k+1)-yint(:,k-1))/2/dt;
end
dy(:,1)=(yint(:,2)-yint(:,1))/dt;
dy(:,end)=(yint(:,end)-yint(:,end-1))/dt;
end
my new model (system) is
tau = [1.5, 2];
par = [0.2, 0.5, 0.2,0.2,1];
trueModel =@(t,x,Z,par) [-x(3) – x(2)+ par(1) * Z(1,1)+ par(2) * Z(1,2);…
x(1) + par(3) * x(2);…
par(4) + x(3) * (x(1) – par(5))];
with history function
hist =@(t) kron(ones(length(t),1),[1.5; 0.4; 0.9]);
when i do modification for system i get an error in xTrain part
below is my error message
Unable to perform assignment because the size of the left side is 21-by-1 and the size of the right side is
3-by-21.
xTrain(:,i)=deval(sol,tchebTrain(:,i));I have this code and i want to modify this for the system with multiple delays
%% ode simulation data, drop the transient part
tau = 1;
beta = 4;
n = 9.65;
gamma = 2;
trueModel = @(t,x,xdelay) beta*xdelay./(1+xdelay.^n)-gamma*x;
num_traj=100;
tr_c =linspace(0.5,1.5,num_traj); % 100 sets (ORIGINAL)
T = 20;
dt = 0.05;
tspan = [0 T];
N = round(T/dt)+1;
Tst = 10; % drop first 10 second
T_tr = 7;
N_tr = round(T_tr/dt)+1; % take fisrt part of remaining data for training
tau_max = 1.5; %%%FIXED DELAY FOR ODE DISCRETIZATION
M=30; %%%COLLOCATION DEGREE (ADDED), SHOULD CORRESPOND TO nx-1
[Dcheb,xcheb]=difmat(-tau_max,0,M);%%%CHEBYSHEV DIFFERENTIATION MATRIX AND NODES
wcheb=barywei(xcheb); %%%CHEBYSHEV BARYCENTIRC WEIGHTS
nX = round(tau_max/dt)+1; % number of states (OLD)
Xtrain_all = {};
BaseNet0 = struct;
BaseNet0.DiffMat = difmat(-tau_max,0,M);
BaseNet0.dt = dt;
% generate data + derivative
for k = 1:length(tr_c)
hist = @(t) tr_c(k);
sol = dde23(trueModel,tau,hist,tspan);
tint = linspace(0,T,N);
yint{k} = deval(sol,tint); %%%ALL SAMPLES IN [0,T]
tint_tr = linspace(Tst,Tst+T_tr,N_tr); %%%ALL TRAINING SAMPLES [10,17]
yint_tr{k} = yint{k}(round(Tst/dt):round(Tst/dt)+N_tr-1);
% obtain derivative via central difference
dy{k} = ctrDiff(yint{k},tint);
dy_tr{k} = ctrDiff(yint_tr{k},tint_tr);
m = length(tint_tr)-nX+1; % number of datapoints
xTrain = zeros(M+1,m);
dxTrain = zeros(M+1,m);
tchebTrain = zeros(M+1,m);
for i = 1:m
[~,tchebTrain(:,i)]=difmat(tint_tr(i),tint_tr(nX+i-1),M);%%%REINTERPOLATE AT CHEBYSHEV NODES
xTrain(:,i)=deval(sol,tchebTrain(:,i));
xTrainDelay(:,i)=deval(sol,tchebTrain(:,i)-tau);
dxTrain(:,i) = trueModel(1,xTrain(:,i),xTrainDelay(:,i));
end
Xtrain_all{k}=xTrain;
x0{k} = xTrain(:,1);
dXtrain_all{k}=dxTrain;
end
function v=barywei(x)
%BARYWEI barycentric weights.
% v=barywei(x) returns the weights v for barycentric interpolation at
% the nodes x according to [1].
%
% REFERENCES:
% [1] J.P. Berrut and L.N. Trefethen,"Barycentric Lagrange
% interpolation",SIAM Rev. 46(3):501-517,2004.
n=length(x); %number of nodes
dx=ones(n,1);
v=dx;
for m=2:n
for i=1:m-1
dx(i)=x(m)-x(i);
v(i)=-dx(i)*v(i);
end
v(m)=prod(dx(1:m));
end
v=1./v;
v=v/max(v); %normalization to 1
end
function [D,x]=difmat(a,b,N)
%DIFMAT Chebyshev nodes and pseudospectral differentiation matrix.
% [D,x]=DIFMAT(a,b,N) returns the pseudospectral differentiation
% matrix D of order N+1 on the N+1 Chebyshev nodes x in [a,b]
% according to [1].
% INPUT:
% a: left extremum (1×1)
% b: right extremum (1×1)
% N: degree of discretization (1×1)
% OUTPUT:
% D: differentiation matrix ((N+1)x(N+1))
% x: Chebyshev nodes ((N+1)x1)
%
% References:
% [1] L.N. Trefethen, "Spectral methods in Matlab", SIAM, 2000.
if N==0
x=1;
D=0;
return
end
x=(b+a+(b-a)*(cos(pi*(0:N)’/N)))/2;
c=[2;ones(N-1,1);2].*(-1).^(0:N)’;
X=repmat(x,1,N+1);
dX=X-X’;
D=(c*(1./c)’)./(dX+(eye(N+1)));
D=D-diag(sum(D’));
end
function dy = ctrDiff(yint,tint)
dt = tint(2)-tint(1);
dy = zeros(size(yint));
for k = 2:length(yint)-1
dy(:,k) = (yint(:,k+1)-yint(:,k-1))/2/dt;
end
dy(:,1)=(yint(:,2)-yint(:,1))/dt;
dy(:,end)=(yint(:,end)-yint(:,end-1))/dt;
end
my new model (system) is
tau = [1.5, 2];
par = [0.2, 0.5, 0.2,0.2,1];
trueModel =@(t,x,Z,par) [-x(3) – x(2)+ par(1) * Z(1,1)+ par(2) * Z(1,2);…
x(1) + par(3) * x(2);…
par(4) + x(3) * (x(1) – par(5))];
with history function
hist =@(t) kron(ones(length(t),1),[1.5; 0.4; 0.9]);
when i do modification for system i get an error in xTrain part
below is my error message
Unable to perform assignment because the size of the left side is 21-by-1 and the size of the right side is
3-by-21.
xTrain(:,i)=deval(sol,tchebTrain(:,i)); I have this code and i want to modify this for the system with multiple delays
%% ode simulation data, drop the transient part
tau = 1;
beta = 4;
n = 9.65;
gamma = 2;
trueModel = @(t,x,xdelay) beta*xdelay./(1+xdelay.^n)-gamma*x;
num_traj=100;
tr_c =linspace(0.5,1.5,num_traj); % 100 sets (ORIGINAL)
T = 20;
dt = 0.05;
tspan = [0 T];
N = round(T/dt)+1;
Tst = 10; % drop first 10 second
T_tr = 7;
N_tr = round(T_tr/dt)+1; % take fisrt part of remaining data for training
tau_max = 1.5; %%%FIXED DELAY FOR ODE DISCRETIZATION
M=30; %%%COLLOCATION DEGREE (ADDED), SHOULD CORRESPOND TO nx-1
[Dcheb,xcheb]=difmat(-tau_max,0,M);%%%CHEBYSHEV DIFFERENTIATION MATRIX AND NODES
wcheb=barywei(xcheb); %%%CHEBYSHEV BARYCENTIRC WEIGHTS
nX = round(tau_max/dt)+1; % number of states (OLD)
Xtrain_all = {};
BaseNet0 = struct;
BaseNet0.DiffMat = difmat(-tau_max,0,M);
BaseNet0.dt = dt;
% generate data + derivative
for k = 1:length(tr_c)
hist = @(t) tr_c(k);
sol = dde23(trueModel,tau,hist,tspan);
tint = linspace(0,T,N);
yint{k} = deval(sol,tint); %%%ALL SAMPLES IN [0,T]
tint_tr = linspace(Tst,Tst+T_tr,N_tr); %%%ALL TRAINING SAMPLES [10,17]
yint_tr{k} = yint{k}(round(Tst/dt):round(Tst/dt)+N_tr-1);
% obtain derivative via central difference
dy{k} = ctrDiff(yint{k},tint);
dy_tr{k} = ctrDiff(yint_tr{k},tint_tr);
m = length(tint_tr)-nX+1; % number of datapoints
xTrain = zeros(M+1,m);
dxTrain = zeros(M+1,m);
tchebTrain = zeros(M+1,m);
for i = 1:m
[~,tchebTrain(:,i)]=difmat(tint_tr(i),tint_tr(nX+i-1),M);%%%REINTERPOLATE AT CHEBYSHEV NODES
xTrain(:,i)=deval(sol,tchebTrain(:,i));
xTrainDelay(:,i)=deval(sol,tchebTrain(:,i)-tau);
dxTrain(:,i) = trueModel(1,xTrain(:,i),xTrainDelay(:,i));
end
Xtrain_all{k}=xTrain;
x0{k} = xTrain(:,1);
dXtrain_all{k}=dxTrain;
end
function v=barywei(x)
%BARYWEI barycentric weights.
% v=barywei(x) returns the weights v for barycentric interpolation at
% the nodes x according to [1].
%
% REFERENCES:
% [1] J.P. Berrut and L.N. Trefethen,"Barycentric Lagrange
% interpolation",SIAM Rev. 46(3):501-517,2004.
n=length(x); %number of nodes
dx=ones(n,1);
v=dx;
for m=2:n
for i=1:m-1
dx(i)=x(m)-x(i);
v(i)=-dx(i)*v(i);
end
v(m)=prod(dx(1:m));
end
v=1./v;
v=v/max(v); %normalization to 1
end
function [D,x]=difmat(a,b,N)
%DIFMAT Chebyshev nodes and pseudospectral differentiation matrix.
% [D,x]=DIFMAT(a,b,N) returns the pseudospectral differentiation
% matrix D of order N+1 on the N+1 Chebyshev nodes x in [a,b]
% according to [1].
% INPUT:
% a: left extremum (1×1)
% b: right extremum (1×1)
% N: degree of discretization (1×1)
% OUTPUT:
% D: differentiation matrix ((N+1)x(N+1))
% x: Chebyshev nodes ((N+1)x1)
%
% References:
% [1] L.N. Trefethen, "Spectral methods in Matlab", SIAM, 2000.
if N==0
x=1;
D=0;
return
end
x=(b+a+(b-a)*(cos(pi*(0:N)’/N)))/2;
c=[2;ones(N-1,1);2].*(-1).^(0:N)’;
X=repmat(x,1,N+1);
dX=X-X’;
D=(c*(1./c)’)./(dX+(eye(N+1)));
D=D-diag(sum(D’));
end
function dy = ctrDiff(yint,tint)
dt = tint(2)-tint(1);
dy = zeros(size(yint));
for k = 2:length(yint)-1
dy(:,k) = (yint(:,k+1)-yint(:,k-1))/2/dt;
end
dy(:,1)=(yint(:,2)-yint(:,1))/dt;
dy(:,end)=(yint(:,end)-yint(:,end-1))/dt;
end
my new model (system) is
tau = [1.5, 2];
par = [0.2, 0.5, 0.2,0.2,1];
trueModel =@(t,x,Z,par) [-x(3) – x(2)+ par(1) * Z(1,1)+ par(2) * Z(1,2);…
x(1) + par(3) * x(2);…
par(4) + x(3) * (x(1) – par(5))];
with history function
hist =@(t) kron(ones(length(t),1),[1.5; 0.4; 0.9]);
when i do modification for system i get an error in xTrain part
below is my error message
Unable to perform assignment because the size of the left side is 21-by-1 and the size of the right side is
3-by-21.
xTrain(:,i)=deval(sol,tchebTrain(:,i)); differential equations, delay differential equations MATLAB Answers — New Questions
show Command Window Application Designer, How can I display the Command Windows within App Designer?
How can I display the Command Windows within App Designer?
I have a code that I am programming, I need it to be executable on another pc, for that I can use the compilation app or the disegner app. but I need everything that comes out in the windows command to appear in a window or be printed when executing the code, as if it were the matlab workspaceHow can I display the Command Windows within App Designer?
I have a code that I am programming, I need it to be executable on another pc, for that I can use the compilation app or the disegner app. but I need everything that comes out in the windows command to appear in a window or be printed when executing the code, as if it were the matlab workspace How can I display the Command Windows within App Designer?
I have a code that I am programming, I need it to be executable on another pc, for that I can use the compilation app or the disegner app. but I need everything that comes out in the windows command to appear in a window or be printed when executing the code, as if it were the matlab workspace appdesigner, command windows MATLAB Answers — New Questions