Tag Archives: matlab
what is the difference between FPGA Turnkey and IP Core Generation?
In HDL Workflow advisor one could choose between different target workflows such as Generic ASICS/FPGA, FPGA Turnkey, IP Core Generation, FPGA-in-the-loop, Simulink real-time FPGA I/O. I have researched for almost half a day and I couldn’t find a clear explanation of differences between these modes. In particular, I would like to know about difference between FPGA Turnkey and IP Core Generation. It is highly appreciated if someone briefly explain this, or cite references where this topic is discussed.
Best regards,
YasharIn HDL Workflow advisor one could choose between different target workflows such as Generic ASICS/FPGA, FPGA Turnkey, IP Core Generation, FPGA-in-the-loop, Simulink real-time FPGA I/O. I have researched for almost half a day and I couldn’t find a clear explanation of differences between these modes. In particular, I would like to know about difference between FPGA Turnkey and IP Core Generation. It is highly appreciated if someone briefly explain this, or cite references where this topic is discussed.
Best regards,
Yashar In HDL Workflow advisor one could choose between different target workflows such as Generic ASICS/FPGA, FPGA Turnkey, IP Core Generation, FPGA-in-the-loop, Simulink real-time FPGA I/O. I have researched for almost half a day and I couldn’t find a clear explanation of differences between these modes. In particular, I would like to know about difference between FPGA Turnkey and IP Core Generation. It is highly appreciated if someone briefly explain this, or cite references where this topic is discussed.
Best regards,
Yashar hdl coder, hdl workflow advisor, ip core generation, fpga turnkey MATLAB Answers — New Questions
What is wrong with my timer function? (Too many input arguments?)
Hi all, amateur Matlab user here, so I apologize if this question seems silly.
I have a constantly changing variable called ‘a’, and I want to create an array called ‘asamplevalues’ that contains the value of ‘a’ sampled at 4 second intervals.
Here is the part of the script that describes and calls up the timer function:
handles.samplingtimer = timer(‘Period’, 4.0, ‘ExecutionMode’,’fixedRate’,’TasksToExecute’, 10e6);
handles.samplingtimer.TimerFcn = { @samplinga, handles };
start (handles.samplingtimer);
Here is the timer function itself:
function [asamplevalues] = samplinga(a)
if isempty(asamplevalues) == 1
asamplevalues = [100];
else asamplevalues = [asamplevalues, a];
end
end
When the program gets to the timer function I get this error message:
??? Error while evaluating TimerFcn for timer ‘timer-3’
Too many input arguments.
Any help or suggestions are greatly appreciated! Thanks!Hi all, amateur Matlab user here, so I apologize if this question seems silly.
I have a constantly changing variable called ‘a’, and I want to create an array called ‘asamplevalues’ that contains the value of ‘a’ sampled at 4 second intervals.
Here is the part of the script that describes and calls up the timer function:
handles.samplingtimer = timer(‘Period’, 4.0, ‘ExecutionMode’,’fixedRate’,’TasksToExecute’, 10e6);
handles.samplingtimer.TimerFcn = { @samplinga, handles };
start (handles.samplingtimer);
Here is the timer function itself:
function [asamplevalues] = samplinga(a)
if isempty(asamplevalues) == 1
asamplevalues = [100];
else asamplevalues = [asamplevalues, a];
end
end
When the program gets to the timer function I get this error message:
??? Error while evaluating TimerFcn for timer ‘timer-3’
Too many input arguments.
Any help or suggestions are greatly appreciated! Thanks! Hi all, amateur Matlab user here, so I apologize if this question seems silly.
I have a constantly changing variable called ‘a’, and I want to create an array called ‘asamplevalues’ that contains the value of ‘a’ sampled at 4 second intervals.
Here is the part of the script that describes and calls up the timer function:
handles.samplingtimer = timer(‘Period’, 4.0, ‘ExecutionMode’,’fixedRate’,’TasksToExecute’, 10e6);
handles.samplingtimer.TimerFcn = { @samplinga, handles };
start (handles.samplingtimer);
Here is the timer function itself:
function [asamplevalues] = samplinga(a)
if isempty(asamplevalues) == 1
asamplevalues = [100];
else asamplevalues = [asamplevalues, a];
end
end
When the program gets to the timer function I get this error message:
??? Error while evaluating TimerFcn for timer ‘timer-3’
Too many input arguments.
Any help or suggestions are greatly appreciated! Thanks! sampling, timer, too many input arguments MATLAB Answers — New Questions
Help doing array to display values on map
Hi I am trying to do an array that will calculate the mean value of the high composite minus the low composite divided by two. After that I am trying to do a t-test of each observation to be able to display it in a map. I started my array like this but matlab is giving me multiple error messages. My dataset is x=141,y=71 and t=38. I have to make this array work for the 38 years. the average of my high composite is 1.69 and the low -1.29 .Any help will be appreciated.
rain(141,71,38);
for j1=71
for i1=141
zm1=(i,j)=precip(i,j,1;);
end
endHi I am trying to do an array that will calculate the mean value of the high composite minus the low composite divided by two. After that I am trying to do a t-test of each observation to be able to display it in a map. I started my array like this but matlab is giving me multiple error messages. My dataset is x=141,y=71 and t=38. I have to make this array work for the 38 years. the average of my high composite is 1.69 and the low -1.29 .Any help will be appreciated.
rain(141,71,38);
for j1=71
for i1=141
zm1=(i,j)=precip(i,j,1;);
end
end Hi I am trying to do an array that will calculate the mean value of the high composite minus the low composite divided by two. After that I am trying to do a t-test of each observation to be able to display it in a map. I started my array like this but matlab is giving me multiple error messages. My dataset is x=141,y=71 and t=38. I have to make this array work for the 38 years. the average of my high composite is 1.69 and the low -1.29 .Any help will be appreciated.
rain(141,71,38);
for j1=71
for i1=141
zm1=(i,j)=precip(i,j,1;);
end
end matrix, array, map MATLAB Answers — New Questions
Plotting and OpenGL error on Linux. How to resolve?
Hi I am unable to plot with Matlab. I have been getting this message:
MATLAB has experienced a low-level graphics error, and may not have drawn correctly.
Read about what you can do to prevent this issue at Resolving Low-Level Graphics Issues then restart MATLAB.
When I followed the instructions to resolve this issue, I got this message:
Error using opengl
Switching to software OpenGL rendering at runtime on unix is not supported.
I am running debian wheezy on a lenovo T440s. Please let me know what I can do to resolve this issue.Hi I am unable to plot with Matlab. I have been getting this message:
MATLAB has experienced a low-level graphics error, and may not have drawn correctly.
Read about what you can do to prevent this issue at Resolving Low-Level Graphics Issues then restart MATLAB.
When I followed the instructions to resolve this issue, I got this message:
Error using opengl
Switching to software OpenGL rendering at runtime on unix is not supported.
I am running debian wheezy on a lenovo T440s. Please let me know what I can do to resolve this issue. Hi I am unable to plot with Matlab. I have been getting this message:
MATLAB has experienced a low-level graphics error, and may not have drawn correctly.
Read about what you can do to prevent this issue at Resolving Low-Level Graphics Issues then restart MATLAB.
When I followed the instructions to resolve this issue, I got this message:
Error using opengl
Switching to software OpenGL rendering at runtime on unix is not supported.
I am running debian wheezy on a lenovo T440s. Please let me know what I can do to resolve this issue. opengl, plotting, linux, graphics MATLAB Answers — New Questions
When Open GUI, I counter an error
“`
java.lang.ExceptionInInitializerError
at com.mathworks.mde.cmdwin.CmdWin.<init>(CmdWin.java:111)
at com.mathworks.mde.cmdwin.CmdWin.<clinit>(CmdWin.java:107)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.mathworks.jmi.ClassLoaderManager.loadClass(ClassLoaderManager.java:442)
at com.mathworks.jmi.ClassLoaderManager.findClass(ClassLoaderManager.java:422)
at com.mathworks.jmi.Matlab$2.findClass(Matlab.java:518)
at com.mathworks.util.ClassLoaderBridge.findClass(ClassLoaderBridge.java:23)
at com.mathworks.widgets.desk.DTClient.createComponent(DTClient.java:275)
at com.mathworks.widgets.desk.Desktop.createClientComponent(Desktop.java:6482)
at com.mathworks.mde.desk.MLDesktop.createClientComponent(MLDesktop.java:1070)
at com.mathworks.widgets.desk.Desktop.createClientComponentWrapper(Desktop.java:6496)
at com.mathworks.widgets.desk.Desktop.setClientShowing(Desktop.java:7195)
at com.mathworks.widgets.desk.Desktop.setClientShowing(Desktop.java:7182)
at com.mathworks.widgets.desk.DTNestingContainer$ViewState.restore(DTNestingContainer.java:2910)
at com.mathworks.widgets.desk.DTNestingContainer$SplitState.restore(DTNestingContainer.java:2536)
at com.mathworks.widgets.desk.DTNestingContainer$SplitState.restore(DTNestingContainer.java:2537)
at com.mathworks.widgets.desk.DTNestingContainer$RootState.restore(DTNestingContainer.java:2422)
at com.mathworks.widgets.desk.DTNestingContainer$RootState.restore(DTNestingContainer.java:2417)
at com.mathworks.widgets.desk.DTNestingContainer.restoreState(DTNestingContainer.java:2291)
at com.mathworks.widgets.desk.DTMultipleClientFrame.restoreState(DTMultipleClientFrame.java:2791)
at com.mathworks.widgets.desk.Desktop.restoreLayout(Desktop.java:5961)
at com.mathworks.mde.desk.MLDesktop.restoreLayout(MLDesktop.java:1698)
at com.mathworks.widgets.desk.Desktop.restoreLayout(Desktop.java:5724)
at com.mathworks.mde.desk.MLDesktop.setDefaultDesktop(MLDesktop.java:1585)
at com.mathworks.widgets.desk.Desktop.initMainFrame(Desktop.java:296)
at com.mathworks.mde.desk.MLDesktop.initMainFrameFromThread(MLDesktop.java:874)
at com.mathworks.mde.desk.MLDesktop.access$600(MLDesktop.java:227)
at com.mathworks.mde.desk.MLDesktop$Initializer.run(MLDesktop.java:1261)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.ArithmeticException: / by zero
at com.mathworks.mde.cmdwin.XCmdWndView.getPotentialRows(XCmdWndView.java:1084)
at com.mathworks.mde.cmdwin.XCmdWndView.setCWFont(XCmdWndView.java:1651)
at com.mathworks.mde.cmdwin.XCmdWndView.initPrefs(XCmdWndView.java:907)
at com.mathworks.mde.cmdwin.XCmdWndView.<init>(XCmdWndView.java:401)
at com.mathworks.mde.cmdwin.XCmdWndView.<clinit>(XCmdWndView.java:329)
… 43 more
“““
java.lang.ExceptionInInitializerError
at com.mathworks.mde.cmdwin.CmdWin.<init>(CmdWin.java:111)
at com.mathworks.mde.cmdwin.CmdWin.<clinit>(CmdWin.java:107)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.mathworks.jmi.ClassLoaderManager.loadClass(ClassLoaderManager.java:442)
at com.mathworks.jmi.ClassLoaderManager.findClass(ClassLoaderManager.java:422)
at com.mathworks.jmi.Matlab$2.findClass(Matlab.java:518)
at com.mathworks.util.ClassLoaderBridge.findClass(ClassLoaderBridge.java:23)
at com.mathworks.widgets.desk.DTClient.createComponent(DTClient.java:275)
at com.mathworks.widgets.desk.Desktop.createClientComponent(Desktop.java:6482)
at com.mathworks.mde.desk.MLDesktop.createClientComponent(MLDesktop.java:1070)
at com.mathworks.widgets.desk.Desktop.createClientComponentWrapper(Desktop.java:6496)
at com.mathworks.widgets.desk.Desktop.setClientShowing(Desktop.java:7195)
at com.mathworks.widgets.desk.Desktop.setClientShowing(Desktop.java:7182)
at com.mathworks.widgets.desk.DTNestingContainer$ViewState.restore(DTNestingContainer.java:2910)
at com.mathworks.widgets.desk.DTNestingContainer$SplitState.restore(DTNestingContainer.java:2536)
at com.mathworks.widgets.desk.DTNestingContainer$SplitState.restore(DTNestingContainer.java:2537)
at com.mathworks.widgets.desk.DTNestingContainer$RootState.restore(DTNestingContainer.java:2422)
at com.mathworks.widgets.desk.DTNestingContainer$RootState.restore(DTNestingContainer.java:2417)
at com.mathworks.widgets.desk.DTNestingContainer.restoreState(DTNestingContainer.java:2291)
at com.mathworks.widgets.desk.DTMultipleClientFrame.restoreState(DTMultipleClientFrame.java:2791)
at com.mathworks.widgets.desk.Desktop.restoreLayout(Desktop.java:5961)
at com.mathworks.mde.desk.MLDesktop.restoreLayout(MLDesktop.java:1698)
at com.mathworks.widgets.desk.Desktop.restoreLayout(Desktop.java:5724)
at com.mathworks.mde.desk.MLDesktop.setDefaultDesktop(MLDesktop.java:1585)
at com.mathworks.widgets.desk.Desktop.initMainFrame(Desktop.java:296)
at com.mathworks.mde.desk.MLDesktop.initMainFrameFromThread(MLDesktop.java:874)
at com.mathworks.mde.desk.MLDesktop.access$600(MLDesktop.java:227)
at com.mathworks.mde.desk.MLDesktop$Initializer.run(MLDesktop.java:1261)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.ArithmeticException: / by zero
at com.mathworks.mde.cmdwin.XCmdWndView.getPotentialRows(XCmdWndView.java:1084)
at com.mathworks.mde.cmdwin.XCmdWndView.setCWFont(XCmdWndView.java:1651)
at com.mathworks.mde.cmdwin.XCmdWndView.initPrefs(XCmdWndView.java:907)
at com.mathworks.mde.cmdwin.XCmdWndView.<init>(XCmdWndView.java:401)
at com.mathworks.mde.cmdwin.XCmdWndView.<clinit>(XCmdWndView.java:329)
… 43 more
“` “`
java.lang.ExceptionInInitializerError
at com.mathworks.mde.cmdwin.CmdWin.<init>(CmdWin.java:111)
at com.mathworks.mde.cmdwin.CmdWin.<clinit>(CmdWin.java:107)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.mathworks.jmi.ClassLoaderManager.loadClass(ClassLoaderManager.java:442)
at com.mathworks.jmi.ClassLoaderManager.findClass(ClassLoaderManager.java:422)
at com.mathworks.jmi.Matlab$2.findClass(Matlab.java:518)
at com.mathworks.util.ClassLoaderBridge.findClass(ClassLoaderBridge.java:23)
at com.mathworks.widgets.desk.DTClient.createComponent(DTClient.java:275)
at com.mathworks.widgets.desk.Desktop.createClientComponent(Desktop.java:6482)
at com.mathworks.mde.desk.MLDesktop.createClientComponent(MLDesktop.java:1070)
at com.mathworks.widgets.desk.Desktop.createClientComponentWrapper(Desktop.java:6496)
at com.mathworks.widgets.desk.Desktop.setClientShowing(Desktop.java:7195)
at com.mathworks.widgets.desk.Desktop.setClientShowing(Desktop.java:7182)
at com.mathworks.widgets.desk.DTNestingContainer$ViewState.restore(DTNestingContainer.java:2910)
at com.mathworks.widgets.desk.DTNestingContainer$SplitState.restore(DTNestingContainer.java:2536)
at com.mathworks.widgets.desk.DTNestingContainer$SplitState.restore(DTNestingContainer.java:2537)
at com.mathworks.widgets.desk.DTNestingContainer$RootState.restore(DTNestingContainer.java:2422)
at com.mathworks.widgets.desk.DTNestingContainer$RootState.restore(DTNestingContainer.java:2417)
at com.mathworks.widgets.desk.DTNestingContainer.restoreState(DTNestingContainer.java:2291)
at com.mathworks.widgets.desk.DTMultipleClientFrame.restoreState(DTMultipleClientFrame.java:2791)
at com.mathworks.widgets.desk.Desktop.restoreLayout(Desktop.java:5961)
at com.mathworks.mde.desk.MLDesktop.restoreLayout(MLDesktop.java:1698)
at com.mathworks.widgets.desk.Desktop.restoreLayout(Desktop.java:5724)
at com.mathworks.mde.desk.MLDesktop.setDefaultDesktop(MLDesktop.java:1585)
at com.mathworks.widgets.desk.Desktop.initMainFrame(Desktop.java:296)
at com.mathworks.mde.desk.MLDesktop.initMainFrameFromThread(MLDesktop.java:874)
at com.mathworks.mde.desk.MLDesktop.access$600(MLDesktop.java:227)
at com.mathworks.mde.desk.MLDesktop$Initializer.run(MLDesktop.java:1261)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.ArithmeticException: / by zero
at com.mathworks.mde.cmdwin.XCmdWndView.getPotentialRows(XCmdWndView.java:1084)
at com.mathworks.mde.cmdwin.XCmdWndView.setCWFont(XCmdWndView.java:1651)
at com.mathworks.mde.cmdwin.XCmdWndView.initPrefs(XCmdWndView.java:907)
at com.mathworks.mde.cmdwin.XCmdWndView.<init>(XCmdWndView.java:401)
at com.mathworks.mde.cmdwin.XCmdWndView.<clinit>(XCmdWndView.java:329)
… 43 more
“` matlab gui MATLAB Answers — New Questions
trackOSPAMetric for my data
Hello. I want to use trackOSPAMetric to evaluate tracking result with artificial data. but it does not match my data. I attached the code and the error. any ideas? thank you very much for your time and attention.
clc; clear; close;
% 2DPF+3DOSPA
% Parameters
num_trajectories = 4;
num_paths = 2;
points_per_trajectory = 100;
num_clusters = 60;
% Define base paths as nearly horizontal lines
base_paths = { [linspace(0, 10, points_per_trajectory)’, 2 * ones(points_per_trajectory, 1)];
[linspace(0, 10, points_per_trajectory)’, 4 * ones(points_per_trajectory, 1)];
[linspace(0, 10, points_per_trajectory)’, 6 * ones(points_per_trajectory, 1)];
[linspace(0, 10, points_per_trajectory)’, 8 * ones(points_per_trajectory, 1)] };
% Initialize trajectories
trajectories = cell(1, num_trajectories);
% Generate trajectories with random deviations from base paths
for ii = 1:num_trajectories
path = base_paths{mod(ii, num_paths) + 1};
deviation = [0.01 * randn(points_per_trajectory, 1), …
0.01 * randn(points_per_trajectory, 1)];
trajectories{ii} = path + deviation;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Select trajectory for tracking
selected_traj = trajectories{1};
numParticles = 1000;
stateDimension = 4;
init_state = [selected_traj(1, 1); 0;…
selected_traj(1, 2); 0];
pf = trackingPF(@constvel, @cvmeas, init_state, …
‘StateCovariance’, 0.5 * eye(stateDimension), …
‘NumParticles’, numParticles, …
‘HasAdditiveProcessNoise’, true);
% Particle filter tracking
estimated_positions_pf = …
zeros(size(selected_traj, 1), stateDimension);
pf_tot = cell(size(selected_traj, 1),1);
estimated_positions_pf(1, 🙂 = init_state’;
pf_no_km = clone(pf);
for t = 2:size(selected_traj, 1)
[xPred_pf, PPred_pf] = predict(pf_no_km, 1);
observation = …
[selected_traj(t, 1); selected_traj(t, 2); 0];
[xCorr_km, Pcorr_km] = correct(pf, observation);
[xCorr_pf, Pcorr_pf] = correct(pf_no_km, observation);
estimated_positions_pf(t, 🙂 = xCorr_pf;
pf_tot{t} = Pcorr_pf;
end
% Plot tracking results
figure (101);
plot(selected_traj(:, 1), selected_traj(:, 2), ‘g’, …
‘DisplayName’, ‘True Trajectory’);
hold on;
plot(estimated_positions_pf(:, 1), …
estimated_positions_pf(:, 3), ‘bo-.’, …
‘DisplayName’, ‘Estimated (No KM)’);
title(‘Tracking Map’);
legend;
xlabel(‘X’);
ylabel(‘Y’);
hold off;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% OSPA metric computation
truths_mine = …
[selected_traj zeros(size(selected_traj,1),1)];
%%
% Construct the truth and tracks structs
num_timesteps = size(selected_traj, 1);
truths_cell = cell(1,num_timesteps);
tracks_PF_cell = cell(1,num_timesteps);
% Compute velocities for truth data
velocities_truth = diff(truths_mine); % Approximate velocity (forward difference)
velocities_truth = [0 0 0;velocities_truth];
for t = 1:num_timesteps
% Truth struct
truth_struct = struct();
truth_struct.PlatformID = 1;
truth_struct.Time = t; % Time step
truth_struct.Position = …
[selected_traj(t, 1); selected_traj(t, 2);0]’; % Position [x; y]
% if t < num_timesteps
truth_struct.Velocity = velocities_truth(t, :); % Velocity [vx; vy]
truths_cell{t} = truth_struct;
% Tracks struct
tracks_struct_PF = struct();
tracks_struct_PF.UpdateTime = t; % Time step
tracks_struct_PF.State = …
[estimated_positions_pf(t, :),0,0]’;%; estimated_positions_pf(t, 3);0]; % Estimated position [x; y]
tracks_struct_PF.TrackID = 1;
if t==1
tracks_struct_PF.StateCovariance = [1 0 0 0 0 0; 0 1 0 0 0 0; 0 0 1 0 0 0; 0 0 0 1 0 0; 0 0 0 0 0 0 ; 0 0 0 0 0 0 ];
else
pf_cov = [pf_tot{t};zeros(2,4)];
pf_cov2 = [pf_cov, zeros(6,2)];
tracks_struct_KM.StateCovariance = pf_cov2;
end
tracks_PF_cell{t} = tracks_struct_PF;
end
%%
tom = trackOSPAMetric;
ospa = zeros(numel(tracks_PF_cell),1);
cardOspa = zeros(numel(tracks_PF_cell),1);
locOspa = zeros(numel(tracks_PF_cell),1);
for ik = 1:numel(tracks_PF_cell)
ik
tracks_mi = tracks_PF_cell{ik}
truths_mi = truths_cell{ik}
[ospa(ik), locOspa(ik), cardOspa(ik)] = tom(tracks_mi, truths_mi);
end
%%
% Compute square error between truth and track locations
error_pf = (selected_traj(:, 1) – estimated_positions_pf(:, 1)).^2 + …
(selected_traj(:, 2) – estimated_positions_pf(:, 3)).^2;
Here is the error:
Error using assignjv
Expected COSTMATRIX to be non-NaN.
Error in fusion.internal.assignment.lapCheckCostMatrix (line 10)
validateattributes(costMatrix, {‘single’,’double’}, …
Error in assignjv (line 110)
fusion.internal.assignment.lapCheckCostMatrix(costMatrix, mfilename);
Error in fusion.internal.metrics.OSPABase/stepImpl (line 219)
optimalAssignment = assignjv(dMatrix, 2*cN);
Error in trackOSPAMetric/stepImpl (line 305)
[locOspa, cardOspa, optimalAssignment] = stepImpl@fusion.internal.metrics.OSPABase(obj, tracks, truths);
Error in OnlyPF (line 139)
[ospa(ik), locOspa(ik), cardOspa(ik)] = tom(tracks_mi, truths_mi);
>>Hello. I want to use trackOSPAMetric to evaluate tracking result with artificial data. but it does not match my data. I attached the code and the error. any ideas? thank you very much for your time and attention.
clc; clear; close;
% 2DPF+3DOSPA
% Parameters
num_trajectories = 4;
num_paths = 2;
points_per_trajectory = 100;
num_clusters = 60;
% Define base paths as nearly horizontal lines
base_paths = { [linspace(0, 10, points_per_trajectory)’, 2 * ones(points_per_trajectory, 1)];
[linspace(0, 10, points_per_trajectory)’, 4 * ones(points_per_trajectory, 1)];
[linspace(0, 10, points_per_trajectory)’, 6 * ones(points_per_trajectory, 1)];
[linspace(0, 10, points_per_trajectory)’, 8 * ones(points_per_trajectory, 1)] };
% Initialize trajectories
trajectories = cell(1, num_trajectories);
% Generate trajectories with random deviations from base paths
for ii = 1:num_trajectories
path = base_paths{mod(ii, num_paths) + 1};
deviation = [0.01 * randn(points_per_trajectory, 1), …
0.01 * randn(points_per_trajectory, 1)];
trajectories{ii} = path + deviation;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Select trajectory for tracking
selected_traj = trajectories{1};
numParticles = 1000;
stateDimension = 4;
init_state = [selected_traj(1, 1); 0;…
selected_traj(1, 2); 0];
pf = trackingPF(@constvel, @cvmeas, init_state, …
‘StateCovariance’, 0.5 * eye(stateDimension), …
‘NumParticles’, numParticles, …
‘HasAdditiveProcessNoise’, true);
% Particle filter tracking
estimated_positions_pf = …
zeros(size(selected_traj, 1), stateDimension);
pf_tot = cell(size(selected_traj, 1),1);
estimated_positions_pf(1, 🙂 = init_state’;
pf_no_km = clone(pf);
for t = 2:size(selected_traj, 1)
[xPred_pf, PPred_pf] = predict(pf_no_km, 1);
observation = …
[selected_traj(t, 1); selected_traj(t, 2); 0];
[xCorr_km, Pcorr_km] = correct(pf, observation);
[xCorr_pf, Pcorr_pf] = correct(pf_no_km, observation);
estimated_positions_pf(t, 🙂 = xCorr_pf;
pf_tot{t} = Pcorr_pf;
end
% Plot tracking results
figure (101);
plot(selected_traj(:, 1), selected_traj(:, 2), ‘g’, …
‘DisplayName’, ‘True Trajectory’);
hold on;
plot(estimated_positions_pf(:, 1), …
estimated_positions_pf(:, 3), ‘bo-.’, …
‘DisplayName’, ‘Estimated (No KM)’);
title(‘Tracking Map’);
legend;
xlabel(‘X’);
ylabel(‘Y’);
hold off;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% OSPA metric computation
truths_mine = …
[selected_traj zeros(size(selected_traj,1),1)];
%%
% Construct the truth and tracks structs
num_timesteps = size(selected_traj, 1);
truths_cell = cell(1,num_timesteps);
tracks_PF_cell = cell(1,num_timesteps);
% Compute velocities for truth data
velocities_truth = diff(truths_mine); % Approximate velocity (forward difference)
velocities_truth = [0 0 0;velocities_truth];
for t = 1:num_timesteps
% Truth struct
truth_struct = struct();
truth_struct.PlatformID = 1;
truth_struct.Time = t; % Time step
truth_struct.Position = …
[selected_traj(t, 1); selected_traj(t, 2);0]’; % Position [x; y]
% if t < num_timesteps
truth_struct.Velocity = velocities_truth(t, :); % Velocity [vx; vy]
truths_cell{t} = truth_struct;
% Tracks struct
tracks_struct_PF = struct();
tracks_struct_PF.UpdateTime = t; % Time step
tracks_struct_PF.State = …
[estimated_positions_pf(t, :),0,0]’;%; estimated_positions_pf(t, 3);0]; % Estimated position [x; y]
tracks_struct_PF.TrackID = 1;
if t==1
tracks_struct_PF.StateCovariance = [1 0 0 0 0 0; 0 1 0 0 0 0; 0 0 1 0 0 0; 0 0 0 1 0 0; 0 0 0 0 0 0 ; 0 0 0 0 0 0 ];
else
pf_cov = [pf_tot{t};zeros(2,4)];
pf_cov2 = [pf_cov, zeros(6,2)];
tracks_struct_KM.StateCovariance = pf_cov2;
end
tracks_PF_cell{t} = tracks_struct_PF;
end
%%
tom = trackOSPAMetric;
ospa = zeros(numel(tracks_PF_cell),1);
cardOspa = zeros(numel(tracks_PF_cell),1);
locOspa = zeros(numel(tracks_PF_cell),1);
for ik = 1:numel(tracks_PF_cell)
ik
tracks_mi = tracks_PF_cell{ik}
truths_mi = truths_cell{ik}
[ospa(ik), locOspa(ik), cardOspa(ik)] = tom(tracks_mi, truths_mi);
end
%%
% Compute square error between truth and track locations
error_pf = (selected_traj(:, 1) – estimated_positions_pf(:, 1)).^2 + …
(selected_traj(:, 2) – estimated_positions_pf(:, 3)).^2;
Here is the error:
Error using assignjv
Expected COSTMATRIX to be non-NaN.
Error in fusion.internal.assignment.lapCheckCostMatrix (line 10)
validateattributes(costMatrix, {‘single’,’double’}, …
Error in assignjv (line 110)
fusion.internal.assignment.lapCheckCostMatrix(costMatrix, mfilename);
Error in fusion.internal.metrics.OSPABase/stepImpl (line 219)
optimalAssignment = assignjv(dMatrix, 2*cN);
Error in trackOSPAMetric/stepImpl (line 305)
[locOspa, cardOspa, optimalAssignment] = stepImpl@fusion.internal.metrics.OSPABase(obj, tracks, truths);
Error in OnlyPF (line 139)
[ospa(ik), locOspa(ik), cardOspa(ik)] = tom(tracks_mi, truths_mi);
>> Hello. I want to use trackOSPAMetric to evaluate tracking result with artificial data. but it does not match my data. I attached the code and the error. any ideas? thank you very much for your time and attention.
clc; clear; close;
% 2DPF+3DOSPA
% Parameters
num_trajectories = 4;
num_paths = 2;
points_per_trajectory = 100;
num_clusters = 60;
% Define base paths as nearly horizontal lines
base_paths = { [linspace(0, 10, points_per_trajectory)’, 2 * ones(points_per_trajectory, 1)];
[linspace(0, 10, points_per_trajectory)’, 4 * ones(points_per_trajectory, 1)];
[linspace(0, 10, points_per_trajectory)’, 6 * ones(points_per_trajectory, 1)];
[linspace(0, 10, points_per_trajectory)’, 8 * ones(points_per_trajectory, 1)] };
% Initialize trajectories
trajectories = cell(1, num_trajectories);
% Generate trajectories with random deviations from base paths
for ii = 1:num_trajectories
path = base_paths{mod(ii, num_paths) + 1};
deviation = [0.01 * randn(points_per_trajectory, 1), …
0.01 * randn(points_per_trajectory, 1)];
trajectories{ii} = path + deviation;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Select trajectory for tracking
selected_traj = trajectories{1};
numParticles = 1000;
stateDimension = 4;
init_state = [selected_traj(1, 1); 0;…
selected_traj(1, 2); 0];
pf = trackingPF(@constvel, @cvmeas, init_state, …
‘StateCovariance’, 0.5 * eye(stateDimension), …
‘NumParticles’, numParticles, …
‘HasAdditiveProcessNoise’, true);
% Particle filter tracking
estimated_positions_pf = …
zeros(size(selected_traj, 1), stateDimension);
pf_tot = cell(size(selected_traj, 1),1);
estimated_positions_pf(1, 🙂 = init_state’;
pf_no_km = clone(pf);
for t = 2:size(selected_traj, 1)
[xPred_pf, PPred_pf] = predict(pf_no_km, 1);
observation = …
[selected_traj(t, 1); selected_traj(t, 2); 0];
[xCorr_km, Pcorr_km] = correct(pf, observation);
[xCorr_pf, Pcorr_pf] = correct(pf_no_km, observation);
estimated_positions_pf(t, 🙂 = xCorr_pf;
pf_tot{t} = Pcorr_pf;
end
% Plot tracking results
figure (101);
plot(selected_traj(:, 1), selected_traj(:, 2), ‘g’, …
‘DisplayName’, ‘True Trajectory’);
hold on;
plot(estimated_positions_pf(:, 1), …
estimated_positions_pf(:, 3), ‘bo-.’, …
‘DisplayName’, ‘Estimated (No KM)’);
title(‘Tracking Map’);
legend;
xlabel(‘X’);
ylabel(‘Y’);
hold off;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% OSPA metric computation
truths_mine = …
[selected_traj zeros(size(selected_traj,1),1)];
%%
% Construct the truth and tracks structs
num_timesteps = size(selected_traj, 1);
truths_cell = cell(1,num_timesteps);
tracks_PF_cell = cell(1,num_timesteps);
% Compute velocities for truth data
velocities_truth = diff(truths_mine); % Approximate velocity (forward difference)
velocities_truth = [0 0 0;velocities_truth];
for t = 1:num_timesteps
% Truth struct
truth_struct = struct();
truth_struct.PlatformID = 1;
truth_struct.Time = t; % Time step
truth_struct.Position = …
[selected_traj(t, 1); selected_traj(t, 2);0]’; % Position [x; y]
% if t < num_timesteps
truth_struct.Velocity = velocities_truth(t, :); % Velocity [vx; vy]
truths_cell{t} = truth_struct;
% Tracks struct
tracks_struct_PF = struct();
tracks_struct_PF.UpdateTime = t; % Time step
tracks_struct_PF.State = …
[estimated_positions_pf(t, :),0,0]’;%; estimated_positions_pf(t, 3);0]; % Estimated position [x; y]
tracks_struct_PF.TrackID = 1;
if t==1
tracks_struct_PF.StateCovariance = [1 0 0 0 0 0; 0 1 0 0 0 0; 0 0 1 0 0 0; 0 0 0 1 0 0; 0 0 0 0 0 0 ; 0 0 0 0 0 0 ];
else
pf_cov = [pf_tot{t};zeros(2,4)];
pf_cov2 = [pf_cov, zeros(6,2)];
tracks_struct_KM.StateCovariance = pf_cov2;
end
tracks_PF_cell{t} = tracks_struct_PF;
end
%%
tom = trackOSPAMetric;
ospa = zeros(numel(tracks_PF_cell),1);
cardOspa = zeros(numel(tracks_PF_cell),1);
locOspa = zeros(numel(tracks_PF_cell),1);
for ik = 1:numel(tracks_PF_cell)
ik
tracks_mi = tracks_PF_cell{ik}
truths_mi = truths_cell{ik}
[ospa(ik), locOspa(ik), cardOspa(ik)] = tom(tracks_mi, truths_mi);
end
%%
% Compute square error between truth and track locations
error_pf = (selected_traj(:, 1) – estimated_positions_pf(:, 1)).^2 + …
(selected_traj(:, 2) – estimated_positions_pf(:, 3)).^2;
Here is the error:
Error using assignjv
Expected COSTMATRIX to be non-NaN.
Error in fusion.internal.assignment.lapCheckCostMatrix (line 10)
validateattributes(costMatrix, {‘single’,’double’}, …
Error in assignjv (line 110)
fusion.internal.assignment.lapCheckCostMatrix(costMatrix, mfilename);
Error in fusion.internal.metrics.OSPABase/stepImpl (line 219)
optimalAssignment = assignjv(dMatrix, 2*cN);
Error in trackOSPAMetric/stepImpl (line 305)
[locOspa, cardOspa, optimalAssignment] = stepImpl@fusion.internal.metrics.OSPABase(obj, tracks, truths);
Error in OnlyPF (line 139)
[ospa(ik), locOspa(ik), cardOspa(ik)] = tom(tracks_mi, truths_mi);
>> ospa, tracking, particle filter, sensor fusion and tracking toolbox MATLAB Answers — New Questions
Exception in thread “IPC Process Thread
I am using MATLAB R2019b with windows 10 Enterprise 20H2 OS build 19042.1586.
Everytime I tried to edit a plot (2D or 3D), MATLAB becomes unresponsive.
I can minimize and maximize but I even can’t close it. The command window is also unresponsive. After some time I receive the following error:
Exception in thread "IPC Process Thread": java.lang.UnsatisfiedLinkError: C:Users???????????????????AppDataLocalTempjxbrowser-chromium-43.0.2357.52.5.4.3.1dataTempjxbrowser-common64-a60ded20-f14c-4744-94df-474eb1350234.dll: Can’t find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at com.teamdev.jxbrowser.chromium.internal.LibraryLoader.loadLibrary(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.SharedMemoryLibrary.<init>(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.SharedMemoryLibrary.getInstance(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.ipc.ChromiumProcess.start(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.ipc.d.run(Unknown Source)
at java.lang.Thread.run(Thread.java:748)
Exception in thread "IPC Process Thread": java.lang.UnsatisfiedLinkError: C:Users???????????????????AppDataLocalTempjxbrowser-chromium-43.0.2357.52.5.4.3.1dataTempjxbrowser-common64-4b01d43e-a593-4c5f-a88c-fe959fbb9492.dll: Can’t find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at com.teamdev.jxbrowser.chromium.internal.LibraryLoader.loadLibrary(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.SharedMemoryLibrary.<init>(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.SharedMemoryLibrary.getInstance(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.ipc.ChromiumProcess.start(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.ipc.d.run(Unknown Source)
at java.lang.Thread.run(Thread.java:748)
Exception in thread "AWT-EventQueue-0": java.lang.NullPointerException
at com.mathworks.page.plottool.propertyinspectormanager.PropertyInspectorManager$2.run(PropertyInspectorManager.java:167)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)I am using MATLAB R2019b with windows 10 Enterprise 20H2 OS build 19042.1586.
Everytime I tried to edit a plot (2D or 3D), MATLAB becomes unresponsive.
I can minimize and maximize but I even can’t close it. The command window is also unresponsive. After some time I receive the following error:
Exception in thread "IPC Process Thread": java.lang.UnsatisfiedLinkError: C:Users???????????????????AppDataLocalTempjxbrowser-chromium-43.0.2357.52.5.4.3.1dataTempjxbrowser-common64-a60ded20-f14c-4744-94df-474eb1350234.dll: Can’t find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at com.teamdev.jxbrowser.chromium.internal.LibraryLoader.loadLibrary(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.SharedMemoryLibrary.<init>(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.SharedMemoryLibrary.getInstance(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.ipc.ChromiumProcess.start(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.ipc.d.run(Unknown Source)
at java.lang.Thread.run(Thread.java:748)
Exception in thread "IPC Process Thread": java.lang.UnsatisfiedLinkError: C:Users???????????????????AppDataLocalTempjxbrowser-chromium-43.0.2357.52.5.4.3.1dataTempjxbrowser-common64-4b01d43e-a593-4c5f-a88c-fe959fbb9492.dll: Can’t find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at com.teamdev.jxbrowser.chromium.internal.LibraryLoader.loadLibrary(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.SharedMemoryLibrary.<init>(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.SharedMemoryLibrary.getInstance(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.ipc.ChromiumProcess.start(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.ipc.d.run(Unknown Source)
at java.lang.Thread.run(Thread.java:748)
Exception in thread "AWT-EventQueue-0": java.lang.NullPointerException
at com.mathworks.page.plottool.propertyinspectormanager.PropertyInspectorManager$2.run(PropertyInspectorManager.java:167)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) I am using MATLAB R2019b with windows 10 Enterprise 20H2 OS build 19042.1586.
Everytime I tried to edit a plot (2D or 3D), MATLAB becomes unresponsive.
I can minimize and maximize but I even can’t close it. The command window is also unresponsive. After some time I receive the following error:
Exception in thread "IPC Process Thread": java.lang.UnsatisfiedLinkError: C:Users???????????????????AppDataLocalTempjxbrowser-chromium-43.0.2357.52.5.4.3.1dataTempjxbrowser-common64-a60ded20-f14c-4744-94df-474eb1350234.dll: Can’t find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at com.teamdev.jxbrowser.chromium.internal.LibraryLoader.loadLibrary(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.SharedMemoryLibrary.<init>(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.SharedMemoryLibrary.getInstance(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.ipc.ChromiumProcess.start(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.ipc.d.run(Unknown Source)
at java.lang.Thread.run(Thread.java:748)
Exception in thread "IPC Process Thread": java.lang.UnsatisfiedLinkError: C:Users???????????????????AppDataLocalTempjxbrowser-chromium-43.0.2357.52.5.4.3.1dataTempjxbrowser-common64-4b01d43e-a593-4c5f-a88c-fe959fbb9492.dll: Can’t find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at com.teamdev.jxbrowser.chromium.internal.LibraryLoader.loadLibrary(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.SharedMemoryLibrary.<init>(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.SharedMemoryLibrary.getInstance(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.ipc.ChromiumProcess.start(Unknown Source)
at com.teamdev.jxbrowser.chromium.internal.ipc.d.run(Unknown Source)
at java.lang.Thread.run(Thread.java:748)
Exception in thread "AWT-EventQueue-0": java.lang.NullPointerException
at com.mathworks.page.plottool.propertyinspectormanager.PropertyInspectorManager$2.run(PropertyInspectorManager.java:167)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) matlab MATLAB Answers — New Questions
my question is if a=[1 2;3 4],b=[5 6;7 8],c=[9 10;11 12] the resultant matrix should be d=[1 5 9;2 6 10;3 7 11;4 8 12] this should be done using for loop?
my question is if a=[1 2;3 4],b=[5 6;7 8],c=[9 10;11 12]
the resultant matrix should be d=[1 5 9;2 6 10;3 7 11;4 8 12] this should be done using for loop?my question is if a=[1 2;3 4],b=[5 6;7 8],c=[9 10;11 12]
the resultant matrix should be d=[1 5 9;2 6 10;3 7 11;4 8 12] this should be done using for loop? my question is if a=[1 2;3 4],b=[5 6;7 8],c=[9 10;11 12]
the resultant matrix should be d=[1 5 9;2 6 10;3 7 11;4 8 12] this should be done using for loop? MATLAB Answers — New Questions
error in matlab code
I have been trying to solve an optimal problem in which a body of mass have to [be] transfered to y(tf) = 0 from its initial position y(o) = 0 such that its final velocity is zero satisfying the performance index.
, where t = [to, tf].
But I am not getting the optimal trajectories using this code. Could anyone help me to find where the mistake [is]?
clear all
c0 = [0.1; 0.1; 0.1; 0.1; 5]; % Make a starting guess at the solution
[c, fval] = fsolve (@myfun1, c0) % Call optimizer
c1 = c(1); c2 = c(2); c3 = c(3); c4 = c(4); c5 = c(5);
t=0:0.01:c5;
x1op = -(c1*(t.^3))/6-(c2*(t.^2))/2+(c3.*t)+c4
x2op =-(c1*(t.^2))/2+-(c2.*t)+c3
uop = -(c1.*t)-c2
lam1= c1;
H = 1.5 * uop.^2 + x2op.* lam1;
figure (1)
plot(t, uop)
figure(2)
plot(t,x1op,t,x2op)
figure(3)
plot(t,H)
function F = myfun1(c)
x10 = 1;
x20 = 0;
x1f = 0;
x2f = 0;
u=-(c(1)*c(5))-c(2);
ud = c(1);
% the conditions x1(t = 0), x1(t = tf), x2(t = 0), x2(t = tf)
f1 = c(4)-x10;
f2 =-(c(1)*(c(5)^3))/6 -(c(2)*(c(5)^2))/2 +(c(3)*c(5)) + 1 -x1f;
f3 = c(3)-x20;
f4 = -(c(1)*(c(5)^2))/2 -(c(2)*c(5))-x2f;
f5 = 1.5 *u.^2 -f4.*ud ;% the condition H(tf) = 0
F = [f1;f2;f3;f4;f5]; % the five unknown system F(C) = 0
endI have been trying to solve an optimal problem in which a body of mass have to [be] transfered to y(tf) = 0 from its initial position y(o) = 0 such that its final velocity is zero satisfying the performance index.
, where t = [to, tf].
But I am not getting the optimal trajectories using this code. Could anyone help me to find where the mistake [is]?
clear all
c0 = [0.1; 0.1; 0.1; 0.1; 5]; % Make a starting guess at the solution
[c, fval] = fsolve (@myfun1, c0) % Call optimizer
c1 = c(1); c2 = c(2); c3 = c(3); c4 = c(4); c5 = c(5);
t=0:0.01:c5;
x1op = -(c1*(t.^3))/6-(c2*(t.^2))/2+(c3.*t)+c4
x2op =-(c1*(t.^2))/2+-(c2.*t)+c3
uop = -(c1.*t)-c2
lam1= c1;
H = 1.5 * uop.^2 + x2op.* lam1;
figure (1)
plot(t, uop)
figure(2)
plot(t,x1op,t,x2op)
figure(3)
plot(t,H)
function F = myfun1(c)
x10 = 1;
x20 = 0;
x1f = 0;
x2f = 0;
u=-(c(1)*c(5))-c(2);
ud = c(1);
% the conditions x1(t = 0), x1(t = tf), x2(t = 0), x2(t = tf)
f1 = c(4)-x10;
f2 =-(c(1)*(c(5)^3))/6 -(c(2)*(c(5)^2))/2 +(c(3)*c(5)) + 1 -x1f;
f3 = c(3)-x20;
f4 = -(c(1)*(c(5)^2))/2 -(c(2)*c(5))-x2f;
f5 = 1.5 *u.^2 -f4.*ud ;% the condition H(tf) = 0
F = [f1;f2;f3;f4;f5]; % the five unknown system F(C) = 0
end I have been trying to solve an optimal problem in which a body of mass have to [be] transfered to y(tf) = 0 from its initial position y(o) = 0 such that its final velocity is zero satisfying the performance index.
, where t = [to, tf].
But I am not getting the optimal trajectories using this code. Could anyone help me to find where the mistake [is]?
clear all
c0 = [0.1; 0.1; 0.1; 0.1; 5]; % Make a starting guess at the solution
[c, fval] = fsolve (@myfun1, c0) % Call optimizer
c1 = c(1); c2 = c(2); c3 = c(3); c4 = c(4); c5 = c(5);
t=0:0.01:c5;
x1op = -(c1*(t.^3))/6-(c2*(t.^2))/2+(c3.*t)+c4
x2op =-(c1*(t.^2))/2+-(c2.*t)+c3
uop = -(c1.*t)-c2
lam1= c1;
H = 1.5 * uop.^2 + x2op.* lam1;
figure (1)
plot(t, uop)
figure(2)
plot(t,x1op,t,x2op)
figure(3)
plot(t,H)
function F = myfun1(c)
x10 = 1;
x20 = 0;
x1f = 0;
x2f = 0;
u=-(c(1)*c(5))-c(2);
ud = c(1);
% the conditions x1(t = 0), x1(t = tf), x2(t = 0), x2(t = tf)
f1 = c(4)-x10;
f2 =-(c(1)*(c(5)^3))/6 -(c(2)*(c(5)^2))/2 +(c(3)*c(5)) + 1 -x1f;
f3 = c(3)-x20;
f4 = -(c(1)*(c(5)^2))/2 -(c(2)*c(5))-x2f;
f5 = 1.5 *u.^2 -f4.*ud ;% the condition H(tf) = 0
F = [f1;f2;f3;f4;f5]; % the five unknown system F(C) = 0
end optimal control MATLAB Answers — New Questions
how to apply exist model configset to current model through script
i have config set that exported from other model, now i want import this configset to my new model, and set this config set active, how to realzie this through script, following pic for reference.i have config set that exported from other model, now i want import this configset to my new model, and set this config set active, how to realzie this through script, following pic for reference. i have config set that exported from other model, now i want import this configset to my new model, and set this config set active, how to realzie this through script, following pic for reference. simulink, model configset, configurations MATLAB Answers — New Questions
Can’t use.dll library on the 2020 or later versions of Matlab
I’m working with some DLL library in order to integrate a measurment instrument (a power meeter) on Matlab. I’m using the 2021 version of Matlab and I used the following code to load the DLL library: (note that the library was given to me from the company who sell me the power meeter).
clear all;
%Load the library
NET.addAssembly(‘C:Program Files (x86)Microsoft.NETPrimary Interop AssembliesThorlabs.TLPM_64.Interop.dll’);
import Thorlabs.TLPM_64.Interop.*;
%Create a dummy TLPM object to check for compatible devices.
handle = System.IntPtr(0);
device = TLPM(handle);
%Search the device
[~,deviceCount] = device.findRsrc();
When I run it, Matlab load the library but when I try to use the function "findRsrc" I get the following error:
Found on line 1324 of input from line 1065 of file C:\Program Files\IVI Foundation\VISA\Win64\Include\TLPM.h
Type ‘intViStatus__fastcall’ was not found. Defaulting to type error.
Found on line 1325 of input from line 1066 of file C:\Program Files\IVI Foundation\VISA\Win64\Include\TLPM.h
Warning no reference to header ‘C:/Program Files/IVI Foundation/VISA/Win64/Include/visa’ added with addheader was found in source.
*********
Error using loadlibrary
Building TPLM_64_thunk_pcwin64 failed. Compiler output is:
cl -I"C:Program FilesIVI FoundationVISAWin64Lib_x64msc" -I"C:Program FilesIVI FoundationVISAWin64Include" -I"C:Program
FilesMATLABR2020aexterninclude" /Zp8 /W3 /nologo -I"C:UsersinstallDesktop" -I"C:Program FilesIVI FoundationVISAWin64Include"
"TPLM_64_thunk_pcwin64.c" -LD -Fe"TPLM_64_thunk_pcwin64.dll"
TPLM_64_thunk_pcwin64.c
TPLM_64_thunk_pcwin64.c(47): error C2059: syntax error: ‘*’
I tried many things ans then, by seraching online, I saw that the problem is may due to the compiler version. Since I have also 2019 and 2020 matlab licenes I tried on both the version and i found out that it works on the 2019 version of Matlab.
So my questions is: Do you have any ideaa what could be the problem on the newest version? there is something that I can do to make it work on the 2020/2021 version?I’m working with some DLL library in order to integrate a measurment instrument (a power meeter) on Matlab. I’m using the 2021 version of Matlab and I used the following code to load the DLL library: (note that the library was given to me from the company who sell me the power meeter).
clear all;
%Load the library
NET.addAssembly(‘C:Program Files (x86)Microsoft.NETPrimary Interop AssembliesThorlabs.TLPM_64.Interop.dll’);
import Thorlabs.TLPM_64.Interop.*;
%Create a dummy TLPM object to check for compatible devices.
handle = System.IntPtr(0);
device = TLPM(handle);
%Search the device
[~,deviceCount] = device.findRsrc();
When I run it, Matlab load the library but when I try to use the function "findRsrc" I get the following error:
Found on line 1324 of input from line 1065 of file C:\Program Files\IVI Foundation\VISA\Win64\Include\TLPM.h
Type ‘intViStatus__fastcall’ was not found. Defaulting to type error.
Found on line 1325 of input from line 1066 of file C:\Program Files\IVI Foundation\VISA\Win64\Include\TLPM.h
Warning no reference to header ‘C:/Program Files/IVI Foundation/VISA/Win64/Include/visa’ added with addheader was found in source.
*********
Error using loadlibrary
Building TPLM_64_thunk_pcwin64 failed. Compiler output is:
cl -I"C:Program FilesIVI FoundationVISAWin64Lib_x64msc" -I"C:Program FilesIVI FoundationVISAWin64Include" -I"C:Program
FilesMATLABR2020aexterninclude" /Zp8 /W3 /nologo -I"C:UsersinstallDesktop" -I"C:Program FilesIVI FoundationVISAWin64Include"
"TPLM_64_thunk_pcwin64.c" -LD -Fe"TPLM_64_thunk_pcwin64.dll"
TPLM_64_thunk_pcwin64.c
TPLM_64_thunk_pcwin64.c(47): error C2059: syntax error: ‘*’
I tried many things ans then, by seraching online, I saw that the problem is may due to the compiler version. Since I have also 2019 and 2020 matlab licenes I tried on both the version and i found out that it works on the 2019 version of Matlab.
So my questions is: Do you have any ideaa what could be the problem on the newest version? there is something that I can do to make it work on the 2020/2021 version? I’m working with some DLL library in order to integrate a measurment instrument (a power meeter) on Matlab. I’m using the 2021 version of Matlab and I used the following code to load the DLL library: (note that the library was given to me from the company who sell me the power meeter).
clear all;
%Load the library
NET.addAssembly(‘C:Program Files (x86)Microsoft.NETPrimary Interop AssembliesThorlabs.TLPM_64.Interop.dll’);
import Thorlabs.TLPM_64.Interop.*;
%Create a dummy TLPM object to check for compatible devices.
handle = System.IntPtr(0);
device = TLPM(handle);
%Search the device
[~,deviceCount] = device.findRsrc();
When I run it, Matlab load the library but when I try to use the function "findRsrc" I get the following error:
Found on line 1324 of input from line 1065 of file C:\Program Files\IVI Foundation\VISA\Win64\Include\TLPM.h
Type ‘intViStatus__fastcall’ was not found. Defaulting to type error.
Found on line 1325 of input from line 1066 of file C:\Program Files\IVI Foundation\VISA\Win64\Include\TLPM.h
Warning no reference to header ‘C:/Program Files/IVI Foundation/VISA/Win64/Include/visa’ added with addheader was found in source.
*********
Error using loadlibrary
Building TPLM_64_thunk_pcwin64 failed. Compiler output is:
cl -I"C:Program FilesIVI FoundationVISAWin64Lib_x64msc" -I"C:Program FilesIVI FoundationVISAWin64Include" -I"C:Program
FilesMATLABR2020aexterninclude" /Zp8 /W3 /nologo -I"C:UsersinstallDesktop" -I"C:Program FilesIVI FoundationVISAWin64Include"
"TPLM_64_thunk_pcwin64.c" -LD -Fe"TPLM_64_thunk_pcwin64.dll"
TPLM_64_thunk_pcwin64.c
TPLM_64_thunk_pcwin64.c(47): error C2059: syntax error: ‘*’
I tried many things ans then, by seraching online, I saw that the problem is may due to the compiler version. Since I have also 2019 and 2020 matlab licenes I tried on both the version and i found out that it works on the 2019 version of Matlab.
So my questions is: Do you have any ideaa what could be the problem on the newest version? there is something that I can do to make it work on the 2020/2021 version? dll, matlab compiler MATLAB Answers — New Questions
Enter data on a worldmap
I want to show precipitation data on the world map
This code does not appear to indicate the exact amount of precipitation in latitude and longitude
Please help me
clc; clear all;
fnm = ‘precip.mon.ltm.1981-2010.nc’
lon=double(ncread(fnm,’lon’));
lat=double(ncread(fnm,’lat’));
time=ncread(fnm,’time’);
dateT=datetime(1800,01,01,00,00,00)+days(time);
precip=ncread(fnm,’precip’);
load coastlines; % Load coastline data
[X, Y] = meshgrid(lon, lat);
for month = 1:12
f = figure;
% Create world map projection
worldmap(‘world’);
setm(gca, ‘Origin’, [0 180 0]); % Set map origin to be the equator
% Plot precipitation data on the world map
surfm(X’, Y’, precip(:, :, month)); % Use surfm to plot data on the map
cmap = brewermap(16, ‘BrBG’); % Generate the colormap
colormap(cmap); % Apply the colormap to the current figure
cb = colorbar; % Create a colorbar
cb.Label.String = ‘mm/day’;
clim([0 16]); % Set color axis limits
cb.Ticks = 0:1:16;
% Overlay coastlines
plotm(coastlat, coastlon, ‘k’, ‘LineWidth’, 1); % Plot coastlines on top of precipitation data
% Add title with month name
title(sprintf(‘Average Monthly Precipitation (1981-2010) – %s’, datestr(dateT(month), ‘mmmm’)));
% Save each figure as an image file
filename = sprintf(‘E:\Koppen-Geiger climate classes\Average_Monthly_Precipitation%d.png’, month);
saveas(f, filename);
close(f);
endI want to show precipitation data on the world map
This code does not appear to indicate the exact amount of precipitation in latitude and longitude
Please help me
clc; clear all;
fnm = ‘precip.mon.ltm.1981-2010.nc’
lon=double(ncread(fnm,’lon’));
lat=double(ncread(fnm,’lat’));
time=ncread(fnm,’time’);
dateT=datetime(1800,01,01,00,00,00)+days(time);
precip=ncread(fnm,’precip’);
load coastlines; % Load coastline data
[X, Y] = meshgrid(lon, lat);
for month = 1:12
f = figure;
% Create world map projection
worldmap(‘world’);
setm(gca, ‘Origin’, [0 180 0]); % Set map origin to be the equator
% Plot precipitation data on the world map
surfm(X’, Y’, precip(:, :, month)); % Use surfm to plot data on the map
cmap = brewermap(16, ‘BrBG’); % Generate the colormap
colormap(cmap); % Apply the colormap to the current figure
cb = colorbar; % Create a colorbar
cb.Label.String = ‘mm/day’;
clim([0 16]); % Set color axis limits
cb.Ticks = 0:1:16;
% Overlay coastlines
plotm(coastlat, coastlon, ‘k’, ‘LineWidth’, 1); % Plot coastlines on top of precipitation data
% Add title with month name
title(sprintf(‘Average Monthly Precipitation (1981-2010) – %s’, datestr(dateT(month), ‘mmmm’)));
% Save each figure as an image file
filename = sprintf(‘E:\Koppen-Geiger climate classes\Average_Monthly_Precipitation%d.png’, month);
saveas(f, filename);
close(f);
end I want to show precipitation data on the world map
This code does not appear to indicate the exact amount of precipitation in latitude and longitude
Please help me
clc; clear all;
fnm = ‘precip.mon.ltm.1981-2010.nc’
lon=double(ncread(fnm,’lon’));
lat=double(ncread(fnm,’lat’));
time=ncread(fnm,’time’);
dateT=datetime(1800,01,01,00,00,00)+days(time);
precip=ncread(fnm,’precip’);
load coastlines; % Load coastline data
[X, Y] = meshgrid(lon, lat);
for month = 1:12
f = figure;
% Create world map projection
worldmap(‘world’);
setm(gca, ‘Origin’, [0 180 0]); % Set map origin to be the equator
% Plot precipitation data on the world map
surfm(X’, Y’, precip(:, :, month)); % Use surfm to plot data on the map
cmap = brewermap(16, ‘BrBG’); % Generate the colormap
colormap(cmap); % Apply the colormap to the current figure
cb = colorbar; % Create a colorbar
cb.Label.String = ‘mm/day’;
clim([0 16]); % Set color axis limits
cb.Ticks = 0:1:16;
% Overlay coastlines
plotm(coastlat, coastlon, ‘k’, ‘LineWidth’, 1); % Plot coastlines on top of precipitation data
% Add title with month name
title(sprintf(‘Average Monthly Precipitation (1981-2010) – %s’, datestr(dateT(month), ‘mmmm’)));
% Save each figure as an image file
filename = sprintf(‘E:\Koppen-Geiger climate classes\Average_Monthly_Precipitation%d.png’, month);
saveas(f, filename);
close(f);
end worldmap, data input, plot MATLAB Answers — New Questions
MATLAB code for right handed circular polarization
Hello,
I need help to write simple code that preview right handed circular polarization,
using the cos and sin fun.
also in the plot must see the direction of the polarization (for example with arrows).
the expression of RHCP is : Acos(t)+Asint(t)Hello,
I need help to write simple code that preview right handed circular polarization,
using the cos and sin fun.
also in the plot must see the direction of the polarization (for example with arrows).
the expression of RHCP is : Acos(t)+Asint(t) Hello,
I need help to write simple code that preview right handed circular polarization,
using the cos and sin fun.
also in the plot must see the direction of the polarization (for example with arrows).
the expression of RHCP is : Acos(t)+Asint(t) rhcp MATLAB Answers — New Questions
Matlab mobile plot functions
I would like to plot some data in MATLAB Mobile, access the plot and then continue processing back in the code. It won’t allow the plot to draw and be accessed while waiting for the code to finish.I would like to plot some data in MATLAB Mobile, access the plot and then continue processing back in the code. It won’t allow the plot to draw and be accessed while waiting for the code to finish. I would like to plot some data in MATLAB Mobile, access the plot and then continue processing back in the code. It won’t allow the plot to draw and be accessed while waiting for the code to finish. matlab mobile, plot MATLAB Answers — New Questions
如何使用脚本获取simulink模式是否关联了sldd文件
如何通过脚本获取simulink是否关联了sldd文件
如何通过脚本设置simulink关联sldd文件
以及sldd文件的相关属性如何通过脚本获取simulink是否关联了sldd文件
如何通过脚本设置simulink关联sldd文件
以及sldd文件的相关属性 如何通过脚本获取simulink是否关联了sldd文件
如何通过脚本设置simulink关联sldd文件
以及sldd文件的相关属性 simulink, sldd, simulink link sldd MATLAB Answers — New Questions
How to fill a large hole?
The imfill function doesn’t fill the large hole. How can I fill it?
Or, more generally:
How can I separate the image from the background?
Using a very large ‘disk’ might work to fill the hole, but it would also make the subject too large.
Any suggestions?
Thank you!
I = imread("sample_image.png");
BW = imbinarize(I);
se = strel(‘disk’,40);
closeBW = imclose(BW,se);
BW2 = imfill(closeBW,’holes’);
figure
imshowpair(I,BW2,’montage’)The imfill function doesn’t fill the large hole. How can I fill it?
Or, more generally:
How can I separate the image from the background?
Using a very large ‘disk’ might work to fill the hole, but it would also make the subject too large.
Any suggestions?
Thank you!
I = imread("sample_image.png");
BW = imbinarize(I);
se = strel(‘disk’,40);
closeBW = imclose(BW,se);
BW2 = imfill(closeBW,’holes’);
figure
imshowpair(I,BW2,’montage’) The imfill function doesn’t fill the large hole. How can I fill it?
Or, more generally:
How can I separate the image from the background?
Using a very large ‘disk’ might work to fill the hole, but it would also make the subject too large.
Any suggestions?
Thank you!
I = imread("sample_image.png");
BW = imbinarize(I);
se = strel(‘disk’,40);
closeBW = imclose(BW,se);
BW2 = imfill(closeBW,’holes’);
figure
imshowpair(I,BW2,’montage’) fill, hole, separate background, matlab MATLAB Answers — New Questions
Why does my simulation give different results in parsim or batchsim than it does in sim?
I have a simulation that I want to run in parsim, but I have noticed that the simulations output is different than when I run in serial simulation. Why could that be?I have a simulation that I want to run in parsim, but I have noticed that the simulations output is different than when I run in serial simulation. Why could that be? I have a simulation that I want to run in parsim, but I have noticed that the simulations output is different than when I run in serial simulation. Why could that be? parsim, results, different, sim MATLAB Answers — New Questions
Building sparse matrix inside parfor
I’m building a large sparse matrix in smaller pieces. Unfortunately the pieces overlap a bit. At the moment I’m building each piece to match the final size and after the loop I sum the pieces together. I have tried following approaches
1) I tried summing up sparse matrixes inside parfor. Bad idea. Produces full matrix.
2) Build index vectors for each piece of the matrix and combine the index vectors inside parfor. Then use one sparse command after the loop to build the final matrix. This, unfortunately, is rather slow. The reason might be the repetitive entries that the sparse command needs to sum up.
3) Build sparse matrix of each piece and store them in cell array inside parfor. Then sum up the sparse matrixes inside regular for loop. This is the best so far; fast and reliable. (See the pseudocode below.)
4) This is the problematic case: Build sparse vectors out of each piece and store them in cell array. Then sum up the sparse vectors inside regular for loop, and reshape to matrix. Unfortunately for larger systems it crashes with
Error using parallel_function (line 598)
Error during serialization
Error stack:
remoteParallelFunction.m at 31
As a for loop it runs just fine.
Below is some pseudocode to shed light on what I’m doing:
First option 3) that always works.
Aset = cell(1,Nsets) ;
parfor S=1:Nsets
% Do lots of stuff to get iind, jind, Aval
Aset{S} = sparse( iind, jind, Aval, Ndof, Ndof );
end
A = Aset{1};
for S=2:Nsets
A = A + Aset{S} ;
end
Option 4) that gives the error:
Aset = cell(1,Nsets) ;
parfor S=1:Nsets
% Do lots of stuff to get iind, jind, Aval
matind = iind +Ndof*( jind-1 );
Aset{S} = sparse( matind, ones(size(matind)), Aval, Ndof*Ndof, 1 ) ;
end
A = Aset{1};
for S=2:Nsets
A = A + Aset{S} ;
end
A = reshape(A,Ndof,Ndof) ;
Any ideas why option 4 crashes?
How should I do this to gain speed?
The size of the final matrix, i.e. Ndof, is few millions. Number of matrix pieces, i.e. Nsets, is 10 to 30. For option 3 it takes roughly 30 seconds to sum the matrixes of size Ndof=4000000.I’m building a large sparse matrix in smaller pieces. Unfortunately the pieces overlap a bit. At the moment I’m building each piece to match the final size and after the loop I sum the pieces together. I have tried following approaches
1) I tried summing up sparse matrixes inside parfor. Bad idea. Produces full matrix.
2) Build index vectors for each piece of the matrix and combine the index vectors inside parfor. Then use one sparse command after the loop to build the final matrix. This, unfortunately, is rather slow. The reason might be the repetitive entries that the sparse command needs to sum up.
3) Build sparse matrix of each piece and store them in cell array inside parfor. Then sum up the sparse matrixes inside regular for loop. This is the best so far; fast and reliable. (See the pseudocode below.)
4) This is the problematic case: Build sparse vectors out of each piece and store them in cell array. Then sum up the sparse vectors inside regular for loop, and reshape to matrix. Unfortunately for larger systems it crashes with
Error using parallel_function (line 598)
Error during serialization
Error stack:
remoteParallelFunction.m at 31
As a for loop it runs just fine.
Below is some pseudocode to shed light on what I’m doing:
First option 3) that always works.
Aset = cell(1,Nsets) ;
parfor S=1:Nsets
% Do lots of stuff to get iind, jind, Aval
Aset{S} = sparse( iind, jind, Aval, Ndof, Ndof );
end
A = Aset{1};
for S=2:Nsets
A = A + Aset{S} ;
end
Option 4) that gives the error:
Aset = cell(1,Nsets) ;
parfor S=1:Nsets
% Do lots of stuff to get iind, jind, Aval
matind = iind +Ndof*( jind-1 );
Aset{S} = sparse( matind, ones(size(matind)), Aval, Ndof*Ndof, 1 ) ;
end
A = Aset{1};
for S=2:Nsets
A = A + Aset{S} ;
end
A = reshape(A,Ndof,Ndof) ;
Any ideas why option 4 crashes?
How should I do this to gain speed?
The size of the final matrix, i.e. Ndof, is few millions. Number of matrix pieces, i.e. Nsets, is 10 to 30. For option 3 it takes roughly 30 seconds to sum the matrixes of size Ndof=4000000. I’m building a large sparse matrix in smaller pieces. Unfortunately the pieces overlap a bit. At the moment I’m building each piece to match the final size and after the loop I sum the pieces together. I have tried following approaches
1) I tried summing up sparse matrixes inside parfor. Bad idea. Produces full matrix.
2) Build index vectors for each piece of the matrix and combine the index vectors inside parfor. Then use one sparse command after the loop to build the final matrix. This, unfortunately, is rather slow. The reason might be the repetitive entries that the sparse command needs to sum up.
3) Build sparse matrix of each piece and store them in cell array inside parfor. Then sum up the sparse matrixes inside regular for loop. This is the best so far; fast and reliable. (See the pseudocode below.)
4) This is the problematic case: Build sparse vectors out of each piece and store them in cell array. Then sum up the sparse vectors inside regular for loop, and reshape to matrix. Unfortunately for larger systems it crashes with
Error using parallel_function (line 598)
Error during serialization
Error stack:
remoteParallelFunction.m at 31
As a for loop it runs just fine.
Below is some pseudocode to shed light on what I’m doing:
First option 3) that always works.
Aset = cell(1,Nsets) ;
parfor S=1:Nsets
% Do lots of stuff to get iind, jind, Aval
Aset{S} = sparse( iind, jind, Aval, Ndof, Ndof );
end
A = Aset{1};
for S=2:Nsets
A = A + Aset{S} ;
end
Option 4) that gives the error:
Aset = cell(1,Nsets) ;
parfor S=1:Nsets
% Do lots of stuff to get iind, jind, Aval
matind = iind +Ndof*( jind-1 );
Aset{S} = sparse( matind, ones(size(matind)), Aval, Ndof*Ndof, 1 ) ;
end
A = Aset{1};
for S=2:Nsets
A = A + Aset{S} ;
end
A = reshape(A,Ndof,Ndof) ;
Any ideas why option 4 crashes?
How should I do this to gain speed?
The size of the final matrix, i.e. Ndof, is few millions. Number of matrix pieces, i.e. Nsets, is 10 to 30. For option 3 it takes roughly 30 seconds to sum the matrixes of size Ndof=4000000. parfor, sparse MATLAB Answers — New Questions
filtfilt Does Not Perform Zero-Phase Filtering. Does It Matter?
The doc page for filtfilt claims that the function "performs zero-phase digital filtering" and then goes on to describe the expected characteristics of a zero-phase output. It’s pretty easy to show that this claim is false.
Generate some input data
rng(100);
x = rand(1,50);
Define a simple FIR filter
b = 1:4;
a = 1;
The zero-phase filtered output y and its associated discrete times can be computed as
h = b; % filter impulse resonse
y2 = conv(fliplr(h),conv(h,x)); % zero-phase, filtered output
Nh = numel(h); % length of impulse response
Nx = numel(x); % length of input
ny2 = -(Nh-1) : Nh + Nx – 2; % time of output
As must be the case, the output is longer than the input, and the output extends to the left into negative time.
We can show that y2 satisfies the properties for zero-phase filtering
Compute the DTFT of the input and the impulse response
[X,w] = freqz(x,1,1000);
H = freqz(b,a,w);
Compute the DTFT of the output
Y2 = freqz(y2,1,w).*exp(-1j*ny2(1)*w);
The phase of Y2 relative to X is (essentially) zero
figure
plot(w,angle(Y2./X)),xlabel(‘rad’),ylabel(‘rad’)
The magnitude of Y2 relative to X is the square of the magitude of the transfer function
figure
semilogy(w,abs(Y2./X),’DisplayName’,’abs(Y2/X)’)
hold on
semilogy(w,abs(H).^2,’ro’,’MarkerIndices’,1:20:numel(w),’DisplayName’,’abs(H)^2′)
xlabel(‘rad’),ylabel(‘Amplitude’)
legend
Now compare the output of filtfilt() to the zero-phase output
y4 = filtfilt(b,a,x);
ny4 = 0:numel(y4) – 1;
figure
stem(ny2,y2,’DisplayName’,’zero-phase’)
hold on
stem(ny4,y4,’x’,’DisplayName’,’filtfilt’)
legend("Location",’Best’)
The differences are apparent at the edges, undoubtedly because filtfilt() also takes actation that "minimizes start-up and ending transients." However, such action kills the "zero-phase" intent of the function. Even though it looks like the output of filtfilt() is close to the zero-phase output, the phase response really isn’t even close to zero-phase and the magnitude response isn’t abs(H)^2, even after taking into account that filtfilt() only returns the values of the output that correspond to the time samples of the input (it doesn’t return the computed values that extend past the left and right edges of the input).
Edit 13 April 2023
Here is the frequency domain assesment of the output of filtfilt as seen by the user. I didn’t include it in the original post because the output of filtfilt to the user doesn’t include the extra points that extend off the edges of the result that filtfilt computes internally but chops off before returning to the user to make the output points correspond to the input points. However, I’ve looked at those when debugging and they don’t really change the story and I thinkg these plots may be of interest.
Y4 = freqz(y4,1,w);
figure
semilogy(w,abs(Y4./X),’DisplayName’,’abs(Y4/X)’)
hold on
semilogy(w,abs(H).^2,’ro’,’MarkerIndices’,1:20:numel(w),’DisplayName’,’abs(H)^2′)
xlabel(‘rad’),ylabel(‘Amplitude’)
legend
figure
plot(w,angle(Y4./X)),xlabel(‘rad’),ylabel(‘rad’)
Are there applications where the true, zero-phase response (or at least its portion that corresponds to the time samples of the input) is desired?
Should filtfilt() include an option to not minimize transients for applications that need a true, zero-phase filter?
At a minimum, shouldn’t the filtfilt() doc page be updated?
Related to that last question, I think it’s interesting (if not telling) that other functions, like lowpass, that I think operate nearly exactly, if not exactly, the same as filtfilt() only claim that the function "compensates for the delay introduced by the filter."The doc page for filtfilt claims that the function "performs zero-phase digital filtering" and then goes on to describe the expected characteristics of a zero-phase output. It’s pretty easy to show that this claim is false.
Generate some input data
rng(100);
x = rand(1,50);
Define a simple FIR filter
b = 1:4;
a = 1;
The zero-phase filtered output y and its associated discrete times can be computed as
h = b; % filter impulse resonse
y2 = conv(fliplr(h),conv(h,x)); % zero-phase, filtered output
Nh = numel(h); % length of impulse response
Nx = numel(x); % length of input
ny2 = -(Nh-1) : Nh + Nx – 2; % time of output
As must be the case, the output is longer than the input, and the output extends to the left into negative time.
We can show that y2 satisfies the properties for zero-phase filtering
Compute the DTFT of the input and the impulse response
[X,w] = freqz(x,1,1000);
H = freqz(b,a,w);
Compute the DTFT of the output
Y2 = freqz(y2,1,w).*exp(-1j*ny2(1)*w);
The phase of Y2 relative to X is (essentially) zero
figure
plot(w,angle(Y2./X)),xlabel(‘rad’),ylabel(‘rad’)
The magnitude of Y2 relative to X is the square of the magitude of the transfer function
figure
semilogy(w,abs(Y2./X),’DisplayName’,’abs(Y2/X)’)
hold on
semilogy(w,abs(H).^2,’ro’,’MarkerIndices’,1:20:numel(w),’DisplayName’,’abs(H)^2′)
xlabel(‘rad’),ylabel(‘Amplitude’)
legend
Now compare the output of filtfilt() to the zero-phase output
y4 = filtfilt(b,a,x);
ny4 = 0:numel(y4) – 1;
figure
stem(ny2,y2,’DisplayName’,’zero-phase’)
hold on
stem(ny4,y4,’x’,’DisplayName’,’filtfilt’)
legend("Location",’Best’)
The differences are apparent at the edges, undoubtedly because filtfilt() also takes actation that "minimizes start-up and ending transients." However, such action kills the "zero-phase" intent of the function. Even though it looks like the output of filtfilt() is close to the zero-phase output, the phase response really isn’t even close to zero-phase and the magnitude response isn’t abs(H)^2, even after taking into account that filtfilt() only returns the values of the output that correspond to the time samples of the input (it doesn’t return the computed values that extend past the left and right edges of the input).
Edit 13 April 2023
Here is the frequency domain assesment of the output of filtfilt as seen by the user. I didn’t include it in the original post because the output of filtfilt to the user doesn’t include the extra points that extend off the edges of the result that filtfilt computes internally but chops off before returning to the user to make the output points correspond to the input points. However, I’ve looked at those when debugging and they don’t really change the story and I thinkg these plots may be of interest.
Y4 = freqz(y4,1,w);
figure
semilogy(w,abs(Y4./X),’DisplayName’,’abs(Y4/X)’)
hold on
semilogy(w,abs(H).^2,’ro’,’MarkerIndices’,1:20:numel(w),’DisplayName’,’abs(H)^2′)
xlabel(‘rad’),ylabel(‘Amplitude’)
legend
figure
plot(w,angle(Y4./X)),xlabel(‘rad’),ylabel(‘rad’)
Are there applications where the true, zero-phase response (or at least its portion that corresponds to the time samples of the input) is desired?
Should filtfilt() include an option to not minimize transients for applications that need a true, zero-phase filter?
At a minimum, shouldn’t the filtfilt() doc page be updated?
Related to that last question, I think it’s interesting (if not telling) that other functions, like lowpass, that I think operate nearly exactly, if not exactly, the same as filtfilt() only claim that the function "compensates for the delay introduced by the filter." The doc page for filtfilt claims that the function "performs zero-phase digital filtering" and then goes on to describe the expected characteristics of a zero-phase output. It’s pretty easy to show that this claim is false.
Generate some input data
rng(100);
x = rand(1,50);
Define a simple FIR filter
b = 1:4;
a = 1;
The zero-phase filtered output y and its associated discrete times can be computed as
h = b; % filter impulse resonse
y2 = conv(fliplr(h),conv(h,x)); % zero-phase, filtered output
Nh = numel(h); % length of impulse response
Nx = numel(x); % length of input
ny2 = -(Nh-1) : Nh + Nx – 2; % time of output
As must be the case, the output is longer than the input, and the output extends to the left into negative time.
We can show that y2 satisfies the properties for zero-phase filtering
Compute the DTFT of the input and the impulse response
[X,w] = freqz(x,1,1000);
H = freqz(b,a,w);
Compute the DTFT of the output
Y2 = freqz(y2,1,w).*exp(-1j*ny2(1)*w);
The phase of Y2 relative to X is (essentially) zero
figure
plot(w,angle(Y2./X)),xlabel(‘rad’),ylabel(‘rad’)
The magnitude of Y2 relative to X is the square of the magitude of the transfer function
figure
semilogy(w,abs(Y2./X),’DisplayName’,’abs(Y2/X)’)
hold on
semilogy(w,abs(H).^2,’ro’,’MarkerIndices’,1:20:numel(w),’DisplayName’,’abs(H)^2′)
xlabel(‘rad’),ylabel(‘Amplitude’)
legend
Now compare the output of filtfilt() to the zero-phase output
y4 = filtfilt(b,a,x);
ny4 = 0:numel(y4) – 1;
figure
stem(ny2,y2,’DisplayName’,’zero-phase’)
hold on
stem(ny4,y4,’x’,’DisplayName’,’filtfilt’)
legend("Location",’Best’)
The differences are apparent at the edges, undoubtedly because filtfilt() also takes actation that "minimizes start-up and ending transients." However, such action kills the "zero-phase" intent of the function. Even though it looks like the output of filtfilt() is close to the zero-phase output, the phase response really isn’t even close to zero-phase and the magnitude response isn’t abs(H)^2, even after taking into account that filtfilt() only returns the values of the output that correspond to the time samples of the input (it doesn’t return the computed values that extend past the left and right edges of the input).
Edit 13 April 2023
Here is the frequency domain assesment of the output of filtfilt as seen by the user. I didn’t include it in the original post because the output of filtfilt to the user doesn’t include the extra points that extend off the edges of the result that filtfilt computes internally but chops off before returning to the user to make the output points correspond to the input points. However, I’ve looked at those when debugging and they don’t really change the story and I thinkg these plots may be of interest.
Y4 = freqz(y4,1,w);
figure
semilogy(w,abs(Y4./X),’DisplayName’,’abs(Y4/X)’)
hold on
semilogy(w,abs(H).^2,’ro’,’MarkerIndices’,1:20:numel(w),’DisplayName’,’abs(H)^2′)
xlabel(‘rad’),ylabel(‘Amplitude’)
legend
figure
plot(w,angle(Y4./X)),xlabel(‘rad’),ylabel(‘rad’)
Are there applications where the true, zero-phase response (or at least its portion that corresponds to the time samples of the input) is desired?
Should filtfilt() include an option to not minimize transients for applications that need a true, zero-phase filter?
At a minimum, shouldn’t the filtfilt() doc page be updated?
Related to that last question, I think it’s interesting (if not telling) that other functions, like lowpass, that I think operate nearly exactly, if not exactly, the same as filtfilt() only claim that the function "compensates for the delay introduced by the filter." filtfilt, zero-phase filter MATLAB Answers — New Questions
Cannot make Linearization work
Still after watching several tutorials I cannot make the Model Linearizer work as I hope it shoud (and how it seems to work for anybody else)
I have the following Simuling model:
Everything on Simuling works fine, I get this output from the measurement probe:
Then I mark the step input as Linear Analysis Point/Open-loop input (tried also with Input perturbation) and the probe signal as Linear Analysis Point/Output measurement. Then I start the Model linearizer (in many videos I see that it is called from a menu item that doesn’t show up in my Simuling: Analysis/Contro Design/Linear analsys, but I assume it is the same, probably just different software releases).
Finally, when I hit "Step" or "Bode", all I get is a flat response (basically only the steady-state value):
What am I missing? I also tried playing around with different operating points (i.e., [0, 1, 1.1, 2, ….] to no avail.
I would expect to get the same output, and from there extract the transfer function. Thanks for any helpStill after watching several tutorials I cannot make the Model Linearizer work as I hope it shoud (and how it seems to work for anybody else)
I have the following Simuling model:
Everything on Simuling works fine, I get this output from the measurement probe:
Then I mark the step input as Linear Analysis Point/Open-loop input (tried also with Input perturbation) and the probe signal as Linear Analysis Point/Output measurement. Then I start the Model linearizer (in many videos I see that it is called from a menu item that doesn’t show up in my Simuling: Analysis/Contro Design/Linear analsys, but I assume it is the same, probably just different software releases).
Finally, when I hit "Step" or "Bode", all I get is a flat response (basically only the steady-state value):
What am I missing? I also tried playing around with different operating points (i.e., [0, 1, 1.1, 2, ….] to no avail.
I would expect to get the same output, and from there extract the transfer function. Thanks for any help Still after watching several tutorials I cannot make the Model Linearizer work as I hope it shoud (and how it seems to work for anybody else)
I have the following Simuling model:
Everything on Simuling works fine, I get this output from the measurement probe:
Then I mark the step input as Linear Analysis Point/Open-loop input (tried also with Input perturbation) and the probe signal as Linear Analysis Point/Output measurement. Then I start the Model linearizer (in many videos I see that it is called from a menu item that doesn’t show up in my Simuling: Analysis/Contro Design/Linear analsys, but I assume it is the same, probably just different software releases).
Finally, when I hit "Step" or "Bode", all I get is a flat response (basically only the steady-state value):
What am I missing? I also tried playing around with different operating points (i.e., [0, 1, 1.1, 2, ….] to no avail.
I would expect to get the same output, and from there extract the transfer function. Thanks for any help linearization, transfer function, simulink MATLAB Answers — New Questions