Tag Archives: matlab
Unable to open custom file while building model in Linux
I’m trying to build a model in Linux environment. But it throws error as unable to open source file. This error is for a custom header file, which is verified to be present in the path (not current path).
I have tried to build the same model in Windows environment, where is builds without any issues.
Does anyone have solution to this problem? Thanks in advance.
P.S. I’m using MATLAB R2022b.I’m trying to build a model in Linux environment. But it throws error as unable to open source file. This error is for a custom header file, which is verified to be present in the path (not current path).
I have tried to build the same model in Windows environment, where is builds without any issues.
Does anyone have solution to this problem? Thanks in advance.
P.S. I’m using MATLAB R2022b. I’m trying to build a model in Linux environment. But it throws error as unable to open source file. This error is for a custom header file, which is verified to be present in the path (not current path).
I have tried to build the same model in Windows environment, where is builds without any issues.
Does anyone have solution to this problem? Thanks in advance.
P.S. I’m using MATLAB R2022b. linux, custom file MATLAB Answers — New Questions
Hessian matrix produced by fmininuc
Dear Sir/Madam:
fminunc is producing a Hessian matrix such that, when I take its Cholesky factor:
[CF,pp]=chol(Hessian);
I get that pp>0. Is there a way to force the algorithm to produce a Hessian such that pp=0?
Many thanks !
Best wishes,
Luca BenatiDear Sir/Madam:
fminunc is producing a Hessian matrix such that, when I take its Cholesky factor:
[CF,pp]=chol(Hessian);
I get that pp>0. Is there a way to force the algorithm to produce a Hessian such that pp=0?
Many thanks !
Best wishes,
Luca Benati Dear Sir/Madam:
fminunc is producing a Hessian matrix such that, when I take its Cholesky factor:
[CF,pp]=chol(Hessian);
I get that pp>0. Is there a way to force the algorithm to produce a Hessian such that pp=0?
Many thanks !
Best wishes,
Luca Benati fiminunc, hessian matrix MATLAB Answers — New Questions
Why do I get “Ignoring extra legend entries” evein in such trivial case?
Hello everyone,
MATLAB never misses on destroying any confidence you have in you coding skills.
I am coding a relatively easy script for data analysis, where I would plot data with a legend. In the code, I loop a plot() function to stack lines and then I ask to display a legend. However, I get the classic error from MATLAB:
Warning: Ignoring extra legend entries.
> In legend>process_inputs (line 590)
In legend>make_legend (line 319)
In legend (line 263)
Without dumping here the entire code, which is redundant, I get the same warning in an analogous and much simpler case:
figure;
x = 1:10;
y = randn(5, 10);
Labs = ["1", "2", "3", "4", "5"];
for i = 1:5
plot(x, y(i,:)); hold on
end
legend(Labs)
The result is 5 lines in the plot, but MATLAB throws the warning above, displaying an empty legend in the figure.
If I try instead the "DislayName" method, the warning disappears, but the legend doesn’t even show up.
figure;
x = 1:10;
y = randn(5, 10);
Labs = ["1", "2", "3", "4", "5"];
for i = 1:5
plot(x, y(i,:), "DisplayName", Labs{i}); hold on
end
legend
Can someone please help make sense of this? Thank you very much in advance.Hello everyone,
MATLAB never misses on destroying any confidence you have in you coding skills.
I am coding a relatively easy script for data analysis, where I would plot data with a legend. In the code, I loop a plot() function to stack lines and then I ask to display a legend. However, I get the classic error from MATLAB:
Warning: Ignoring extra legend entries.
> In legend>process_inputs (line 590)
In legend>make_legend (line 319)
In legend (line 263)
Without dumping here the entire code, which is redundant, I get the same warning in an analogous and much simpler case:
figure;
x = 1:10;
y = randn(5, 10);
Labs = ["1", "2", "3", "4", "5"];
for i = 1:5
plot(x, y(i,:)); hold on
end
legend(Labs)
The result is 5 lines in the plot, but MATLAB throws the warning above, displaying an empty legend in the figure.
If I try instead the "DislayName" method, the warning disappears, but the legend doesn’t even show up.
figure;
x = 1:10;
y = randn(5, 10);
Labs = ["1", "2", "3", "4", "5"];
for i = 1:5
plot(x, y(i,:), "DisplayName", Labs{i}); hold on
end
legend
Can someone please help make sense of this? Thank you very much in advance. Hello everyone,
MATLAB never misses on destroying any confidence you have in you coding skills.
I am coding a relatively easy script for data analysis, where I would plot data with a legend. In the code, I loop a plot() function to stack lines and then I ask to display a legend. However, I get the classic error from MATLAB:
Warning: Ignoring extra legend entries.
> In legend>process_inputs (line 590)
In legend>make_legend (line 319)
In legend (line 263)
Without dumping here the entire code, which is redundant, I get the same warning in an analogous and much simpler case:
figure;
x = 1:10;
y = randn(5, 10);
Labs = ["1", "2", "3", "4", "5"];
for i = 1:5
plot(x, y(i,:)); hold on
end
legend(Labs)
The result is 5 lines in the plot, but MATLAB throws the warning above, displaying an empty legend in the figure.
If I try instead the "DislayName" method, the warning disappears, but the legend doesn’t even show up.
figure;
x = 1:10;
y = randn(5, 10);
Labs = ["1", "2", "3", "4", "5"];
for i = 1:5
plot(x, y(i,:), "DisplayName", Labs{i}); hold on
end
legend
Can someone please help make sense of this? Thank you very much in advance. legend, plot, loop MATLAB Answers — New Questions
Saving of MATLAB Image File not consistent
I have written a code to generate several plots from an array of data. Whenever I am trying to save those image files by savefig (for .fig Matlab files) or by saveas as jpeg or eps format, the saving of the image files is inconsistent. For a group of plots, savefig(‘FileName.fig’) and saveas(gcf,’FileNameeps’,’eps’) are working, i.e., images are saved in the current folder. However, sometimes the newly generated plots are not overwriting the previously generated plots (for some other runs) in the folder.
I have tried including the following before each plot:
delete FileName FileNameeps
But the problem persists. Only when I manually delete all the previous image files from the previous runs for the current folder, newer plots are saved. What can be a fix? Such problem did not occur when I had to generate fewer plots (as in codes generating one dozen plots in stead of some 4 dozen plots)
Thanks in advance.I have written a code to generate several plots from an array of data. Whenever I am trying to save those image files by savefig (for .fig Matlab files) or by saveas as jpeg or eps format, the saving of the image files is inconsistent. For a group of plots, savefig(‘FileName.fig’) and saveas(gcf,’FileNameeps’,’eps’) are working, i.e., images are saved in the current folder. However, sometimes the newly generated plots are not overwriting the previously generated plots (for some other runs) in the folder.
I have tried including the following before each plot:
delete FileName FileNameeps
But the problem persists. Only when I manually delete all the previous image files from the previous runs for the current folder, newer plots are saved. What can be a fix? Such problem did not occur when I had to generate fewer plots (as in codes generating one dozen plots in stead of some 4 dozen plots)
Thanks in advance. I have written a code to generate several plots from an array of data. Whenever I am trying to save those image files by savefig (for .fig Matlab files) or by saveas as jpeg or eps format, the saving of the image files is inconsistent. For a group of plots, savefig(‘FileName.fig’) and saveas(gcf,’FileNameeps’,’eps’) are working, i.e., images are saved in the current folder. However, sometimes the newly generated plots are not overwriting the previously generated plots (for some other runs) in the folder.
I have tried including the following before each plot:
delete FileName FileNameeps
But the problem persists. Only when I manually delete all the previous image files from the previous runs for the current folder, newer plots are saved. What can be a fix? Such problem did not occur when I had to generate fewer plots (as in codes generating one dozen plots in stead of some 4 dozen plots)
Thanks in advance. matlab plots, savefig, saveas MATLAB Answers — New Questions
How do I change the format of symbolic output
When I type:
>> syms x y
>> solve(y-x^2,x)
I get:
ans =
[ 1/2 ]
[y ]
[ ]
[ 1/2]
[-y ]
How do I change the output format so to get MATLAB code (with * and ^), which by the way is what I used to get (before today)?When I type:
>> syms x y
>> solve(y-x^2,x)
I get:
ans =
[ 1/2 ]
[y ]
[ ]
[ 1/2]
[-y ]
How do I change the output format so to get MATLAB code (with * and ^), which by the way is what I used to get (before today)? When I type:
>> syms x y
>> solve(y-x^2,x)
I get:
ans =
[ 1/2 ]
[y ]
[ ]
[ 1/2]
[-y ]
How do I change the output format so to get MATLAB code (with * and ^), which by the way is what I used to get (before today)? output format MATLAB Answers — New Questions
Implementing a seismic source
Dear all,
I’m a new matlab user and I need to create a seismic pulse which the emitting source is moving (time dependent).
I have no idea how to do it.
Thanks in advance for your help.Dear all,
I’m a new matlab user and I need to create a seismic pulse which the emitting source is moving (time dependent).
I have no idea how to do it.
Thanks in advance for your help. Dear all,
I’m a new matlab user and I need to create a seismic pulse which the emitting source is moving (time dependent).
I have no idea how to do it.
Thanks in advance for your help. seismic sources, seismic pulse, seismic emitting source, source level MATLAB Answers — New Questions
Matlab code for Optimization of Distributed Generation
Matlab code for Optimization of Distributed GenerationMatlab code for Optimization of Distributed Generation Matlab code for Optimization of Distributed Generation code, graph MATLAB Answers — New Questions
CUDA Error: Illegal Memory Access in MATLAB Code
Hi everyone,
I’m encountering a CUDA error in my MATLAB code during the second iteration of a loop. Specifically, the error occurs at the wait(gd); command after calling setConstantMemory(kPAM, ‘g_nT_Start’, single((i) * Max_T_dim));. The error message is:
Error using parallel.gpu.CUDADevice/wait
Encountered unexpected error during CUDA execution. The CUDA error was:
an illegal memory access was encountered
Here is the relevant part of my code:
kPAM = parallel.gpu.CUDAKernel(‘PAM.ptx’, ‘PAM.cu’, ‘_PAM’);
kPAM.ThreadBlockSize = [1024,1,1];
kPAM.GridSize = [ceil(struct_GPU.Pix.nTdim/kPAM.ThreadBlockSize(1)),struct_GPU.Pix.nYdim*struct_GPU.Pix.nXdim, struct_GPU.Pix.nZdim];
setConstantMemory(kPAM,’g_nT_Start’,single(0));
for i = 1:Lteration
if i == Lteration % Last iteration
last_T_dim = struct_GPU.Pix.nTdim – (Max_T_dim * i);
last_input_Array = gpuArray(single(zeros(last_T_dim, struct_GPU.Pix.nZdim, …
struct_GPU.Pix.nXdim * struct_GPU.Pix.nYdim)));
assignin(‘base’, ‘PAM_txyz_gpu’, last_input_Array);
assignin(‘base’, ‘PAM_txyz_cpu’, last_input_Array);
elseif i > 1
PAM_txyz_gpu = input_Array;
PAM_txyz_cpu = output_Array;
else
PAM_txyz_gpu = input_Array;
PAM_txyz_cpu = output_Array;
end
[PAM_txyz_gpu] = feval(kPAM, PAM_txyz_gpu, RFData_gpu);
setConstantMemory(kPAM, ‘g_nT_Start’, single((i) * Max_T_dim));
wait(gd);
PAM_txyz_cpu = gather(PAM_txyz_gpu);
wait(gd);
PAM_xyz_cpu = PAM_xyz_cpu + squeeze(sum(PAM_txyz_cpu, 1));
end
clear PAM_txyz_cpu PAM_txyz_gpu last_input_Array input_Array;
reset(gd);
Does anyone have any suggestions on how to resolve this illegal memory access issue?
Thanks in advance!Hi everyone,
I’m encountering a CUDA error in my MATLAB code during the second iteration of a loop. Specifically, the error occurs at the wait(gd); command after calling setConstantMemory(kPAM, ‘g_nT_Start’, single((i) * Max_T_dim));. The error message is:
Error using parallel.gpu.CUDADevice/wait
Encountered unexpected error during CUDA execution. The CUDA error was:
an illegal memory access was encountered
Here is the relevant part of my code:
kPAM = parallel.gpu.CUDAKernel(‘PAM.ptx’, ‘PAM.cu’, ‘_PAM’);
kPAM.ThreadBlockSize = [1024,1,1];
kPAM.GridSize = [ceil(struct_GPU.Pix.nTdim/kPAM.ThreadBlockSize(1)),struct_GPU.Pix.nYdim*struct_GPU.Pix.nXdim, struct_GPU.Pix.nZdim];
setConstantMemory(kPAM,’g_nT_Start’,single(0));
for i = 1:Lteration
if i == Lteration % Last iteration
last_T_dim = struct_GPU.Pix.nTdim – (Max_T_dim * i);
last_input_Array = gpuArray(single(zeros(last_T_dim, struct_GPU.Pix.nZdim, …
struct_GPU.Pix.nXdim * struct_GPU.Pix.nYdim)));
assignin(‘base’, ‘PAM_txyz_gpu’, last_input_Array);
assignin(‘base’, ‘PAM_txyz_cpu’, last_input_Array);
elseif i > 1
PAM_txyz_gpu = input_Array;
PAM_txyz_cpu = output_Array;
else
PAM_txyz_gpu = input_Array;
PAM_txyz_cpu = output_Array;
end
[PAM_txyz_gpu] = feval(kPAM, PAM_txyz_gpu, RFData_gpu);
setConstantMemory(kPAM, ‘g_nT_Start’, single((i) * Max_T_dim));
wait(gd);
PAM_txyz_cpu = gather(PAM_txyz_gpu);
wait(gd);
PAM_xyz_cpu = PAM_xyz_cpu + squeeze(sum(PAM_txyz_cpu, 1));
end
clear PAM_txyz_cpu PAM_txyz_gpu last_input_Array input_Array;
reset(gd);
Does anyone have any suggestions on how to resolve this illegal memory access issue?
Thanks in advance! Hi everyone,
I’m encountering a CUDA error in my MATLAB code during the second iteration of a loop. Specifically, the error occurs at the wait(gd); command after calling setConstantMemory(kPAM, ‘g_nT_Start’, single((i) * Max_T_dim));. The error message is:
Error using parallel.gpu.CUDADevice/wait
Encountered unexpected error during CUDA execution. The CUDA error was:
an illegal memory access was encountered
Here is the relevant part of my code:
kPAM = parallel.gpu.CUDAKernel(‘PAM.ptx’, ‘PAM.cu’, ‘_PAM’);
kPAM.ThreadBlockSize = [1024,1,1];
kPAM.GridSize = [ceil(struct_GPU.Pix.nTdim/kPAM.ThreadBlockSize(1)),struct_GPU.Pix.nYdim*struct_GPU.Pix.nXdim, struct_GPU.Pix.nZdim];
setConstantMemory(kPAM,’g_nT_Start’,single(0));
for i = 1:Lteration
if i == Lteration % Last iteration
last_T_dim = struct_GPU.Pix.nTdim – (Max_T_dim * i);
last_input_Array = gpuArray(single(zeros(last_T_dim, struct_GPU.Pix.nZdim, …
struct_GPU.Pix.nXdim * struct_GPU.Pix.nYdim)));
assignin(‘base’, ‘PAM_txyz_gpu’, last_input_Array);
assignin(‘base’, ‘PAM_txyz_cpu’, last_input_Array);
elseif i > 1
PAM_txyz_gpu = input_Array;
PAM_txyz_cpu = output_Array;
else
PAM_txyz_gpu = input_Array;
PAM_txyz_cpu = output_Array;
end
[PAM_txyz_gpu] = feval(kPAM, PAM_txyz_gpu, RFData_gpu);
setConstantMemory(kPAM, ‘g_nT_Start’, single((i) * Max_T_dim));
wait(gd);
PAM_txyz_cpu = gather(PAM_txyz_gpu);
wait(gd);
PAM_xyz_cpu = PAM_xyz_cpu + squeeze(sum(PAM_txyz_cpu, 1));
end
clear PAM_txyz_cpu PAM_txyz_gpu last_input_Array input_Array;
reset(gd);
Does anyone have any suggestions on how to resolve this illegal memory access issue?
Thanks in advance! gpu, cuda, ptx MATLAB Answers — New Questions
State 에서의 AUTOSAR server runnable 호출 방법
안녕하세요.
AUTOSAR Application SWC 를 MBD 로 구현하고자 하는데 state 내에서의 server runnable 호출을 하려면 어떻게 해야 하는지요?
state 내에 단순히 함수명을 이용한 호출을 시도하면 아래와 같은 오류가 발생합니다.
"AUTOSAR operation ‘AuxH_SnsrRlyCtrl_SetMode’ requires changes to the Simulink Function prototype that cannot be applied to ‘StateHandler/R_StateHandler_10ms_sys/IFCU_State’. For AUTOSAR targets, changes to the Simulink Function prototype are only supported for ‘Simulink Function’ or ‘Function Caller’ blocks in the top model."
특정 state 에서만 server runnable 을 호출하고자 할 때 어떤 방법을 사용하면 되는지 가이드 부탁 드립니다.
감사합니다.안녕하세요.
AUTOSAR Application SWC 를 MBD 로 구현하고자 하는데 state 내에서의 server runnable 호출을 하려면 어떻게 해야 하는지요?
state 내에 단순히 함수명을 이용한 호출을 시도하면 아래와 같은 오류가 발생합니다.
"AUTOSAR operation ‘AuxH_SnsrRlyCtrl_SetMode’ requires changes to the Simulink Function prototype that cannot be applied to ‘StateHandler/R_StateHandler_10ms_sys/IFCU_State’. For AUTOSAR targets, changes to the Simulink Function prototype are only supported for ‘Simulink Function’ or ‘Function Caller’ blocks in the top model."
특정 state 에서만 server runnable 을 호출하고자 할 때 어떤 방법을 사용하면 되는지 가이드 부탁 드립니다.
감사합니다. 안녕하세요.
AUTOSAR Application SWC 를 MBD 로 구현하고자 하는데 state 내에서의 server runnable 호출을 하려면 어떻게 해야 하는지요?
state 내에 단순히 함수명을 이용한 호출을 시도하면 아래와 같은 오류가 발생합니다.
"AUTOSAR operation ‘AuxH_SnsrRlyCtrl_SetMode’ requires changes to the Simulink Function prototype that cannot be applied to ‘StateHandler/R_StateHandler_10ms_sys/IFCU_State’. For AUTOSAR targets, changes to the Simulink Function prototype are only supported for ‘Simulink Function’ or ‘Function Caller’ blocks in the top model."
특정 state 에서만 server runnable 을 호출하고자 할 때 어떤 방법을 사용하면 되는지 가이드 부탁 드립니다.
감사합니다. autosar, stateflow MATLAB Answers — New Questions
I am new to use MATLAB ZOS-API and struggling to execute this file.
I am trying to carry non-sequential raytracing on a system of mine, I tried using a predefined script that works very well on an existing system but when I replace this with my system I am facing some errors. I am not able to resolve them and don’t know why this is happening.
Here is my code and error,
function [ r ] = MATLABStandalone_NSC_ray_trace( args )
if ~exist(‘args’, ‘var’)
args = [];
end
% Initialize the OpticStudio connection
TheApplication = InitConnection();
if isempty(TheApplication)
% failed to initialize a connection
r = [];
else
try
r = BeginApplication(TheApplication, args);
CleanupConnection(TheApplication);
catch err
CleanupConnection(TheApplication);
rethrow(err);
end
end
end
function [r] = BeginApplication(TheApplication, args)
import ZOSAPI.*;
% creates a new API directory
apiPath = System.String.Concat(TheApplication.SamplesDir, ‘APIMatlab’);
if (exist(char(apiPath)) == 0) mkdir(char(apiPath)); end;
% Set up primary optical system
TheSystem = TheApplication.PrimarySystem;
sampleDir = TheApplication.SamplesDir;
%! [e02s01_m]
% Open file
testFile = System.String.Concat(sampleDir, ‘"D:PracticeZemax PracticeBeam_expander-NONSEQ.zos"’);
TheSystem.LoadFile(testFile, false);
%! [e02s01_m]
%! [e02s02_m]
% Create ray trace
NSCRayTrace = TheSystem.Tools.OpenNSCRayTrace();
NSCRayTrace.SplitNSCRays = false;
NSCRayTrace.ScatterNSCRays = false;
NSCRayTrace.UsePolarization = false;
NSCRayTrace.IgnoreErrors = true;
NSCRayTrace.SaveRays = false;
%NSCRayTrace.ClearDetectors(0);
% Run ray trace
NSCRayTrace.RunAndWaitForCompletion();
NSCRayTrace.Close();
%! [e02s02_m]
% Non-sequential component editor
TheNCE = TheSystem.NCE;
%! [e02s03_m]
% Get detector data
data = NET.createArray(‘System.Double’, TheNCE.GetDetectorSize(6));
TheNCE.GetAllDetectorData(6, 1, TheNCE.GetDetectorSize(6), data);
[~, rows, cols] = TheNCE.GetDetectorDimensions(6);
% rotates and flips image to reflect ZOS orientation
detectorData = flipud(rot90(reshape(data.double, rows, cols)));
%! [e02s03_m]
% Plot
close all;
figure(‘position’, [50, 150, 700, 600])
surf(detectorData);
axis([1 100 1 100]);
shading flat;
xlabel(‘Column #’);
ylabel(‘Row #’);
title(‘Incoherent Illuminance [lm/cm^2]’);
colorbar;
r = [];
end
function app = InitConnection()
import System.Reflection.*;
% Find the installed version of OpticStudio.
zemaxData = winqueryreg(‘HKEY_CURRENT_USER’, ‘SoftwareZemax’, ‘ZemaxRoot’);
NetHelper = strcat(zemaxData, ‘ZOS-APILibrariesZOSAPI_NetHelper.dll’);
% Note — uncomment the following line to use a custom NetHelper path
% NetHelper = ‘C:UsersDocumentsZemaxZOS-APILibrariesZOSAPI_NetHelper.dll’;
NET.addAssembly(NetHelper);
success = ZOSAPI_NetHelper.ZOSAPI_Initializer.Initialize();
% Note — uncomment the following line to use a custom initialization path
% success = ZOSAPI_NetHelper.ZOSAPI_Initializer.Initialize(‘C:Program FilesOpticStudio’);
if success == 1
LogMessage(strcat(‘Found OpticStudio at: ‘, char(ZOSAPI_NetHelper.ZOSAPI_Initializer.GetZemaxDirectory())));
else
app = [];
return;
end
% Now load the ZOS-API assemblies
NET.addAssembly(AssemblyName(‘ZOSAPI_Interfaces’));
NET.addAssembly(AssemblyName(‘ZOSAPI’));
% Create the initial connection class
TheConnection = ZOSAPI.ZOSAPI_Connection();
% Attempt to create a Standalone connection
% NOTE – if this fails with a message like ‘Unable to load one or more of
% the requested types’, it is usually caused by try to connect to a 32-bit
% version of OpticStudio from a 64-bit version of MATLAB (or vice-versa).
% This is an issue with how MATLAB interfaces with .NET, and the only
% current workaround is to use 32- or 64-bit versions of both applications.
app = TheConnection.CreateNewApplication();
if isempty(app)
HandleError(‘An unknown connection error occurred!’);
end
if ~app.IsValidLicenseForAPI
HandleError(‘License check failed!’);
app = [];
end
end
function LogMessage(msg)
disp(msg);
end
function HandleError(error)
ME = MXException(error);
throw(ME);
end
function CleanupConnection(TheApplication)
% Note – this will close down the connection.
% If you want to keep the application open, you should skip this step
% and store the instance somewhere instead.
TheApplication.CloseApplication();
end
This is the error I am getting,
Beam_expander_NSC_raytrace
Found OpticStudio at:c:program filesansys zemax opticstudio 2023 r2.00
Unrecognized field name "RunAndWaitForCompletion".
Error in Beam_expander_NSC_raytrace>BeginApplication (line 55)
NSCRayTrace.RunAndWaitForCompletion();
Error in Beam_expander_NSC_raytrace (line 16)
r = BeginApplication(TheApplication, args);
I know lot of people doesn’t have access to Zemax (If you have zemax I am attaching the .zos file), and any help in any regards is much appreciated.
Thank you and regards,
NavaneethI am trying to carry non-sequential raytracing on a system of mine, I tried using a predefined script that works very well on an existing system but when I replace this with my system I am facing some errors. I am not able to resolve them and don’t know why this is happening.
Here is my code and error,
function [ r ] = MATLABStandalone_NSC_ray_trace( args )
if ~exist(‘args’, ‘var’)
args = [];
end
% Initialize the OpticStudio connection
TheApplication = InitConnection();
if isempty(TheApplication)
% failed to initialize a connection
r = [];
else
try
r = BeginApplication(TheApplication, args);
CleanupConnection(TheApplication);
catch err
CleanupConnection(TheApplication);
rethrow(err);
end
end
end
function [r] = BeginApplication(TheApplication, args)
import ZOSAPI.*;
% creates a new API directory
apiPath = System.String.Concat(TheApplication.SamplesDir, ‘APIMatlab’);
if (exist(char(apiPath)) == 0) mkdir(char(apiPath)); end;
% Set up primary optical system
TheSystem = TheApplication.PrimarySystem;
sampleDir = TheApplication.SamplesDir;
%! [e02s01_m]
% Open file
testFile = System.String.Concat(sampleDir, ‘"D:PracticeZemax PracticeBeam_expander-NONSEQ.zos"’);
TheSystem.LoadFile(testFile, false);
%! [e02s01_m]
%! [e02s02_m]
% Create ray trace
NSCRayTrace = TheSystem.Tools.OpenNSCRayTrace();
NSCRayTrace.SplitNSCRays = false;
NSCRayTrace.ScatterNSCRays = false;
NSCRayTrace.UsePolarization = false;
NSCRayTrace.IgnoreErrors = true;
NSCRayTrace.SaveRays = false;
%NSCRayTrace.ClearDetectors(0);
% Run ray trace
NSCRayTrace.RunAndWaitForCompletion();
NSCRayTrace.Close();
%! [e02s02_m]
% Non-sequential component editor
TheNCE = TheSystem.NCE;
%! [e02s03_m]
% Get detector data
data = NET.createArray(‘System.Double’, TheNCE.GetDetectorSize(6));
TheNCE.GetAllDetectorData(6, 1, TheNCE.GetDetectorSize(6), data);
[~, rows, cols] = TheNCE.GetDetectorDimensions(6);
% rotates and flips image to reflect ZOS orientation
detectorData = flipud(rot90(reshape(data.double, rows, cols)));
%! [e02s03_m]
% Plot
close all;
figure(‘position’, [50, 150, 700, 600])
surf(detectorData);
axis([1 100 1 100]);
shading flat;
xlabel(‘Column #’);
ylabel(‘Row #’);
title(‘Incoherent Illuminance [lm/cm^2]’);
colorbar;
r = [];
end
function app = InitConnection()
import System.Reflection.*;
% Find the installed version of OpticStudio.
zemaxData = winqueryreg(‘HKEY_CURRENT_USER’, ‘SoftwareZemax’, ‘ZemaxRoot’);
NetHelper = strcat(zemaxData, ‘ZOS-APILibrariesZOSAPI_NetHelper.dll’);
% Note — uncomment the following line to use a custom NetHelper path
% NetHelper = ‘C:UsersDocumentsZemaxZOS-APILibrariesZOSAPI_NetHelper.dll’;
NET.addAssembly(NetHelper);
success = ZOSAPI_NetHelper.ZOSAPI_Initializer.Initialize();
% Note — uncomment the following line to use a custom initialization path
% success = ZOSAPI_NetHelper.ZOSAPI_Initializer.Initialize(‘C:Program FilesOpticStudio’);
if success == 1
LogMessage(strcat(‘Found OpticStudio at: ‘, char(ZOSAPI_NetHelper.ZOSAPI_Initializer.GetZemaxDirectory())));
else
app = [];
return;
end
% Now load the ZOS-API assemblies
NET.addAssembly(AssemblyName(‘ZOSAPI_Interfaces’));
NET.addAssembly(AssemblyName(‘ZOSAPI’));
% Create the initial connection class
TheConnection = ZOSAPI.ZOSAPI_Connection();
% Attempt to create a Standalone connection
% NOTE – if this fails with a message like ‘Unable to load one or more of
% the requested types’, it is usually caused by try to connect to a 32-bit
% version of OpticStudio from a 64-bit version of MATLAB (or vice-versa).
% This is an issue with how MATLAB interfaces with .NET, and the only
% current workaround is to use 32- or 64-bit versions of both applications.
app = TheConnection.CreateNewApplication();
if isempty(app)
HandleError(‘An unknown connection error occurred!’);
end
if ~app.IsValidLicenseForAPI
HandleError(‘License check failed!’);
app = [];
end
end
function LogMessage(msg)
disp(msg);
end
function HandleError(error)
ME = MXException(error);
throw(ME);
end
function CleanupConnection(TheApplication)
% Note – this will close down the connection.
% If you want to keep the application open, you should skip this step
% and store the instance somewhere instead.
TheApplication.CloseApplication();
end
This is the error I am getting,
Beam_expander_NSC_raytrace
Found OpticStudio at:c:program filesansys zemax opticstudio 2023 r2.00
Unrecognized field name "RunAndWaitForCompletion".
Error in Beam_expander_NSC_raytrace>BeginApplication (line 55)
NSCRayTrace.RunAndWaitForCompletion();
Error in Beam_expander_NSC_raytrace (line 16)
r = BeginApplication(TheApplication, args);
I know lot of people doesn’t have access to Zemax (If you have zemax I am attaching the .zos file), and any help in any regards is much appreciated.
Thank you and regards,
Navaneeth I am trying to carry non-sequential raytracing on a system of mine, I tried using a predefined script that works very well on an existing system but when I replace this with my system I am facing some errors. I am not able to resolve them and don’t know why this is happening.
Here is my code and error,
function [ r ] = MATLABStandalone_NSC_ray_trace( args )
if ~exist(‘args’, ‘var’)
args = [];
end
% Initialize the OpticStudio connection
TheApplication = InitConnection();
if isempty(TheApplication)
% failed to initialize a connection
r = [];
else
try
r = BeginApplication(TheApplication, args);
CleanupConnection(TheApplication);
catch err
CleanupConnection(TheApplication);
rethrow(err);
end
end
end
function [r] = BeginApplication(TheApplication, args)
import ZOSAPI.*;
% creates a new API directory
apiPath = System.String.Concat(TheApplication.SamplesDir, ‘APIMatlab’);
if (exist(char(apiPath)) == 0) mkdir(char(apiPath)); end;
% Set up primary optical system
TheSystem = TheApplication.PrimarySystem;
sampleDir = TheApplication.SamplesDir;
%! [e02s01_m]
% Open file
testFile = System.String.Concat(sampleDir, ‘"D:PracticeZemax PracticeBeam_expander-NONSEQ.zos"’);
TheSystem.LoadFile(testFile, false);
%! [e02s01_m]
%! [e02s02_m]
% Create ray trace
NSCRayTrace = TheSystem.Tools.OpenNSCRayTrace();
NSCRayTrace.SplitNSCRays = false;
NSCRayTrace.ScatterNSCRays = false;
NSCRayTrace.UsePolarization = false;
NSCRayTrace.IgnoreErrors = true;
NSCRayTrace.SaveRays = false;
%NSCRayTrace.ClearDetectors(0);
% Run ray trace
NSCRayTrace.RunAndWaitForCompletion();
NSCRayTrace.Close();
%! [e02s02_m]
% Non-sequential component editor
TheNCE = TheSystem.NCE;
%! [e02s03_m]
% Get detector data
data = NET.createArray(‘System.Double’, TheNCE.GetDetectorSize(6));
TheNCE.GetAllDetectorData(6, 1, TheNCE.GetDetectorSize(6), data);
[~, rows, cols] = TheNCE.GetDetectorDimensions(6);
% rotates and flips image to reflect ZOS orientation
detectorData = flipud(rot90(reshape(data.double, rows, cols)));
%! [e02s03_m]
% Plot
close all;
figure(‘position’, [50, 150, 700, 600])
surf(detectorData);
axis([1 100 1 100]);
shading flat;
xlabel(‘Column #’);
ylabel(‘Row #’);
title(‘Incoherent Illuminance [lm/cm^2]’);
colorbar;
r = [];
end
function app = InitConnection()
import System.Reflection.*;
% Find the installed version of OpticStudio.
zemaxData = winqueryreg(‘HKEY_CURRENT_USER’, ‘SoftwareZemax’, ‘ZemaxRoot’);
NetHelper = strcat(zemaxData, ‘ZOS-APILibrariesZOSAPI_NetHelper.dll’);
% Note — uncomment the following line to use a custom NetHelper path
% NetHelper = ‘C:UsersDocumentsZemaxZOS-APILibrariesZOSAPI_NetHelper.dll’;
NET.addAssembly(NetHelper);
success = ZOSAPI_NetHelper.ZOSAPI_Initializer.Initialize();
% Note — uncomment the following line to use a custom initialization path
% success = ZOSAPI_NetHelper.ZOSAPI_Initializer.Initialize(‘C:Program FilesOpticStudio’);
if success == 1
LogMessage(strcat(‘Found OpticStudio at: ‘, char(ZOSAPI_NetHelper.ZOSAPI_Initializer.GetZemaxDirectory())));
else
app = [];
return;
end
% Now load the ZOS-API assemblies
NET.addAssembly(AssemblyName(‘ZOSAPI_Interfaces’));
NET.addAssembly(AssemblyName(‘ZOSAPI’));
% Create the initial connection class
TheConnection = ZOSAPI.ZOSAPI_Connection();
% Attempt to create a Standalone connection
% NOTE – if this fails with a message like ‘Unable to load one or more of
% the requested types’, it is usually caused by try to connect to a 32-bit
% version of OpticStudio from a 64-bit version of MATLAB (or vice-versa).
% This is an issue with how MATLAB interfaces with .NET, and the only
% current workaround is to use 32- or 64-bit versions of both applications.
app = TheConnection.CreateNewApplication();
if isempty(app)
HandleError(‘An unknown connection error occurred!’);
end
if ~app.IsValidLicenseForAPI
HandleError(‘License check failed!’);
app = [];
end
end
function LogMessage(msg)
disp(msg);
end
function HandleError(error)
ME = MXException(error);
throw(ME);
end
function CleanupConnection(TheApplication)
% Note – this will close down the connection.
% If you want to keep the application open, you should skip this step
% and store the instance somewhere instead.
TheApplication.CloseApplication();
end
This is the error I am getting,
Beam_expander_NSC_raytrace
Found OpticStudio at:c:program filesansys zemax opticstudio 2023 r2.00
Unrecognized field name "RunAndWaitForCompletion".
Error in Beam_expander_NSC_raytrace>BeginApplication (line 55)
NSCRayTrace.RunAndWaitForCompletion();
Error in Beam_expander_NSC_raytrace (line 16)
r = BeginApplication(TheApplication, args);
I know lot of people doesn’t have access to Zemax (If you have zemax I am attaching the .zos file), and any help in any regards is much appreciated.
Thank you and regards,
Navaneeth api, matlab, raytrace, zos-api MATLAB Answers — New Questions
How to code for PS5 in matlab ? is there any library present .
I want use libraries like arduino . is libraries are prsent like (arduino) ps5.bt, wire.h,servo.h in matlab.I want use libraries like arduino . is libraries are prsent like (arduino) ps5.bt, wire.h,servo.h in matlab. I want use libraries like arduino . is libraries are prsent like (arduino) ps5.bt, wire.h,servo.h in matlab. arduino, programming, library MATLAB Answers — New Questions
State machine for grid connection – TIDM-SOLARUINV
Hi,
I hope everything is going well. I have a question regarding using MATLAB to write code for the C2000 controller – F28035. I am currently implementing the TI Microinverter (TIDM-SOLARUINV) controlled by the F28035 using MATLAB. I have tested the input side MPPT and the output side inverter and grid integration.
However, I am uncertain about how to integrate both the PV and inverter together for grid integration. TI has used a state machine for grid connection as described on page 45 of the documentation (https://www.ti.com/lit/ug/tidu405b/tidu405b.pdf?ts=1716863482444&ref_url=https%253A%252F%252Fwww.ti.com%252Ftool%252FTIDM-SOLARUINV). Could you please provide some guidance or an example file on how to implement this in MATLAB? Your assistance would be greatly appreciated.
Thank you.Hi,
I hope everything is going well. I have a question regarding using MATLAB to write code for the C2000 controller – F28035. I am currently implementing the TI Microinverter (TIDM-SOLARUINV) controlled by the F28035 using MATLAB. I have tested the input side MPPT and the output side inverter and grid integration.
However, I am uncertain about how to integrate both the PV and inverter together for grid integration. TI has used a state machine for grid connection as described on page 45 of the documentation (https://www.ti.com/lit/ug/tidu405b/tidu405b.pdf?ts=1716863482444&ref_url=https%253A%252F%252Fwww.ti.com%252Ftool%252FTIDM-SOLARUINV). Could you please provide some guidance or an example file on how to implement this in MATLAB? Your assistance would be greatly appreciated.
Thank you. Hi,
I hope everything is going well. I have a question regarding using MATLAB to write code for the C2000 controller – F28035. I am currently implementing the TI Microinverter (TIDM-SOLARUINV) controlled by the F28035 using MATLAB. I have tested the input side MPPT and the output side inverter and grid integration.
However, I am uncertain about how to integrate both the PV and inverter together for grid integration. TI has used a state machine for grid connection as described on page 45 of the documentation (https://www.ti.com/lit/ug/tidu405b/tidu405b.pdf?ts=1716863482444&ref_url=https%253A%252F%252Fwww.ti.com%252Ftool%252FTIDM-SOLARUINV). Could you please provide some guidance or an example file on how to implement this in MATLAB? Your assistance would be greatly appreciated.
Thank you. power_electronics_control, f28035, tidm-solaruinv, c2000, grid integration MATLAB Answers — New Questions
How do I display all the data, not just the last 30 minutes or so
I am collecting data every minute or so (for now while I debug my system). How can I display all the data instead of the last few minutes?
I know I can download all the data and plot it in Excel or LibreOffice but I would prefer to be able to see more of the data on the graph, like at least a day. I see examples like the chart of air pollution that has A LOT of data points, but I do not know how it’s done.
ThanksI am collecting data every minute or so (for now while I debug my system). How can I display all the data instead of the last few minutes?
I know I can download all the data and plot it in Excel or LibreOffice but I would prefer to be able to see more of the data on the graph, like at least a day. I see examples like the chart of air pollution that has A LOT of data points, but I do not know how it’s done.
Thanks I am collecting data every minute or so (for now while I debug my system). How can I display all the data instead of the last few minutes?
I know I can download all the data and plot it in Excel or LibreOffice but I would prefer to be able to see more of the data on the graph, like at least a day. I see examples like the chart of air pollution that has A LOT of data points, but I do not know how it’s done.
Thanks thingspeak MATLAB Answers — New Questions
Why should we use only dyadic length signal in discrete wavelet transform?
Why should the signal length be dyadic while taking discrete wavelet transform? What happens if the signal length is not dyadic. I am working on compressing real time sensor signals containing 2000 samples in 20ms duration.Can some one help me with valuable answers. Many thanks in advance! my mail id is charanchakravarthy@gmail.comWhy should the signal length be dyadic while taking discrete wavelet transform? What happens if the signal length is not dyadic. I am working on compressing real time sensor signals containing 2000 samples in 20ms duration.Can some one help me with valuable answers. Many thanks in advance! my mail id is charanchakravarthy@gmail.com Why should the signal length be dyadic while taking discrete wavelet transform? What happens if the signal length is not dyadic. I am working on compressing real time sensor signals containing 2000 samples in 20ms duration.Can some one help me with valuable answers. Many thanks in advance! my mail id is charanchakravarthy@gmail.com signal processing, wavelet compression MATLAB Answers — New Questions
can you tell me algorithem features extraction eeglab
i have features extraction in eeglabi have features extraction in eeglab i have features extraction in eeglab features extrction MATLAB Answers — New Questions
What type of test does matlab use to obtain corr pvalue?
According to the documentation, the correlation pvalues indicate "If pval(a,b) is small (less than 0.05), then the correlation rho(a,b) is significantly different from zero."
But it’s never specified which test was used to obtain the pvlaues.According to the documentation, the correlation pvalues indicate "If pval(a,b) is small (less than 0.05), then the correlation rho(a,b) is significantly different from zero."
But it’s never specified which test was used to obtain the pvlaues. According to the documentation, the correlation pvalues indicate "If pval(a,b) is small (less than 0.05), then the correlation rho(a,b) is significantly different from zero."
But it’s never specified which test was used to obtain the pvlaues. statistics, correlation, matlab code MATLAB Answers — New Questions
How to efficiently use dependent properties if dependence is computational costly?
Hello!
I want to design a class where some properties are dependent on others. I understand the general concept of Matlab OOP for dependent properties: the property is recalculated each time it is accessed.
But if these calculations/dependencies are costly and the dependent properties are often accessed by methods within the class, what are you suggesting to do. Basically, it would suffice to recalculated the property each time its parents properties are updated.
If I do so, I get a warning that accessing another property from the set method of an independent property is not recommended. What else can I do?
Cheers
MichaelHello!
I want to design a class where some properties are dependent on others. I understand the general concept of Matlab OOP for dependent properties: the property is recalculated each time it is accessed.
But if these calculations/dependencies are costly and the dependent properties are often accessed by methods within the class, what are you suggesting to do. Basically, it would suffice to recalculated the property each time its parents properties are updated.
If I do so, I get a warning that accessing another property from the set method of an independent property is not recommended. What else can I do?
Cheers
Michael Hello!
I want to design a class where some properties are dependent on others. I understand the general concept of Matlab OOP for dependent properties: the property is recalculated each time it is accessed.
But if these calculations/dependencies are costly and the dependent properties are often accessed by methods within the class, what are you suggesting to do. Basically, it would suffice to recalculated the property each time its parents properties are updated.
If I do so, I get a warning that accessing another property from the set method of an independent property is not recommended. What else can I do?
Cheers
Michael oop, dependent property MATLAB Answers — New Questions
How to use phase difference information to extract effective components of signal?
I now have two lines of data, both of which contain signal components and strong noise. The signal components have the same frequency, but the frequency is unknown. And in these two lines of data, the signal components have a 180 degree phase difference. Is there any way to separate the signal components from the noise based on these two lines of data?I now have two lines of data, both of which contain signal components and strong noise. The signal components have the same frequency, but the frequency is unknown. And in these two lines of data, the signal components have a 180 degree phase difference. Is there any way to separate the signal components from the noise based on these two lines of data? I now have two lines of data, both of which contain signal components and strong noise. The signal components have the same frequency, but the frequency is unknown. And in these two lines of data, the signal components have a 180 degree phase difference. Is there any way to separate the signal components from the noise based on these two lines of data? fft, matlab, signal processing, digital signal processing MATLAB Answers — New Questions
Problem with anfis CLUSTERING
Hello all,
I am trying to use genfis2 to create a FIS structure to be used by ANFIS. I am working with a set of data that is 3000×3. The first 2 columns are the inputs for genfis2 and last column is the output. Below is how I am using the genfis2 command,
in_fis = genfis2(Xin,Xout,radii)
from what I understand, radii is a vector that determines the range of a cluster and xbounds are the min/max (to normalize the data) values in each column of data correct? Why am I getting
"Warning: Rank deficient, rank = 0, tol = NaN.
> In genfis2 at 179"
Start training ANFIS …
1 -1.#IND
2 1.#QNAN
.
.
85 1.#QNAN
Designated epoch number reached –> ANFIS training completed
??? Error using ==> evalfismex
Illegal parameters in fisGaussianMF() –> sigma = 0
Error in ==> evalfis at 84
[output,IRR,ORR,ARR] = evalfismex(input, fis, numofpoints);
Is it my input thats messed, anyone have any sage advice? Thank you.Hello all,
I am trying to use genfis2 to create a FIS structure to be used by ANFIS. I am working with a set of data that is 3000×3. The first 2 columns are the inputs for genfis2 and last column is the output. Below is how I am using the genfis2 command,
in_fis = genfis2(Xin,Xout,radii)
from what I understand, radii is a vector that determines the range of a cluster and xbounds are the min/max (to normalize the data) values in each column of data correct? Why am I getting
"Warning: Rank deficient, rank = 0, tol = NaN.
> In genfis2 at 179"
Start training ANFIS …
1 -1.#IND
2 1.#QNAN
.
.
85 1.#QNAN
Designated epoch number reached –> ANFIS training completed
??? Error using ==> evalfismex
Illegal parameters in fisGaussianMF() –> sigma = 0
Error in ==> evalfis at 84
[output,IRR,ORR,ARR] = evalfismex(input, fis, numofpoints);
Is it my input thats messed, anyone have any sage advice? Thank you. Hello all,
I am trying to use genfis2 to create a FIS structure to be used by ANFIS. I am working with a set of data that is 3000×3. The first 2 columns are the inputs for genfis2 and last column is the output. Below is how I am using the genfis2 command,
in_fis = genfis2(Xin,Xout,radii)
from what I understand, radii is a vector that determines the range of a cluster and xbounds are the min/max (to normalize the data) values in each column of data correct? Why am I getting
"Warning: Rank deficient, rank = 0, tol = NaN.
> In genfis2 at 179"
Start training ANFIS …
1 -1.#IND
2 1.#QNAN
.
.
85 1.#QNAN
Designated epoch number reached –> ANFIS training completed
??? Error using ==> evalfismex
Illegal parameters in fisGaussianMF() –> sigma = 0
Error in ==> evalfis at 84
[output,IRR,ORR,ARR] = evalfismex(input, fis, numofpoints);
Is it my input thats messed, anyone have any sage advice? Thank you. genfis2 MATLAB Answers — New Questions
how to enhance a color image ?
For gray image, we use the commands like adapthisteq, imadjust… How to increase the intensity for the color image.For gray image, we use the commands like adapthisteq, imadjust… How to increase the intensity for the color image. For gray image, we use the commands like adapthisteq, imadjust… How to increase the intensity for the color image. color image enhancement MATLAB Answers — New Questions