Tag Archives: matlab
How to use tcpclient instead of tcpip with icdevice
I am using instrfind and tcpip to create interface object. I am pasing this interface object in icdevice to create object of my matlab intrument device driver. As, instrfind and tcpip will be removed in future release, how can I modify my code to use my instrument device driver? If I replace tcpip with tcpclient then I cannot use icdevice to create object of my intrument device driver. Refer below code which I am using.
% Create a TCPIP object.
interfaceObj = instrfind(‘Type’, ‘tcpip’, ‘RemoteHost’, ‘127.0.0.1’, ‘RemotePort’, 1234, ‘Tag’, ”);
% Create the TCPIP object if it does not exist
% otherwise use the object that was found.
if isempty(interfaceObj)
interfaceObj = tcpip(‘127.0.0.1’, 1234);
else
fclose(interfaceObj);
interfaceObj = interfaceObj(1);
end
% Create a device object.
deviceObj = icdevice(‘my_driver.mdd’, interfaceObj);
% Connect device object to hardware.
connect(deviceObj);I am using instrfind and tcpip to create interface object. I am pasing this interface object in icdevice to create object of my matlab intrument device driver. As, instrfind and tcpip will be removed in future release, how can I modify my code to use my instrument device driver? If I replace tcpip with tcpclient then I cannot use icdevice to create object of my intrument device driver. Refer below code which I am using.
% Create a TCPIP object.
interfaceObj = instrfind(‘Type’, ‘tcpip’, ‘RemoteHost’, ‘127.0.0.1’, ‘RemotePort’, 1234, ‘Tag’, ”);
% Create the TCPIP object if it does not exist
% otherwise use the object that was found.
if isempty(interfaceObj)
interfaceObj = tcpip(‘127.0.0.1’, 1234);
else
fclose(interfaceObj);
interfaceObj = interfaceObj(1);
end
% Create a device object.
deviceObj = icdevice(‘my_driver.mdd’, interfaceObj);
% Connect device object to hardware.
connect(deviceObj); I am using instrfind and tcpip to create interface object. I am pasing this interface object in icdevice to create object of my matlab intrument device driver. As, instrfind and tcpip will be removed in future release, how can I modify my code to use my instrument device driver? If I replace tcpip with tcpclient then I cannot use icdevice to create object of my intrument device driver. Refer below code which I am using.
% Create a TCPIP object.
interfaceObj = instrfind(‘Type’, ‘tcpip’, ‘RemoteHost’, ‘127.0.0.1’, ‘RemotePort’, 1234, ‘Tag’, ”);
% Create the TCPIP object if it does not exist
% otherwise use the object that was found.
if isempty(interfaceObj)
interfaceObj = tcpip(‘127.0.0.1’, 1234);
else
fclose(interfaceObj);
interfaceObj = interfaceObj(1);
end
% Create a device object.
deviceObj = icdevice(‘my_driver.mdd’, interfaceObj);
% Connect device object to hardware.
connect(deviceObj); instrfind, tcpip, removed in future release, instrument device driver MATLAB Answers — New Questions
Matlab code for Sorting diagonal elements of matrix and index of sorted elements is filled into new matrix as shown below?
This first matrix table1 contains normalized values for 5 names.I need to perform some operations on this matrix and I have to obtain second matrix as shown in table2.
Diagonal elements of table2 should obtained by giving rank(ordinal value) to each value.That means highest element is given 5th rank and next highest is given 4th 3rd and so on.
OPERATION:For diagonal elements
B(1,1)=5(first largest element)
B(2,2)=1(5th largest element)
B(3,3)=4(4th largest element)
B(4,4)=2(2nd largest element)
B(5,5)=3(3rd largest element)
Table1:
BASAVARAJ MANOJ NATESH VIJAY GOWDA
BASAVARAJ 1.0000 0.2727 0.3182 0.0455 0.2727
MANOJ 0.2727 0.2727 0 0 0
NATESH 0.3182 0 0.4545 0.1818 0
VIJAY 0.0455 0 0.1818 0.2727 0.0909
GOWDA 0.2727 0 0 0.0909 0.3636
Table2:
BASAVARAJ MANOJ NATESH VIJAY GOWDA
BASAVARAJ 5 0 0 0 0
MANOJ 0 1 0 0 0
NATESH 0 0 4 0 0
VIJAY 0 0 0 2 0
GOWDA 0 0 0 0 3This first matrix table1 contains normalized values for 5 names.I need to perform some operations on this matrix and I have to obtain second matrix as shown in table2.
Diagonal elements of table2 should obtained by giving rank(ordinal value) to each value.That means highest element is given 5th rank and next highest is given 4th 3rd and so on.
OPERATION:For diagonal elements
B(1,1)=5(first largest element)
B(2,2)=1(5th largest element)
B(3,3)=4(4th largest element)
B(4,4)=2(2nd largest element)
B(5,5)=3(3rd largest element)
Table1:
BASAVARAJ MANOJ NATESH VIJAY GOWDA
BASAVARAJ 1.0000 0.2727 0.3182 0.0455 0.2727
MANOJ 0.2727 0.2727 0 0 0
NATESH 0.3182 0 0.4545 0.1818 0
VIJAY 0.0455 0 0.1818 0.2727 0.0909
GOWDA 0.2727 0 0 0.0909 0.3636
Table2:
BASAVARAJ MANOJ NATESH VIJAY GOWDA
BASAVARAJ 5 0 0 0 0
MANOJ 0 1 0 0 0
NATESH 0 0 4 0 0
VIJAY 0 0 0 2 0
GOWDA 0 0 0 0 3 This first matrix table1 contains normalized values for 5 names.I need to perform some operations on this matrix and I have to obtain second matrix as shown in table2.
Diagonal elements of table2 should obtained by giving rank(ordinal value) to each value.That means highest element is given 5th rank and next highest is given 4th 3rd and so on.
OPERATION:For diagonal elements
B(1,1)=5(first largest element)
B(2,2)=1(5th largest element)
B(3,3)=4(4th largest element)
B(4,4)=2(2nd largest element)
B(5,5)=3(3rd largest element)
Table1:
BASAVARAJ MANOJ NATESH VIJAY GOWDA
BASAVARAJ 1.0000 0.2727 0.3182 0.0455 0.2727
MANOJ 0.2727 0.2727 0 0 0
NATESH 0.3182 0 0.4545 0.1818 0
VIJAY 0.0455 0 0.1818 0.2727 0.0909
GOWDA 0.2727 0 0 0.0909 0.3636
Table2:
BASAVARAJ MANOJ NATESH VIJAY GOWDA
BASAVARAJ 5 0 0 0 0
MANOJ 0 1 0 0 0
NATESH 0 0 4 0 0
VIJAY 0 0 0 2 0
GOWDA 0 0 0 0 3 matlab, matrix manipulation, sort, for loop, index MATLAB Answers — New Questions
I can’t find my land or junction id
https://kr.mathworks.com/videos/getting-started-with-roadrunner-junction-creation-in-roadrunner-1586438843851.html
At 4:34 in the video, I can see something called junction id.
I followed the same steps in the video, but I don’t see any attributes on my end.
Similarly, in another video, I saw something called lane id, but I couldn’t see anything on my road.
I have purchased Roadrunner license, but do I need to make an additional payment to use junction id or lane id? Or is there another way?https://kr.mathworks.com/videos/getting-started-with-roadrunner-junction-creation-in-roadrunner-1586438843851.html
At 4:34 in the video, I can see something called junction id.
I followed the same steps in the video, but I don’t see any attributes on my end.
Similarly, in another video, I saw something called lane id, but I couldn’t see anything on my road.
I have purchased Roadrunner license, but do I need to make an additional payment to use junction id or lane id? Or is there another way? https://kr.mathworks.com/videos/getting-started-with-roadrunner-junction-creation-in-roadrunner-1586438843851.html
At 4:34 in the video, I can see something called junction id.
I followed the same steps in the video, but I don’t see any attributes on my end.
Similarly, in another video, I saw something called lane id, but I couldn’t see anything on my road.
I have purchased Roadrunner license, but do I need to make an additional payment to use junction id or lane id? Or is there another way? id, junction, lane, junction id, lane id MATLAB Answers — New Questions
MATLAB editor shows files have no contents (blank)
Hello,
When I try to open an m-file or script in the editor, it opens up blank. The file, however, is clearly not empty – I can open it with a generic text editor and the code appears fine. This also happens if I try to create a new script in the editor. The editor opens a new ‘untitled’ file, but I can not enter any text in the editor.
I am running R2022b on an Apple M1 Max macOS 13.1
thanksHello,
When I try to open an m-file or script in the editor, it opens up blank. The file, however, is clearly not empty – I can open it with a generic text editor and the code appears fine. This also happens if I try to create a new script in the editor. The editor opens a new ‘untitled’ file, but I can not enter any text in the editor.
I am running R2022b on an Apple M1 Max macOS 13.1
thanks Hello,
When I try to open an m-file or script in the editor, it opens up blank. The file, however, is clearly not empty – I can open it with a generic text editor and the code appears fine. This also happens if I try to create a new script in the editor. The editor opens a new ‘untitled’ file, but I can not enter any text in the editor.
I am running R2022b on an Apple M1 Max macOS 13.1
thanks editor MATLAB Answers — New Questions
Can you please help me? My CPU usage remains consistently low when using parallel processing.
I investigated multiple reasons and discovered that the command matlab –prefersoftwareopengl is causing high I/O usage. How can I resolve this I/O hogging issue?
T1=20001;
T2=29000;
% Start the parallel pool
parpool(‘Threads’, 64);
N=T2-T1+1; % 数据点数
dmix = zeros(nx-start1-end1,ny-start2-end2,N);
parfor k = 1:N
i = T1 + k – 1;
fileName = sprintf(‘./left.out/m%06d.ovf’, i-1);
fid = fopen(fileName, ‘r’);
datam = textscan(fid, ‘%f%f%f’, ‘headerlines’, 28, ‘collectoutput’, 1);
fclose(fid);
datam = datam{1};
mix111 = reshape(datam(:,2), [nx, ny, nz]); % select x component
mix111 = permute(mix111, [2 1 3]); % x-y transform
mix11 = mix111(start1+1:nx-end1, start2+1:ny-end2, 2) – mix111(start1+1:nx-end1, start2+1:ny-end2, 1);
mix1 = squeeze(mix11);
% Compute the difference and store in dmix
dmix(:,:,k) = mix1;
end
delete(gcp(‘nocreate’));I investigated multiple reasons and discovered that the command matlab –prefersoftwareopengl is causing high I/O usage. How can I resolve this I/O hogging issue?
T1=20001;
T2=29000;
% Start the parallel pool
parpool(‘Threads’, 64);
N=T2-T1+1; % 数据点数
dmix = zeros(nx-start1-end1,ny-start2-end2,N);
parfor k = 1:N
i = T1 + k – 1;
fileName = sprintf(‘./left.out/m%06d.ovf’, i-1);
fid = fopen(fileName, ‘r’);
datam = textscan(fid, ‘%f%f%f’, ‘headerlines’, 28, ‘collectoutput’, 1);
fclose(fid);
datam = datam{1};
mix111 = reshape(datam(:,2), [nx, ny, nz]); % select x component
mix111 = permute(mix111, [2 1 3]); % x-y transform
mix11 = mix111(start1+1:nx-end1, start2+1:ny-end2, 2) – mix111(start1+1:nx-end1, start2+1:ny-end2, 1);
mix1 = squeeze(mix11);
% Compute the difference and store in dmix
dmix(:,:,k) = mix1;
end
delete(gcp(‘nocreate’)); I investigated multiple reasons and discovered that the command matlab –prefersoftwareopengl is causing high I/O usage. How can I resolve this I/O hogging issue?
T1=20001;
T2=29000;
% Start the parallel pool
parpool(‘Threads’, 64);
N=T2-T1+1; % 数据点数
dmix = zeros(nx-start1-end1,ny-start2-end2,N);
parfor k = 1:N
i = T1 + k – 1;
fileName = sprintf(‘./left.out/m%06d.ovf’, i-1);
fid = fopen(fileName, ‘r’);
datam = textscan(fid, ‘%f%f%f’, ‘headerlines’, 28, ‘collectoutput’, 1);
fclose(fid);
datam = datam{1};
mix111 = reshape(datam(:,2), [nx, ny, nz]); % select x component
mix111 = permute(mix111, [2 1 3]); % x-y transform
mix11 = mix111(start1+1:nx-end1, start2+1:ny-end2, 2) – mix111(start1+1:nx-end1, start2+1:ny-end2, 1);
mix1 = squeeze(mix11);
% Compute the difference and store in dmix
dmix(:,:,k) = mix1;
end
delete(gcp(‘nocreate’)); parallel computing toolbox, parallel computing MATLAB Answers — New Questions
How to export all the Test sequences from Simulink Test Manager as an excel file.
I am reviewing some older models, and I wish to be able to extract all Test Sequences for all Simulink Test Manager Files into an office document.I am reviewing some older models, and I wish to be able to extract all Test Sequences for all Simulink Test Manager Files into an office document. I am reviewing some older models, and I wish to be able to extract all Test Sequences for all Simulink Test Manager Files into an office document. simulink, test manager, test sequence MATLAB Answers — New Questions
solving system of 4 coupled odes using shooting method and boundary conditions given
Hello! i am trying to solve a boundary value problem with four coupled first order odes, with four initial conditions at r=0 and four boundary conditions at r=10. my code is running but im not getting my desired output and it is not satisfying the conditions. Can someone help me finding where am i going wrong?
function proca_star_shooting_method
% Clear the workspace and command window
clear;
clc;
format long;
% Define constants and parameters
infinity = 10;
w = 0.817;
x_init = linspace(1e-5, infinity, 1000); % More efficient space vector
% Define initial conditions and boundary conditions
initial_conditions = [0.394, 0.394, 0, 0];
boundary_conditions = [1, 0, 0.745, 0];
% Shooting method with RK4 integration
options = optimset(‘TolX’, 1e-6, ‘Display’, ‘iter’);
phi_c_shoot = fminbnd(@(phi_c) shooting_error(phi_c, x_init, initial_conditions, boundary_conditions, w), 0, 1, options);
% Solve the BVP using the optimal phi_c obtained from the shooting method
[r_data, y_data] = solve_bvp(x_init, initial_conditions, phi_c_shoot, w);
% Plot the results
plot_results(r_data, y_data, infinity);
end
function error = shooting_error(phi_c, x_init, initial_conditions, boundary_conditions, w)
% Solve BVP with given phi_c and calculate the error at the boundary
[~, y_data] = solve_bvp(x_init, initial_conditions, phi_c, w);
yb = y_data(:, end);
error = norm(yb – boundary_conditions’);
end
function [r_data, y_data] = solve_bvp(x_init, initial_conditions, phi_c, w)
% Define the initial conditions for the solver
y0 = [initial_conditions(1), initial_conditions(2), initial_conditions(3), phi_c];
% Initialize the solution arrays
r_data = x_init;
y_data = zeros(4, length(x_init));
y_data(:, 1) = y0;
h = x_init(2) – x_init(1); % Step size
% RK4 integration loop
for i = 2:length(x_init)
y_data(:, i) = rk4_step(@(r, y) bsode(r, y, w), r_data(i-1), y_data(:, i-1), h);
end
end
function y_next = rk4_step(odefun, r, y, h)
% Perform one step of RK4 integration
k1 = h * odefun(r, y);
k2 = h * odefun(r + h/2, y + k1/2);
k3 = h * odefun(r + h/2, y + k2/2);
k4 = h * odefun(r + h, y + k3);
y_next = y + (k1 + 2*k2 + 2*k3 + k4) / 6;
end
function dfdr = bsode(r, y, w)
% Define the system of ODEs to be solved
N = 1 – 2 * y(3) / r;
dfdr = [
4 * pi * r * 0.745 * (y(4)^2 + y(2)^2 / (N^2 * y(1)^2));
w * y(4) – 0.745 * y(1)^2 * N * y(4) / w;
4 * pi * r^2 * (((0.745 * y(1)^2 * N^2 * y(4)^2)^2) / (2 * y(1)^2 * w^2) + 0.5 * 0.745 * (y(4)^2 * N + y(2)^2 / (N * y(1)^2)));
r^2 * y(2) * w / (y(1)^2 * N^2) – 2 * y(4)
];
end
function plot_results(r_data, y_data, infinity)
% Plot the results of the BVP solution
figure;
plot(r_data, y_data(1,:), r_data, y_data(2,:), r_data, y_data(3,:), r_data, y_data(4,:));
axis([0 infinity -0.5 1.2]);
title(‘Functions vs r’);
xlabel(‘r’);
ylabel(‘sigma’);
legend(‘y1’, ‘y2’, ‘y3’, ‘y4’);
grid on;
end
This is my desired plot. Please help me out!Hello! i am trying to solve a boundary value problem with four coupled first order odes, with four initial conditions at r=0 and four boundary conditions at r=10. my code is running but im not getting my desired output and it is not satisfying the conditions. Can someone help me finding where am i going wrong?
function proca_star_shooting_method
% Clear the workspace and command window
clear;
clc;
format long;
% Define constants and parameters
infinity = 10;
w = 0.817;
x_init = linspace(1e-5, infinity, 1000); % More efficient space vector
% Define initial conditions and boundary conditions
initial_conditions = [0.394, 0.394, 0, 0];
boundary_conditions = [1, 0, 0.745, 0];
% Shooting method with RK4 integration
options = optimset(‘TolX’, 1e-6, ‘Display’, ‘iter’);
phi_c_shoot = fminbnd(@(phi_c) shooting_error(phi_c, x_init, initial_conditions, boundary_conditions, w), 0, 1, options);
% Solve the BVP using the optimal phi_c obtained from the shooting method
[r_data, y_data] = solve_bvp(x_init, initial_conditions, phi_c_shoot, w);
% Plot the results
plot_results(r_data, y_data, infinity);
end
function error = shooting_error(phi_c, x_init, initial_conditions, boundary_conditions, w)
% Solve BVP with given phi_c and calculate the error at the boundary
[~, y_data] = solve_bvp(x_init, initial_conditions, phi_c, w);
yb = y_data(:, end);
error = norm(yb – boundary_conditions’);
end
function [r_data, y_data] = solve_bvp(x_init, initial_conditions, phi_c, w)
% Define the initial conditions for the solver
y0 = [initial_conditions(1), initial_conditions(2), initial_conditions(3), phi_c];
% Initialize the solution arrays
r_data = x_init;
y_data = zeros(4, length(x_init));
y_data(:, 1) = y0;
h = x_init(2) – x_init(1); % Step size
% RK4 integration loop
for i = 2:length(x_init)
y_data(:, i) = rk4_step(@(r, y) bsode(r, y, w), r_data(i-1), y_data(:, i-1), h);
end
end
function y_next = rk4_step(odefun, r, y, h)
% Perform one step of RK4 integration
k1 = h * odefun(r, y);
k2 = h * odefun(r + h/2, y + k1/2);
k3 = h * odefun(r + h/2, y + k2/2);
k4 = h * odefun(r + h, y + k3);
y_next = y + (k1 + 2*k2 + 2*k3 + k4) / 6;
end
function dfdr = bsode(r, y, w)
% Define the system of ODEs to be solved
N = 1 – 2 * y(3) / r;
dfdr = [
4 * pi * r * 0.745 * (y(4)^2 + y(2)^2 / (N^2 * y(1)^2));
w * y(4) – 0.745 * y(1)^2 * N * y(4) / w;
4 * pi * r^2 * (((0.745 * y(1)^2 * N^2 * y(4)^2)^2) / (2 * y(1)^2 * w^2) + 0.5 * 0.745 * (y(4)^2 * N + y(2)^2 / (N * y(1)^2)));
r^2 * y(2) * w / (y(1)^2 * N^2) – 2 * y(4)
];
end
function plot_results(r_data, y_data, infinity)
% Plot the results of the BVP solution
figure;
plot(r_data, y_data(1,:), r_data, y_data(2,:), r_data, y_data(3,:), r_data, y_data(4,:));
axis([0 infinity -0.5 1.2]);
title(‘Functions vs r’);
xlabel(‘r’);
ylabel(‘sigma’);
legend(‘y1’, ‘y2’, ‘y3’, ‘y4’);
grid on;
end
This is my desired plot. Please help me out! Hello! i am trying to solve a boundary value problem with four coupled first order odes, with four initial conditions at r=0 and four boundary conditions at r=10. my code is running but im not getting my desired output and it is not satisfying the conditions. Can someone help me finding where am i going wrong?
function proca_star_shooting_method
% Clear the workspace and command window
clear;
clc;
format long;
% Define constants and parameters
infinity = 10;
w = 0.817;
x_init = linspace(1e-5, infinity, 1000); % More efficient space vector
% Define initial conditions and boundary conditions
initial_conditions = [0.394, 0.394, 0, 0];
boundary_conditions = [1, 0, 0.745, 0];
% Shooting method with RK4 integration
options = optimset(‘TolX’, 1e-6, ‘Display’, ‘iter’);
phi_c_shoot = fminbnd(@(phi_c) shooting_error(phi_c, x_init, initial_conditions, boundary_conditions, w), 0, 1, options);
% Solve the BVP using the optimal phi_c obtained from the shooting method
[r_data, y_data] = solve_bvp(x_init, initial_conditions, phi_c_shoot, w);
% Plot the results
plot_results(r_data, y_data, infinity);
end
function error = shooting_error(phi_c, x_init, initial_conditions, boundary_conditions, w)
% Solve BVP with given phi_c and calculate the error at the boundary
[~, y_data] = solve_bvp(x_init, initial_conditions, phi_c, w);
yb = y_data(:, end);
error = norm(yb – boundary_conditions’);
end
function [r_data, y_data] = solve_bvp(x_init, initial_conditions, phi_c, w)
% Define the initial conditions for the solver
y0 = [initial_conditions(1), initial_conditions(2), initial_conditions(3), phi_c];
% Initialize the solution arrays
r_data = x_init;
y_data = zeros(4, length(x_init));
y_data(:, 1) = y0;
h = x_init(2) – x_init(1); % Step size
% RK4 integration loop
for i = 2:length(x_init)
y_data(:, i) = rk4_step(@(r, y) bsode(r, y, w), r_data(i-1), y_data(:, i-1), h);
end
end
function y_next = rk4_step(odefun, r, y, h)
% Perform one step of RK4 integration
k1 = h * odefun(r, y);
k2 = h * odefun(r + h/2, y + k1/2);
k3 = h * odefun(r + h/2, y + k2/2);
k4 = h * odefun(r + h, y + k3);
y_next = y + (k1 + 2*k2 + 2*k3 + k4) / 6;
end
function dfdr = bsode(r, y, w)
% Define the system of ODEs to be solved
N = 1 – 2 * y(3) / r;
dfdr = [
4 * pi * r * 0.745 * (y(4)^2 + y(2)^2 / (N^2 * y(1)^2));
w * y(4) – 0.745 * y(1)^2 * N * y(4) / w;
4 * pi * r^2 * (((0.745 * y(1)^2 * N^2 * y(4)^2)^2) / (2 * y(1)^2 * w^2) + 0.5 * 0.745 * (y(4)^2 * N + y(2)^2 / (N * y(1)^2)));
r^2 * y(2) * w / (y(1)^2 * N^2) – 2 * y(4)
];
end
function plot_results(r_data, y_data, infinity)
% Plot the results of the BVP solution
figure;
plot(r_data, y_data(1,:), r_data, y_data(2,:), r_data, y_data(3,:), r_data, y_data(4,:));
axis([0 infinity -0.5 1.2]);
title(‘Functions vs r’);
xlabel(‘r’);
ylabel(‘sigma’);
legend(‘y1’, ‘y2’, ‘y3’, ‘y4’);
grid on;
end
This is my desired plot. Please help me out! shooting method, bvp4c, rk4, plot, boundary value problem MATLAB Answers — New Questions
Brace indexing error using fitcensemble
I am getting strange errors trying to use fitcensemble, so I refered to the manual, and ran the simple following example, which I found on the fitcensemble help page:
load census1994
Mdl1 = fitcensemble(adultdata,’salary’)
these two simple lines of code should result in a classification ensemble but instead I get the following error:
Error using classreg.learning.internal.callBuiltinFitEnsemble
Error: File: callBuiltinFitEnsemble.m Line: 191 Column: 41
Brace indexing into the result of a function call is not supported. Assign the result of ‘curvature’ to a variable first, then brace index into it.
Error in classreg.learning.ensemble.Ensemble/fitBuiltinEnsemble (line 457)
classreg.learning.internal.callBuiltinFitEnsemble(this.Method,…
Error in classreg.learning.classif.ClassificationEnsemble (line 85)
this = fitBuiltinEnsemble(this,nlearn,dataSummary,classSummary);
Error in classreg.learning.FitTemplate/fit (line 292)
[varargout{1:nargout}] = this.MakeFitObject(X,Y,W,this.ModelParams,fitArgs{:});
Error in fitensemble (line 364)
obj = fit(temp,X,Y);
Error in fitcensemble (line 212)
obj = fitensemble(X, Y, Method, NumLearningCycles, Learners, …
So I feel like the problem is not my code, but instead I wonder if the problem is with some of the recent updates?
I am using version: ‘24.1.0.2628055 (R2024a) Update 4’
on a 64-bit Windows® platformI am getting strange errors trying to use fitcensemble, so I refered to the manual, and ran the simple following example, which I found on the fitcensemble help page:
load census1994
Mdl1 = fitcensemble(adultdata,’salary’)
these two simple lines of code should result in a classification ensemble but instead I get the following error:
Error using classreg.learning.internal.callBuiltinFitEnsemble
Error: File: callBuiltinFitEnsemble.m Line: 191 Column: 41
Brace indexing into the result of a function call is not supported. Assign the result of ‘curvature’ to a variable first, then brace index into it.
Error in classreg.learning.ensemble.Ensemble/fitBuiltinEnsemble (line 457)
classreg.learning.internal.callBuiltinFitEnsemble(this.Method,…
Error in classreg.learning.classif.ClassificationEnsemble (line 85)
this = fitBuiltinEnsemble(this,nlearn,dataSummary,classSummary);
Error in classreg.learning.FitTemplate/fit (line 292)
[varargout{1:nargout}] = this.MakeFitObject(X,Y,W,this.ModelParams,fitArgs{:});
Error in fitensemble (line 364)
obj = fit(temp,X,Y);
Error in fitcensemble (line 212)
obj = fitensemble(X, Y, Method, NumLearningCycles, Learners, …
So I feel like the problem is not my code, but instead I wonder if the problem is with some of the recent updates?
I am using version: ‘24.1.0.2628055 (R2024a) Update 4’
on a 64-bit Windows® platform I am getting strange errors trying to use fitcensemble, so I refered to the manual, and ran the simple following example, which I found on the fitcensemble help page:
load census1994
Mdl1 = fitcensemble(adultdata,’salary’)
these two simple lines of code should result in a classification ensemble but instead I get the following error:
Error using classreg.learning.internal.callBuiltinFitEnsemble
Error: File: callBuiltinFitEnsemble.m Line: 191 Column: 41
Brace indexing into the result of a function call is not supported. Assign the result of ‘curvature’ to a variable first, then brace index into it.
Error in classreg.learning.ensemble.Ensemble/fitBuiltinEnsemble (line 457)
classreg.learning.internal.callBuiltinFitEnsemble(this.Method,…
Error in classreg.learning.classif.ClassificationEnsemble (line 85)
this = fitBuiltinEnsemble(this,nlearn,dataSummary,classSummary);
Error in classreg.learning.FitTemplate/fit (line 292)
[varargout{1:nargout}] = this.MakeFitObject(X,Y,W,this.ModelParams,fitArgs{:});
Error in fitensemble (line 364)
obj = fit(temp,X,Y);
Error in fitcensemble (line 212)
obj = fitensemble(X, Y, Method, NumLearningCycles, Learners, …
So I feel like the problem is not my code, but instead I wonder if the problem is with some of the recent updates?
I am using version: ‘24.1.0.2628055 (R2024a) Update 4’
on a 64-bit Windows® platform fitcensemble, error, brace indexing MATLAB Answers — New Questions
Fail to start parpool on cluster
Hello, I’m submitting a batch job using SLURM:
sbatch shllscrpt96_16jul2024.sh false iter 1
shllscrpt96_16jul2024.sh itself looks like:
#!/bin/bash
#SBATCH -n 96
#SBATCH –mail-type="ALL"
#SBATCH –mem-per-cpu=8000M
module purge
module load matlab/2023b
matlab -nosplash -nodesktop -nodisplay -r "scriptfun_11jul2024($1,’$2′,$3); exit"
scriptfun_11jul2024(run_Spec, ms_Display, Category_MS) itself looks like:
function scriptfun_11jul2024(run_Spec,ms_Display,Category_MS)
n_cores = str2double(getenv(‘SLURM_NTASKS’));
pool = parpool(‘local’, n_cores);
"lots of statements (I’m happy to provide more details, but I’m 100% sure this is not the part causing the problem..)"
delete(pool)
end
The batch job "successfully" completes, but the output file shows that it failed:
Starting parallel pool (parpool) using the ‘local’ profile …
Preserving jobs with IDs: 13 14 15 16 because they contain crash dump files.
You can use ‘delete(myCluster.Jobs)’ to remove all jobs created with profile Processes. To create ‘myCluster’ use ‘myCluster = parcluster(‘Processes’)’.
Parallel pool using the ‘Processes’ profile is shutting down.
{�Error using parpool
Parallel pool failed to start with the following error. For more detailed
information, validate the profile ‘Processes’ in the Cluster Profile Manager.
Error in kimscriptfun_11jul2024 (line 13)
pool = parpool(‘local’, n_cores);
Caused by:
Error using
parallel.internal.pool.AbstractInteractiveClient>iThrowWithCause
Failed to initialize the interactive session.
Error using
parallel.internal.pool.AbstractInteractiveClient>iThrowIfBadParallelJobStatus
The interactive communicating job failed with no message.
}�
I’d appreciate any and all thoughts on what I might have done wrong. Thank you!Hello, I’m submitting a batch job using SLURM:
sbatch shllscrpt96_16jul2024.sh false iter 1
shllscrpt96_16jul2024.sh itself looks like:
#!/bin/bash
#SBATCH -n 96
#SBATCH –mail-type="ALL"
#SBATCH –mem-per-cpu=8000M
module purge
module load matlab/2023b
matlab -nosplash -nodesktop -nodisplay -r "scriptfun_11jul2024($1,’$2′,$3); exit"
scriptfun_11jul2024(run_Spec, ms_Display, Category_MS) itself looks like:
function scriptfun_11jul2024(run_Spec,ms_Display,Category_MS)
n_cores = str2double(getenv(‘SLURM_NTASKS’));
pool = parpool(‘local’, n_cores);
"lots of statements (I’m happy to provide more details, but I’m 100% sure this is not the part causing the problem..)"
delete(pool)
end
The batch job "successfully" completes, but the output file shows that it failed:
Starting parallel pool (parpool) using the ‘local’ profile …
Preserving jobs with IDs: 13 14 15 16 because they contain crash dump files.
You can use ‘delete(myCluster.Jobs)’ to remove all jobs created with profile Processes. To create ‘myCluster’ use ‘myCluster = parcluster(‘Processes’)’.
Parallel pool using the ‘Processes’ profile is shutting down.
{�Error using parpool
Parallel pool failed to start with the following error. For more detailed
information, validate the profile ‘Processes’ in the Cluster Profile Manager.
Error in kimscriptfun_11jul2024 (line 13)
pool = parpool(‘local’, n_cores);
Caused by:
Error using
parallel.internal.pool.AbstractInteractiveClient>iThrowWithCause
Failed to initialize the interactive session.
Error using
parallel.internal.pool.AbstractInteractiveClient>iThrowIfBadParallelJobStatus
The interactive communicating job failed with no message.
}�
I’d appreciate any and all thoughts on what I might have done wrong. Thank you! Hello, I’m submitting a batch job using SLURM:
sbatch shllscrpt96_16jul2024.sh false iter 1
shllscrpt96_16jul2024.sh itself looks like:
#!/bin/bash
#SBATCH -n 96
#SBATCH –mail-type="ALL"
#SBATCH –mem-per-cpu=8000M
module purge
module load matlab/2023b
matlab -nosplash -nodesktop -nodisplay -r "scriptfun_11jul2024($1,’$2′,$3); exit"
scriptfun_11jul2024(run_Spec, ms_Display, Category_MS) itself looks like:
function scriptfun_11jul2024(run_Spec,ms_Display,Category_MS)
n_cores = str2double(getenv(‘SLURM_NTASKS’));
pool = parpool(‘local’, n_cores);
"lots of statements (I’m happy to provide more details, but I’m 100% sure this is not the part causing the problem..)"
delete(pool)
end
The batch job "successfully" completes, but the output file shows that it failed:
Starting parallel pool (parpool) using the ‘local’ profile …
Preserving jobs with IDs: 13 14 15 16 because they contain crash dump files.
You can use ‘delete(myCluster.Jobs)’ to remove all jobs created with profile Processes. To create ‘myCluster’ use ‘myCluster = parcluster(‘Processes’)’.
Parallel pool using the ‘Processes’ profile is shutting down.
{�Error using parpool
Parallel pool failed to start with the following error. For more detailed
information, validate the profile ‘Processes’ in the Cluster Profile Manager.
Error in kimscriptfun_11jul2024 (line 13)
pool = parpool(‘local’, n_cores);
Caused by:
Error using
parallel.internal.pool.AbstractInteractiveClient>iThrowWithCause
Failed to initialize the interactive session.
Error using
parallel.internal.pool.AbstractInteractiveClient>iThrowIfBadParallelJobStatus
The interactive communicating job failed with no message.
}�
I’d appreciate any and all thoughts on what I might have done wrong. Thank you! parpool, cluster, batch-job MATLAB Answers — New Questions
Why do I receive an error when installing MATLAB 6.5 (R13)?
I get the error
ERROR: Unable to Start the Application – the class files could not be loaded
when installing MATLAB 6.x (R12.x / R13).
This error message appears just after the MATLAB 6.x (R12.x / R13) cd has been inserted in the CD-ROM drive.I get the error
ERROR: Unable to Start the Application – the class files could not be loaded
when installing MATLAB 6.x (R12.x / R13).
This error message appears just after the MATLAB 6.x (R12.x / R13) cd has been inserted in the CD-ROM drive. I get the error
ERROR: Unable to Start the Application – the class files could not be loaded
when installing MATLAB 6.x (R12.x / R13).
This error message appears just after the MATLAB 6.x (R12.x / R13) cd has been inserted in the CD-ROM drive. MATLAB Answers — New Questions
How can I integrate Virtual Arduino/Arduino simulator and simulink?
actually i am unable to get an arduino board for now.
I was doing A college project where i have A virtual Arduino circuit on Wokwi. I need to use matlab Simulink interface (GUI) to control Servo motors connected to arduino. ( Those servo motors are controlling a robotic arm. their kinetic equation and everythin else is ready).
please suggest me a good arduino Emulator where it can be interfaced with Simuink GUI.
or if any other method
maybe how to create virtual arduino circuit in simulink and control it with Simulink GUI??
plz suggest me a solution!actually i am unable to get an arduino board for now.
I was doing A college project where i have A virtual Arduino circuit on Wokwi. I need to use matlab Simulink interface (GUI) to control Servo motors connected to arduino. ( Those servo motors are controlling a robotic arm. their kinetic equation and everythin else is ready).
please suggest me a good arduino Emulator where it can be interfaced with Simuink GUI.
or if any other method
maybe how to create virtual arduino circuit in simulink and control it with Simulink GUI??
plz suggest me a solution! actually i am unable to get an arduino board for now.
I was doing A college project where i have A virtual Arduino circuit on Wokwi. I need to use matlab Simulink interface (GUI) to control Servo motors connected to arduino. ( Those servo motors are controlling a robotic arm. their kinetic equation and everythin else is ready).
please suggest me a good arduino Emulator where it can be interfaced with Simuink GUI.
or if any other method
maybe how to create virtual arduino circuit in simulink and control it with Simulink GUI??
plz suggest me a solution! arduino, simulink, matlab gui MATLAB Answers — New Questions
Leader follower approach formation control problem
Hello everyone, I’m Enrica. For a university project I have a task consisting on modeling on simulink three robots of which one leader and two followers. In the first scenario the robot has to follow a linear trajectory while in the second one the trajectory to follow is circular. In both scenarios the robots must start from different positions. For what concern the initial position of the robots, through the delay present in the loops, I tried to set the initial conditions inside the delay block but there is something that doesn’t work. The robots are described through a space-state block on both x and y axes and they are controlled by two different discrete PID, the internal one controls the velocity (that must be mantained constant) while the external one regulates the position. I tried to model the trajectories using the matlab function block and I tuned the PID with the "tune" button. Plotting the robots on the XY graph they don’t follow each other and I’m not able to identify where is the problem, if it’s related to the structure and connections of the simulink scheme or if it’s related to the space-state block or PID settinggs.
For a better understanding, attached you can find simulink and matlab codes (matlab versione R2023A).
Thank you to those who can help meHello everyone, I’m Enrica. For a university project I have a task consisting on modeling on simulink three robots of which one leader and two followers. In the first scenario the robot has to follow a linear trajectory while in the second one the trajectory to follow is circular. In both scenarios the robots must start from different positions. For what concern the initial position of the robots, through the delay present in the loops, I tried to set the initial conditions inside the delay block but there is something that doesn’t work. The robots are described through a space-state block on both x and y axes and they are controlled by two different discrete PID, the internal one controls the velocity (that must be mantained constant) while the external one regulates the position. I tried to model the trajectories using the matlab function block and I tuned the PID with the "tune" button. Plotting the robots on the XY graph they don’t follow each other and I’m not able to identify where is the problem, if it’s related to the structure and connections of the simulink scheme or if it’s related to the space-state block or PID settinggs.
For a better understanding, attached you can find simulink and matlab codes (matlab versione R2023A).
Thank you to those who can help me Hello everyone, I’m Enrica. For a university project I have a task consisting on modeling on simulink three robots of which one leader and two followers. In the first scenario the robot has to follow a linear trajectory while in the second one the trajectory to follow is circular. In both scenarios the robots must start from different positions. For what concern the initial position of the robots, through the delay present in the loops, I tried to set the initial conditions inside the delay block but there is something that doesn’t work. The robots are described through a space-state block on both x and y axes and they are controlled by two different discrete PID, the internal one controls the velocity (that must be mantained constant) while the external one regulates the position. I tried to model the trajectories using the matlab function block and I tuned the PID with the "tune" button. Plotting the robots on the XY graph they don’t follow each other and I’m not able to identify where is the problem, if it’s related to the structure and connections of the simulink scheme or if it’s related to the space-state block or PID settinggs.
For a better understanding, attached you can find simulink and matlab codes (matlab versione R2023A).
Thank you to those who can help me simulink MATLAB Answers — New Questions
where can i find help for simulink models
Hello,
i have a question about simulink in matlab. I am working on my thesis for my uni for which i created a boat navigation system and i want to simulate that system in simulink to tune my pid. In this system there is a gps receiver, an arduino and the rudder component (which is the actuator, the speed is constant). I also have the code required to operate the system. Are there any premade gps objects/models that i can find without purchasing extra toolboxes for matlab? And if there arent, where should i start as a begginer of simulink? All i find is models that i dont understand what they do or how they work.Hello,
i have a question about simulink in matlab. I am working on my thesis for my uni for which i created a boat navigation system and i want to simulate that system in simulink to tune my pid. In this system there is a gps receiver, an arduino and the rudder component (which is the actuator, the speed is constant). I also have the code required to operate the system. Are there any premade gps objects/models that i can find without purchasing extra toolboxes for matlab? And if there arent, where should i start as a begginer of simulink? All i find is models that i dont understand what they do or how they work. Hello,
i have a question about simulink in matlab. I am working on my thesis for my uni for which i created a boat navigation system and i want to simulate that system in simulink to tune my pid. In this system there is a gps receiver, an arduino and the rudder component (which is the actuator, the speed is constant). I also have the code required to operate the system. Are there any premade gps objects/models that i can find without purchasing extra toolboxes for matlab? And if there arent, where should i start as a begginer of simulink? All i find is models that i dont understand what they do or how they work. gps, simulation MATLAB Answers — New Questions
Relative/ Absolute path in Baseline Text
Is it possible to use relative path instead of absolute when adding baseline criteria?Is it possible to use relative path instead of absolute when adding baseline criteria? Is it possible to use relative path instead of absolute when adding baseline criteria? baseline, relative path MATLAB Answers — New Questions
parpool memory allocation per worker
Hello, I’m learning to submit batch jobs on SLURM. Realistically, I can request at most
#SBATCH -n 32
#SBATCH –mem-per-cpu=4G
In other words, I can request 32 cores and 128G of memory.
Now, I want to run a global optimization function (MultiStart) in parallel. Currently, I set the number of workers in parpool to be 32 (equal to the number of cores), but I constantly run into out of memory.
I’m curious if setting the number of workers in parpool to be, say, 16 can resolve this issue. If I’m not mistaken, if I set the number of workers in parpool to be 32, each worker has at most 4G of memory to use, whereas if I set the number of workers in parpool to be 16, each worker has at most 8G of memory to use.
I’d be grateful if you can correct me, or confirm what I wrote. Obviously, I can just try, but the problem is it takes a long time to get out of the queue, and the optimization itself takes days, so I want to make sure what I try makes sense before submitting.
Next, assuming what I wrote makes sense, what happens if I set the number of workers in parpool to be, say, 20, so 32/20 = 1.6 is not an integer.
Thank you for your guidance.Hello, I’m learning to submit batch jobs on SLURM. Realistically, I can request at most
#SBATCH -n 32
#SBATCH –mem-per-cpu=4G
In other words, I can request 32 cores and 128G of memory.
Now, I want to run a global optimization function (MultiStart) in parallel. Currently, I set the number of workers in parpool to be 32 (equal to the number of cores), but I constantly run into out of memory.
I’m curious if setting the number of workers in parpool to be, say, 16 can resolve this issue. If I’m not mistaken, if I set the number of workers in parpool to be 32, each worker has at most 4G of memory to use, whereas if I set the number of workers in parpool to be 16, each worker has at most 8G of memory to use.
I’d be grateful if you can correct me, or confirm what I wrote. Obviously, I can just try, but the problem is it takes a long time to get out of the queue, and the optimization itself takes days, so I want to make sure what I try makes sense before submitting.
Next, assuming what I wrote makes sense, what happens if I set the number of workers in parpool to be, say, 20, so 32/20 = 1.6 is not an integer.
Thank you for your guidance. Hello, I’m learning to submit batch jobs on SLURM. Realistically, I can request at most
#SBATCH -n 32
#SBATCH –mem-per-cpu=4G
In other words, I can request 32 cores and 128G of memory.
Now, I want to run a global optimization function (MultiStart) in parallel. Currently, I set the number of workers in parpool to be 32 (equal to the number of cores), but I constantly run into out of memory.
I’m curious if setting the number of workers in parpool to be, say, 16 can resolve this issue. If I’m not mistaken, if I set the number of workers in parpool to be 32, each worker has at most 4G of memory to use, whereas if I set the number of workers in parpool to be 16, each worker has at most 8G of memory to use.
I’d be grateful if you can correct me, or confirm what I wrote. Obviously, I can just try, but the problem is it takes a long time to get out of the queue, and the optimization itself takes days, so I want to make sure what I try makes sense before submitting.
Next, assuming what I wrote makes sense, what happens if I set the number of workers in parpool to be, say, 20, so 32/20 = 1.6 is not an integer.
Thank you for your guidance. parpool, numworkers, memory MATLAB Answers — New Questions
In the NewMaze function, get the text of the selected branching mode and use it as the second input to the amaze function.
In the NewMaze function, get the text of the selected branching mode and use it as the second input to the amaze function. In these que, in code view iam writing the correct still it shows "Does the NewMaze callback use the value from the branching mode button group?" What to do now??In the NewMaze function, get the text of the selected branching mode and use it as the second input to the amaze function. In these que, in code view iam writing the correct still it shows "Does the NewMaze callback use the value from the branching mode button group?" What to do now?? In the NewMaze function, get the text of the selected branching mode and use it as the second input to the amaze function. In these que, in code view iam writing the correct still it shows "Does the NewMaze callback use the value from the branching mode button group?" What to do now?? newmaze MATLAB Answers — New Questions
unable to add state in model
how to resolve below error?
Getting error on adding state: missing enumeration for statehow to resolve below error?
Getting error on adding state: missing enumeration for state how to resolve below error?
Getting error on adding state: missing enumeration for state stateflow MATLAB Answers — New Questions
can someone explain this error?
Unrecognized method, property, or field ‘CurrentFileIndex’ for class ‘matlab.io.datastore.CombinedDatastore’.
Error in snake (line 41)
if allImages.CurrentFileIndex <= height(aplostisiImages.Files)Unrecognized method, property, or field ‘CurrentFileIndex’ for class ‘matlab.io.datastore.CombinedDatastore’.
Error in snake (line 41)
if allImages.CurrentFileIndex <= height(aplostisiImages.Files) Unrecognized method, property, or field ‘CurrentFileIndex’ for class ‘matlab.io.datastore.CombinedDatastore’.
Error in snake (line 41)
if allImages.CurrentFileIndex <= height(aplostisiImages.Files) image processing, data acquisition MATLAB Answers — New Questions
Same error values are copied for different input parameters when using MATLAB Experiment Manager
I am trying to run the find gains for PID controller for a powertrain using genetic algorithm. In order to find optimal generations and populations of the genetic algorithm I run almost 1600 experminets in which the following parameters change. So, the input of the model is a WLTP drive cycle (1800s) long. I want to see if I train the Genetic Algorithm on only 30s and find the gains and then using those gains run the whole cycle to calculate the error.
But when I run the experiment I get the same error for all the 3 times with same population and generation combinantion:
However, when i check the simulink model the gains are different for each iteration which means the errors are somehow not updated in the table. I have tried different changes in the code but noting works. Here is the code, if someone could suggest some improvements:
function [mean_abs_error] = Experiment2Function1(params)
tend = params.time;
% Measure the current time before running the simulation
start_simulation_time = tic;
no_var = 2;
lb = [params.lbP params.lbI];
ub = [params.ubP params.ubI];
%GA options
ga_opt = optimoptions(‘ga’,’Display’,’off’,’Generations’,params.generations,’PopulationSize’,params.population,’PlotFcns’,@gaplotbestf);
obj_fn = @(k) optimization_PID(k);
%GA Command
[k, best] = ga((obj_fn),no_var,[],[],[],[],lb,ub,[],ga_opt)
% Measure the simulation time
simulation_time = toc(start_simulation_time);
%%
% Calculate Error
tend = 1800;
sim("Model1.slx")
driveCycleTime = DriveCycle(:,1);
driveCycleSpeed = DriveCycle(:,2);
index1800s = driveCycleTime <= tend;
driveCycle1800s = [driveCycleTime(index1800s), driveCycleSpeed(index1800s)];
% Extract the simulated result for the first 1800 seconds
simulatedTime = tout(tout <= tend);
simulatedSpeed = v_act_lim(tout <= tend);
% Interpolate the simulated result to match the drive cycle time points
simulatedSpeedInterp = interp1(simulatedTime, simulatedSpeed, driveCycle1800s(:, 1), ‘linear’);
% Calculate and plot the error
error = (driveCycle1800s(:, 2) – simulatedSpeedInterp)./ driveCycle1800s(:,2)*100;
abs_error = abs(error);
% Exclude Infinite Values
validIndices = isfinite(abs_error);
validAbsError = abs_error(validIndices);
mean_abs_error = mean(validAbsError)
end
The objective function is as follows:
function cost = optimization_PID(k)
assignin("base", "k", k);
sim("Model1.slx");
itae_values = ITAE.Data;
cost = sum(itae_values);
endI am trying to run the find gains for PID controller for a powertrain using genetic algorithm. In order to find optimal generations and populations of the genetic algorithm I run almost 1600 experminets in which the following parameters change. So, the input of the model is a WLTP drive cycle (1800s) long. I want to see if I train the Genetic Algorithm on only 30s and find the gains and then using those gains run the whole cycle to calculate the error.
But when I run the experiment I get the same error for all the 3 times with same population and generation combinantion:
However, when i check the simulink model the gains are different for each iteration which means the errors are somehow not updated in the table. I have tried different changes in the code but noting works. Here is the code, if someone could suggest some improvements:
function [mean_abs_error] = Experiment2Function1(params)
tend = params.time;
% Measure the current time before running the simulation
start_simulation_time = tic;
no_var = 2;
lb = [params.lbP params.lbI];
ub = [params.ubP params.ubI];
%GA options
ga_opt = optimoptions(‘ga’,’Display’,’off’,’Generations’,params.generations,’PopulationSize’,params.population,’PlotFcns’,@gaplotbestf);
obj_fn = @(k) optimization_PID(k);
%GA Command
[k, best] = ga((obj_fn),no_var,[],[],[],[],lb,ub,[],ga_opt)
% Measure the simulation time
simulation_time = toc(start_simulation_time);
%%
% Calculate Error
tend = 1800;
sim("Model1.slx")
driveCycleTime = DriveCycle(:,1);
driveCycleSpeed = DriveCycle(:,2);
index1800s = driveCycleTime <= tend;
driveCycle1800s = [driveCycleTime(index1800s), driveCycleSpeed(index1800s)];
% Extract the simulated result for the first 1800 seconds
simulatedTime = tout(tout <= tend);
simulatedSpeed = v_act_lim(tout <= tend);
% Interpolate the simulated result to match the drive cycle time points
simulatedSpeedInterp = interp1(simulatedTime, simulatedSpeed, driveCycle1800s(:, 1), ‘linear’);
% Calculate and plot the error
error = (driveCycle1800s(:, 2) – simulatedSpeedInterp)./ driveCycle1800s(:,2)*100;
abs_error = abs(error);
% Exclude Infinite Values
validIndices = isfinite(abs_error);
validAbsError = abs_error(validIndices);
mean_abs_error = mean(validAbsError)
end
The objective function is as follows:
function cost = optimization_PID(k)
assignin("base", "k", k);
sim("Model1.slx");
itae_values = ITAE.Data;
cost = sum(itae_values);
end I am trying to run the find gains for PID controller for a powertrain using genetic algorithm. In order to find optimal generations and populations of the genetic algorithm I run almost 1600 experminets in which the following parameters change. So, the input of the model is a WLTP drive cycle (1800s) long. I want to see if I train the Genetic Algorithm on only 30s and find the gains and then using those gains run the whole cycle to calculate the error.
But when I run the experiment I get the same error for all the 3 times with same population and generation combinantion:
However, when i check the simulink model the gains are different for each iteration which means the errors are somehow not updated in the table. I have tried different changes in the code but noting works. Here is the code, if someone could suggest some improvements:
function [mean_abs_error] = Experiment2Function1(params)
tend = params.time;
% Measure the current time before running the simulation
start_simulation_time = tic;
no_var = 2;
lb = [params.lbP params.lbI];
ub = [params.ubP params.ubI];
%GA options
ga_opt = optimoptions(‘ga’,’Display’,’off’,’Generations’,params.generations,’PopulationSize’,params.population,’PlotFcns’,@gaplotbestf);
obj_fn = @(k) optimization_PID(k);
%GA Command
[k, best] = ga((obj_fn),no_var,[],[],[],[],lb,ub,[],ga_opt)
% Measure the simulation time
simulation_time = toc(start_simulation_time);
%%
% Calculate Error
tend = 1800;
sim("Model1.slx")
driveCycleTime = DriveCycle(:,1);
driveCycleSpeed = DriveCycle(:,2);
index1800s = driveCycleTime <= tend;
driveCycle1800s = [driveCycleTime(index1800s), driveCycleSpeed(index1800s)];
% Extract the simulated result for the first 1800 seconds
simulatedTime = tout(tout <= tend);
simulatedSpeed = v_act_lim(tout <= tend);
% Interpolate the simulated result to match the drive cycle time points
simulatedSpeedInterp = interp1(simulatedTime, simulatedSpeed, driveCycle1800s(:, 1), ‘linear’);
% Calculate and plot the error
error = (driveCycle1800s(:, 2) – simulatedSpeedInterp)./ driveCycle1800s(:,2)*100;
abs_error = abs(error);
% Exclude Infinite Values
validIndices = isfinite(abs_error);
validAbsError = abs_error(validIndices);
mean_abs_error = mean(validAbsError)
end
The objective function is as follows:
function cost = optimization_PID(k)
assignin("base", "k", k);
sim("Model1.slx");
itae_values = ITAE.Data;
cost = sum(itae_values);
end experiment manager, genetic algorithm, error MATLAB Answers — New Questions
s_function 2dof
Hello!!!!
l try to use s_function in simulink and I get this error:
Error in ‘BRAS_2DOF/S-Function1’ while executing MATLAB S-function ‘Dynamique2DOF’, flag = 0 (initialize), at start of simulation.
Caused by:
Subscript indices must either be real positive integers or logicals.
this is my code in joint pieceHello!!!!
l try to use s_function in simulink and I get this error:
Error in ‘BRAS_2DOF/S-Function1’ while executing MATLAB S-function ‘Dynamique2DOF’, flag = 0 (initialize), at start of simulation.
Caused by:
Subscript indices must either be real positive integers or logicals.
this is my code in joint piece Hello!!!!
l try to use s_function in simulink and I get this error:
Error in ‘BRAS_2DOF/S-Function1’ while executing MATLAB S-function ‘Dynamique2DOF’, flag = 0 (initialize), at start of simulation.
Caused by:
Subscript indices must either be real positive integers or logicals.
this is my code in joint piece error sfuntion 2dof MATLAB Answers — New Questions