Tag Archives: matlab
Discrete convolution in time/Laplace domain
Hello,
I’m dealing with a problem where I need to calculate a convolution in the time domain again and again, so efficiency is a big issue.
I need to evaluate the following formula
numerically. I know as a analytical function (which btw can also be transformed analytically in the time domain); but I have only as discrete values . That means I need to evaluate in discrete form to obtain .
I have used FFT to solve some convolution in the Fourier space, but this Laplace transforms seem to be much more challenging numerically. Is maybe z-transforms the way to go? I would be very thankfull for any guidance on the topic.
Thank you.Hello,
I’m dealing with a problem where I need to calculate a convolution in the time domain again and again, so efficiency is a big issue.
I need to evaluate the following formula
numerically. I know as a analytical function (which btw can also be transformed analytically in the time domain); but I have only as discrete values . That means I need to evaluate in discrete form to obtain .
I have used FFT to solve some convolution in the Fourier space, but this Laplace transforms seem to be much more challenging numerically. Is maybe z-transforms the way to go? I would be very thankfull for any guidance on the topic.
Thank you. Hello,
I’m dealing with a problem where I need to calculate a convolution in the time domain again and again, so efficiency is a big issue.
I need to evaluate the following formula
numerically. I know as a analytical function (which btw can also be transformed analytically in the time domain); but I have only as discrete values . That means I need to evaluate in discrete form to obtain .
I have used FFT to solve some convolution in the Fourier space, but this Laplace transforms seem to be much more challenging numerically. Is maybe z-transforms the way to go? I would be very thankfull for any guidance on the topic.
Thank you. laplace transform, z transform, convolution in time MATLAB Answers — New Questions
Optimal Cutoff Frequency for Static Noise Detection in ECG Signals?
Hello MATLAB Community,
I am currently working on optimizing the detection of static noise in ECG signals and would greatly appreciate your expertise. Specifically, I am looking to determine the best cutoff frequency for filtering this noise. Below, I have listed the SNR (Signal-to-Noise Ratio) values for different cutoff frequencies in two leads, Lead I and Lead aVL:
Cutoff Frequency = 0.5 Hz
SNR in Lead I: 7.98 dB
SNR in Lead aVL: 5.41 dB
Cutoff Frequency = 1.0 Hz
SNR in Lead I: 7.29 dB
SNR in Lead aVL: 5.11 dB
Cutoff Frequency = 5.0 Hz
SNR in Lead I: 4.03 dB
SNR in Lead aVL: 3.23 dB
Cutoff Frequency = 10.0 Hz
SNR in Lead I: 2.17 dB
SNR in Lead aVL: 1.96 dB
Quantification of Noise:
Cutoff Frequency = 0.5 Hz
Number of noise points in Lead I: 299
Number of noise points in Lead aVL: 341
Cutoff Frequency = 1.0 Hz
Number of noise points in Lead I: 278
Number of noise points in Lead aVL: 304
Cutoff Frequency = 5.0 Hz
Number of noise points in Lead I: 179
Number of noise points in Lead aVL: 213
Cutoff Frequency = 10.0 Hz
Number of noise points in Lead I: 127
Number of noise points in Lead aVL: 137
Additionally, I have attached an image showing the residuals ( lead I ) .
To determine the best threshold value, I used an approach based on minimizing the number of noise points detected in the filtered signal. Here is a detailed explanation of the process:
Process to determine the best threshold value
Calculation of the filtered signal:
For each cutoff frequency, I applied a high-pass filter to remove low-frequency components from the ECG signal.
Threshold definition:
I tested different threshold values, defined as multiples of the standard deviation (STD) of the filtered signal. The tested thresholds were 0.25 * STD, 0.5 * STD, 0.75 * STD, and 1 * STD.
Noise point detection:
For each threshold value, I detected points in the filtered signal where the amplitude exceeds the threshold.
The number of detected noise points is counted for each threshold value.
Selection of the best threshold:
The best threshold is the one that minimizes the number of detected noise points. The hypothesis is that the optimal threshold eliminates noise without affecting the useful components of the ECG signal.
Based on this data, I am seeking advice on the most suitable cutoff frequency for effectively reducing static noise while preserving the integrity of the ECG signal. Any suggestions or insights into methodologies for determining this would be highly valuable.
Thank you in advance for your help!
Best regards,Hello MATLAB Community,
I am currently working on optimizing the detection of static noise in ECG signals and would greatly appreciate your expertise. Specifically, I am looking to determine the best cutoff frequency for filtering this noise. Below, I have listed the SNR (Signal-to-Noise Ratio) values for different cutoff frequencies in two leads, Lead I and Lead aVL:
Cutoff Frequency = 0.5 Hz
SNR in Lead I: 7.98 dB
SNR in Lead aVL: 5.41 dB
Cutoff Frequency = 1.0 Hz
SNR in Lead I: 7.29 dB
SNR in Lead aVL: 5.11 dB
Cutoff Frequency = 5.0 Hz
SNR in Lead I: 4.03 dB
SNR in Lead aVL: 3.23 dB
Cutoff Frequency = 10.0 Hz
SNR in Lead I: 2.17 dB
SNR in Lead aVL: 1.96 dB
Quantification of Noise:
Cutoff Frequency = 0.5 Hz
Number of noise points in Lead I: 299
Number of noise points in Lead aVL: 341
Cutoff Frequency = 1.0 Hz
Number of noise points in Lead I: 278
Number of noise points in Lead aVL: 304
Cutoff Frequency = 5.0 Hz
Number of noise points in Lead I: 179
Number of noise points in Lead aVL: 213
Cutoff Frequency = 10.0 Hz
Number of noise points in Lead I: 127
Number of noise points in Lead aVL: 137
Additionally, I have attached an image showing the residuals ( lead I ) .
To determine the best threshold value, I used an approach based on minimizing the number of noise points detected in the filtered signal. Here is a detailed explanation of the process:
Process to determine the best threshold value
Calculation of the filtered signal:
For each cutoff frequency, I applied a high-pass filter to remove low-frequency components from the ECG signal.
Threshold definition:
I tested different threshold values, defined as multiples of the standard deviation (STD) of the filtered signal. The tested thresholds were 0.25 * STD, 0.5 * STD, 0.75 * STD, and 1 * STD.
Noise point detection:
For each threshold value, I detected points in the filtered signal where the amplitude exceeds the threshold.
The number of detected noise points is counted for each threshold value.
Selection of the best threshold:
The best threshold is the one that minimizes the number of detected noise points. The hypothesis is that the optimal threshold eliminates noise without affecting the useful components of the ECG signal.
Based on this data, I am seeking advice on the most suitable cutoff frequency for effectively reducing static noise while preserving the integrity of the ECG signal. Any suggestions or insights into methodologies for determining this would be highly valuable.
Thank you in advance for your help!
Best regards, Hello MATLAB Community,
I am currently working on optimizing the detection of static noise in ECG signals and would greatly appreciate your expertise. Specifically, I am looking to determine the best cutoff frequency for filtering this noise. Below, I have listed the SNR (Signal-to-Noise Ratio) values for different cutoff frequencies in two leads, Lead I and Lead aVL:
Cutoff Frequency = 0.5 Hz
SNR in Lead I: 7.98 dB
SNR in Lead aVL: 5.41 dB
Cutoff Frequency = 1.0 Hz
SNR in Lead I: 7.29 dB
SNR in Lead aVL: 5.11 dB
Cutoff Frequency = 5.0 Hz
SNR in Lead I: 4.03 dB
SNR in Lead aVL: 3.23 dB
Cutoff Frequency = 10.0 Hz
SNR in Lead I: 2.17 dB
SNR in Lead aVL: 1.96 dB
Quantification of Noise:
Cutoff Frequency = 0.5 Hz
Number of noise points in Lead I: 299
Number of noise points in Lead aVL: 341
Cutoff Frequency = 1.0 Hz
Number of noise points in Lead I: 278
Number of noise points in Lead aVL: 304
Cutoff Frequency = 5.0 Hz
Number of noise points in Lead I: 179
Number of noise points in Lead aVL: 213
Cutoff Frequency = 10.0 Hz
Number of noise points in Lead I: 127
Number of noise points in Lead aVL: 137
Additionally, I have attached an image showing the residuals ( lead I ) .
To determine the best threshold value, I used an approach based on minimizing the number of noise points detected in the filtered signal. Here is a detailed explanation of the process:
Process to determine the best threshold value
Calculation of the filtered signal:
For each cutoff frequency, I applied a high-pass filter to remove low-frequency components from the ECG signal.
Threshold definition:
I tested different threshold values, defined as multiples of the standard deviation (STD) of the filtered signal. The tested thresholds were 0.25 * STD, 0.5 * STD, 0.75 * STD, and 1 * STD.
Noise point detection:
For each threshold value, I detected points in the filtered signal where the amplitude exceeds the threshold.
The number of detected noise points is counted for each threshold value.
Selection of the best threshold:
The best threshold is the one that minimizes the number of detected noise points. The hypothesis is that the optimal threshold eliminates noise without affecting the useful components of the ECG signal.
Based on this data, I am seeking advice on the most suitable cutoff frequency for effectively reducing static noise while preserving the integrity of the ECG signal. Any suggestions or insights into methodologies for determining this would be highly valuable.
Thank you in advance for your help!
Best regards, ecg, signal processing, noises, static_noise, ptb_xl, snr MATLAB Answers — New Questions
RL PPO agent diverges with one-step training
Hi,
I am training my PPO agent based on a system with continuous action space, and I want to have my agent trains for only one step and one episode in each train() function, and see how it performs:
trainingOpts = rlTrainingOptions(…
MaxEpisodes=1, …
MaxStepsPerEpisode=1, …
Verbose=false, …
Plots="none",…
StopTrainingCriteria="AverageReward",…
StopTrainingValue=480);
This is the settings of the agent:
function [agents,obsInfo,actionInfo] = generate_PPOagents(Ts)
%observation and action spaces
obsInfo = rlNumericSpec([2 1],’LowerLimit’,-inf*ones(2,1),’UpperLimit’,inf*ones(2,1));
obsInfo.Name = ‘state’;
obsInfo.Description = ‘position, velocity’;
actionInfo = rlNumericSpec([1 1],’LowerLimit’,-inf,’UpperLimit’,inf);
actionInfo.Name = ‘continuousAction’;
agentOptions = rlPPOAgentOptions(…
‘DiscountFactor’, 0.99,…
‘EntropyLossWeight’, 0.01,…
‘ExperienceHorizon’, 20,…
‘MiniBatchSize’, 20,…
‘ClipFactor’, 0.2,…
‘NormalizedAdvantageMethod’,’none’,…
‘SampleTime’, -1);
agent1 = rlPPOAgent(obsInfo, actionInfo, agentOptions);
agent2 = rlPPOAgent(obsInfo, actionInfo, agentOptions);
agents = [agent1,agent2];
end
my reward is a conditional one based on whether the states satisfy some conditions:
function [nextObs, reward, isDone, loggedSignals] = myStepFunction1(action, loggedSignals,S)
nextObs = S.A1d*[loggedSignals.State(1);loggedSignals.State(2)] + S.B1d*action;
loggedSignals.State = nextObs;
if abs(nextObs(1))>10 || abs(nextObs(2))>10
reward = S.test-100;
else
reward = -1*(nextObs(1)^2 + nextObs(2)^2);
end
isDone = false;
end
in this case, every time the system finishes train(), the agent moves forward 1 step using getAction(), then I modify the reset function and then update the env so that each time the next train() simulates, the agent will start at the new state, then do trian() again to carry out the loop. But when I simulate the system, the states diverges to Inf after just around 20 train() iterations, I have checked my env, the agent settings, all seems fine. I tested if the issue is from the penalty in the reward function by changing S.test above, but the simulation fails as well.
I am not sure if the issue is caused by the one episode one step training method, in theory I am expecting bad performance at first but it should not be diverging so fast to Inf.
Thanks.Hi,
I am training my PPO agent based on a system with continuous action space, and I want to have my agent trains for only one step and one episode in each train() function, and see how it performs:
trainingOpts = rlTrainingOptions(…
MaxEpisodes=1, …
MaxStepsPerEpisode=1, …
Verbose=false, …
Plots="none",…
StopTrainingCriteria="AverageReward",…
StopTrainingValue=480);
This is the settings of the agent:
function [agents,obsInfo,actionInfo] = generate_PPOagents(Ts)
%observation and action spaces
obsInfo = rlNumericSpec([2 1],’LowerLimit’,-inf*ones(2,1),’UpperLimit’,inf*ones(2,1));
obsInfo.Name = ‘state’;
obsInfo.Description = ‘position, velocity’;
actionInfo = rlNumericSpec([1 1],’LowerLimit’,-inf,’UpperLimit’,inf);
actionInfo.Name = ‘continuousAction’;
agentOptions = rlPPOAgentOptions(…
‘DiscountFactor’, 0.99,…
‘EntropyLossWeight’, 0.01,…
‘ExperienceHorizon’, 20,…
‘MiniBatchSize’, 20,…
‘ClipFactor’, 0.2,…
‘NormalizedAdvantageMethod’,’none’,…
‘SampleTime’, -1);
agent1 = rlPPOAgent(obsInfo, actionInfo, agentOptions);
agent2 = rlPPOAgent(obsInfo, actionInfo, agentOptions);
agents = [agent1,agent2];
end
my reward is a conditional one based on whether the states satisfy some conditions:
function [nextObs, reward, isDone, loggedSignals] = myStepFunction1(action, loggedSignals,S)
nextObs = S.A1d*[loggedSignals.State(1);loggedSignals.State(2)] + S.B1d*action;
loggedSignals.State = nextObs;
if abs(nextObs(1))>10 || abs(nextObs(2))>10
reward = S.test-100;
else
reward = -1*(nextObs(1)^2 + nextObs(2)^2);
end
isDone = false;
end
in this case, every time the system finishes train(), the agent moves forward 1 step using getAction(), then I modify the reset function and then update the env so that each time the next train() simulates, the agent will start at the new state, then do trian() again to carry out the loop. But when I simulate the system, the states diverges to Inf after just around 20 train() iterations, I have checked my env, the agent settings, all seems fine. I tested if the issue is from the penalty in the reward function by changing S.test above, but the simulation fails as well.
I am not sure if the issue is caused by the one episode one step training method, in theory I am expecting bad performance at first but it should not be diverging so fast to Inf.
Thanks. Hi,
I am training my PPO agent based on a system with continuous action space, and I want to have my agent trains for only one step and one episode in each train() function, and see how it performs:
trainingOpts = rlTrainingOptions(…
MaxEpisodes=1, …
MaxStepsPerEpisode=1, …
Verbose=false, …
Plots="none",…
StopTrainingCriteria="AverageReward",…
StopTrainingValue=480);
This is the settings of the agent:
function [agents,obsInfo,actionInfo] = generate_PPOagents(Ts)
%observation and action spaces
obsInfo = rlNumericSpec([2 1],’LowerLimit’,-inf*ones(2,1),’UpperLimit’,inf*ones(2,1));
obsInfo.Name = ‘state’;
obsInfo.Description = ‘position, velocity’;
actionInfo = rlNumericSpec([1 1],’LowerLimit’,-inf,’UpperLimit’,inf);
actionInfo.Name = ‘continuousAction’;
agentOptions = rlPPOAgentOptions(…
‘DiscountFactor’, 0.99,…
‘EntropyLossWeight’, 0.01,…
‘ExperienceHorizon’, 20,…
‘MiniBatchSize’, 20,…
‘ClipFactor’, 0.2,…
‘NormalizedAdvantageMethod’,’none’,…
‘SampleTime’, -1);
agent1 = rlPPOAgent(obsInfo, actionInfo, agentOptions);
agent2 = rlPPOAgent(obsInfo, actionInfo, agentOptions);
agents = [agent1,agent2];
end
my reward is a conditional one based on whether the states satisfy some conditions:
function [nextObs, reward, isDone, loggedSignals] = myStepFunction1(action, loggedSignals,S)
nextObs = S.A1d*[loggedSignals.State(1);loggedSignals.State(2)] + S.B1d*action;
loggedSignals.State = nextObs;
if abs(nextObs(1))>10 || abs(nextObs(2))>10
reward = S.test-100;
else
reward = -1*(nextObs(1)^2 + nextObs(2)^2);
end
isDone = false;
end
in this case, every time the system finishes train(), the agent moves forward 1 step using getAction(), then I modify the reset function and then update the env so that each time the next train() simulates, the agent will start at the new state, then do trian() again to carry out the loop. But when I simulate the system, the states diverges to Inf after just around 20 train() iterations, I have checked my env, the agent settings, all seems fine. I tested if the issue is from the penalty in the reward function by changing S.test above, but the simulation fails as well.
I am not sure if the issue is caused by the one episode one step training method, in theory I am expecting bad performance at first but it should not be diverging so fast to Inf.
Thanks. ppo, reinforcement learning, training, converge MATLAB Answers — New Questions
Raytracing channel and showProfile
Hello everyone, i have one question about the showProfile command. I study an urban enviroment with raytracing propagation model, using the channel = comm.RayTracingChannel(rays, tx, rx) object. I obtain the channel, and with these i can found the channel impulse response if i dont use any input:
CIR = channel( )
After i use the showProfile(channel) and i plot the power delay profile. Can i obtain the same plot using the sample from the CIR? Because i want to save the magnitude of every tap from the power delay profile, but with the showProfile command is not possible so i have to recreate those from myself.Hello everyone, i have one question about the showProfile command. I study an urban enviroment with raytracing propagation model, using the channel = comm.RayTracingChannel(rays, tx, rx) object. I obtain the channel, and with these i can found the channel impulse response if i dont use any input:
CIR = channel( )
After i use the showProfile(channel) and i plot the power delay profile. Can i obtain the same plot using the sample from the CIR? Because i want to save the magnitude of every tap from the power delay profile, but with the showProfile command is not possible so i have to recreate those from myself. Hello everyone, i have one question about the showProfile command. I study an urban enviroment with raytracing propagation model, using the channel = comm.RayTracingChannel(rays, tx, rx) object. I obtain the channel, and with these i can found the channel impulse response if i dont use any input:
CIR = channel( )
After i use the showProfile(channel) and i plot the power delay profile. Can i obtain the same plot using the sample from the CIR? Because i want to save the magnitude of every tap from the power delay profile, but with the showProfile command is not possible so i have to recreate those from myself. raytracing, showprofile MATLAB Answers — New Questions
Cannot solve algebraic loop involving ‘Mo_phong_xe/Equation1_ddgama1/MATLAB Function5’ because it consists of blocks that cannot be assigned algebraic variables, such as block
Cannot solve algebraic loop involving ‘Mo_phong_xe/Equation1_ddgama1/MATLAB Function5’ because it consists of blocks that cannot be assigned algebraic variables, such as blocks with discrete-valued outputs, blocks with non-double or complex outputs, Stateflow blocks, or nonvirtual subsystems. Consider breaking the algebraic loop. For example, add a delay or a memory block to the loop. To see more details about the loops use the command Simulink.BlockDiagram.getAlgebraicLoops(bdroot)
Component:Simulink | Category:Model error
Input ports (23) of ‘Mo_phong_xe/Equation1_ddgama1/MATLAB Function5’ are involved in the loop.Cannot solve algebraic loop involving ‘Mo_phong_xe/Equation1_ddgama1/MATLAB Function5’ because it consists of blocks that cannot be assigned algebraic variables, such as blocks with discrete-valued outputs, blocks with non-double or complex outputs, Stateflow blocks, or nonvirtual subsystems. Consider breaking the algebraic loop. For example, add a delay or a memory block to the loop. To see more details about the loops use the command Simulink.BlockDiagram.getAlgebraicLoops(bdroot)
Component:Simulink | Category:Model error
Input ports (23) of ‘Mo_phong_xe/Equation1_ddgama1/MATLAB Function5’ are involved in the loop. Cannot solve algebraic loop involving ‘Mo_phong_xe/Equation1_ddgama1/MATLAB Function5’ because it consists of blocks that cannot be assigned algebraic variables, such as blocks with discrete-valued outputs, blocks with non-double or complex outputs, Stateflow blocks, or nonvirtual subsystems. Consider breaking the algebraic loop. For example, add a delay or a memory block to the loop. To see more details about the loops use the command Simulink.BlockDiagram.getAlgebraicLoops(bdroot)
Component:Simulink | Category:Model error
Input ports (23) of ‘Mo_phong_xe/Equation1_ddgama1/MATLAB Function5’ are involved in the loop. error MATLAB Answers — New Questions
Find index of a nearest value
Hello there,
If I have a data: x = [1 2 3 4 5 6 11 15 21 51 52 54 100 101 151 201 251 301 401];
Anyone knows how to get the index of the value close to a certain values: 10, 20, 50, 100, 150, 200, 250, 300, 400?
In this case, the index should be related to the x = 11, 21, etc.
thanksHello there,
If I have a data: x = [1 2 3 4 5 6 11 15 21 51 52 54 100 101 151 201 251 301 401];
Anyone knows how to get the index of the value close to a certain values: 10, 20, 50, 100, 150, 200, 250, 300, 400?
In this case, the index should be related to the x = 11, 21, etc.
thanks Hello there,
If I have a data: x = [1 2 3 4 5 6 11 15 21 51 52 54 100 101 151 201 251 301 401];
Anyone knows how to get the index of the value close to a certain values: 10, 20, 50, 100, 150, 200, 250, 300, 400?
In this case, the index should be related to the x = 11, 21, etc.
thanks index MATLAB Answers — New Questions
Convert MATLAB .m Files to a .jar File for Use in a Java Project in MATLAB R2024a
I’m working with MATLAB R2024a and I have several .m files, each defining a different function. I need to convert all these .m files into a single .jar file so that I can use these functions in a Java project.
How can I achieve this?
Here’s an example of what one of my .m files looks like:
function [output] = myFunction(input)
…
endI’m working with MATLAB R2024a and I have several .m files, each defining a different function. I need to convert all these .m files into a single .jar file so that I can use these functions in a Java project.
How can I achieve this?
Here’s an example of what one of my .m files looks like:
function [output] = myFunction(input)
…
end I’m working with MATLAB R2024a and I have several .m files, each defining a different function. I need to convert all these .m files into a single .jar file so that I can use these functions in a Java project.
How can I achieve this?
Here’s an example of what one of my .m files looks like:
function [output] = myFunction(input)
…
end java, jar, compiler MATLAB Answers — New Questions
Num of max consective occurance of ‘T’
Hi,
I have a set of cyclone data that I am trying to analyse. in the sample timetable, each system is described by unique id, for each id i want to count the MAX CONSECTIIVE occuance of ‘T’ in the ‘thrsh’ column. I also want to know the closest location of the next or previous ‘T’ after of before the max conseitive occuance for each system. the final table should be [id, maxOcc, nextLoc]. Some selected ids are shown below:
id = 1990S001, maxOcc = 2, nextT = 0 (no occurance of next or previous T after or before F)
id = 1990S005, maxOcc = 2, nextT = 0
id = 1990S014, maxOcc = 5, nextT = -8 (8th occurance of T before F)
id = 1990S019, maxOcc = 3, nextT = -2 (2nd occurance of T before F)
High appreciate your help.
ThanksHi,
I have a set of cyclone data that I am trying to analyse. in the sample timetable, each system is described by unique id, for each id i want to count the MAX CONSECTIIVE occuance of ‘T’ in the ‘thrsh’ column. I also want to know the closest location of the next or previous ‘T’ after of before the max conseitive occuance for each system. the final table should be [id, maxOcc, nextLoc]. Some selected ids are shown below:
id = 1990S001, maxOcc = 2, nextT = 0 (no occurance of next or previous T after or before F)
id = 1990S005, maxOcc = 2, nextT = 0
id = 1990S014, maxOcc = 5, nextT = -8 (8th occurance of T before F)
id = 1990S019, maxOcc = 3, nextT = -2 (2nd occurance of T before F)
High appreciate your help.
Thanks Hi,
I have a set of cyclone data that I am trying to analyse. in the sample timetable, each system is described by unique id, for each id i want to count the MAX CONSECTIIVE occuance of ‘T’ in the ‘thrsh’ column. I also want to know the closest location of the next or previous ‘T’ after of before the max conseitive occuance for each system. the final table should be [id, maxOcc, nextLoc]. Some selected ids are shown below:
id = 1990S001, maxOcc = 2, nextT = 0 (no occurance of next or previous T after or before F)
id = 1990S005, maxOcc = 2, nextT = 0
id = 1990S014, maxOcc = 5, nextT = -8 (8th occurance of T before F)
id = 1990S019, maxOcc = 3, nextT = -2 (2nd occurance of T before F)
High appreciate your help.
Thanks time, timetable, consective occurance MATLAB Answers — New Questions
Visual3DModel In the satellite() function it doesn’t move as desired
I want to simulation the satllite by TLE using
sc = satelliteScenario(startTime,stopTime,sampleTime)
sat = satellite(sc,’example.tle’);
The code works normally. by points representing satellites moves according to the input TLE.
However, when I add
sat.Visual3DModel = "example.glb";
The model displays correctly. But when running the model The model does not move along the TLE like the previous point. and rotates in place throughout the simulation. And show the error:
Warning: Error occurred while executing the listener callback for
event MouseClickPlay defined for class
globe.internal.MouseController:
Dot indexing is not supported for variables of this type.
Error in
matlabshared.satellitescenario.internal.Satellite/addCZMLGraphic
Error in matlabshared.satellitescenario.Viewer/writeCZML
Error in satelliteScenario/play
Error in
matlabshared.satellitescenario.Viewer/resimulateCurrentScenario
Error in
matlabshared.satellitescenario.Viewer>@(~,~)viewer.resimulateCurrentScenario
Error in globe.internal.MouseController/processMouseEvent
Error in globe.internal.MouseController
Error in globe.internal.GlobeController/onRequestResponse
Error in globe.internal.GlobeController
Error in message.subscribe
Error in message.internal.executeCallback
Error in globe.internal.GlobeController
Error in globe.internal.GlobeController/waitForAction
Error in globe.internal.GlobeController/request
Error in globe.internal.GlobeController/getParameterRequest
Error in globe.internal.GlobeController/getCameraPosition
Error in globe.graphics.GeographicGlobe/getCameraPosition
Error in globe.graphics.GeographicGlobe/get.CameraPosition
Error in globe.graphics.GeographicGlobe/camheight
Error in matlabshared.satellitescenario.Viewer/camheight
Error in matlabshared.satellitescenario.ScenarioGraphic/flyToGraphic
Error in satelliteScenario/show
Error in satelliteScenario/satelliteScenarioViewer
Error in matlabshared.satellitescenario.ScenarioGraphic/show
Error in matlabshared.satellitescenario.internal.ObjectArray/show
I have tried changing several models. Every type shows the same way.
How should I fix it? Thank youI want to simulation the satllite by TLE using
sc = satelliteScenario(startTime,stopTime,sampleTime)
sat = satellite(sc,’example.tle’);
The code works normally. by points representing satellites moves according to the input TLE.
However, when I add
sat.Visual3DModel = "example.glb";
The model displays correctly. But when running the model The model does not move along the TLE like the previous point. and rotates in place throughout the simulation. And show the error:
Warning: Error occurred while executing the listener callback for
event MouseClickPlay defined for class
globe.internal.MouseController:
Dot indexing is not supported for variables of this type.
Error in
matlabshared.satellitescenario.internal.Satellite/addCZMLGraphic
Error in matlabshared.satellitescenario.Viewer/writeCZML
Error in satelliteScenario/play
Error in
matlabshared.satellitescenario.Viewer/resimulateCurrentScenario
Error in
matlabshared.satellitescenario.Viewer>@(~,~)viewer.resimulateCurrentScenario
Error in globe.internal.MouseController/processMouseEvent
Error in globe.internal.MouseController
Error in globe.internal.GlobeController/onRequestResponse
Error in globe.internal.GlobeController
Error in message.subscribe
Error in message.internal.executeCallback
Error in globe.internal.GlobeController
Error in globe.internal.GlobeController/waitForAction
Error in globe.internal.GlobeController/request
Error in globe.internal.GlobeController/getParameterRequest
Error in globe.internal.GlobeController/getCameraPosition
Error in globe.graphics.GeographicGlobe/getCameraPosition
Error in globe.graphics.GeographicGlobe/get.CameraPosition
Error in globe.graphics.GeographicGlobe/camheight
Error in matlabshared.satellitescenario.Viewer/camheight
Error in matlabshared.satellitescenario.ScenarioGraphic/flyToGraphic
Error in satelliteScenario/show
Error in satelliteScenario/satelliteScenarioViewer
Error in matlabshared.satellitescenario.ScenarioGraphic/show
Error in matlabshared.satellitescenario.internal.ObjectArray/show
I have tried changing several models. Every type shows the same way.
How should I fix it? Thank you I want to simulation the satllite by TLE using
sc = satelliteScenario(startTime,stopTime,sampleTime)
sat = satellite(sc,’example.tle’);
The code works normally. by points representing satellites moves according to the input TLE.
However, when I add
sat.Visual3DModel = "example.glb";
The model displays correctly. But when running the model The model does not move along the TLE like the previous point. and rotates in place throughout the simulation. And show the error:
Warning: Error occurred while executing the listener callback for
event MouseClickPlay defined for class
globe.internal.MouseController:
Dot indexing is not supported for variables of this type.
Error in
matlabshared.satellitescenario.internal.Satellite/addCZMLGraphic
Error in matlabshared.satellitescenario.Viewer/writeCZML
Error in satelliteScenario/play
Error in
matlabshared.satellitescenario.Viewer/resimulateCurrentScenario
Error in
matlabshared.satellitescenario.Viewer>@(~,~)viewer.resimulateCurrentScenario
Error in globe.internal.MouseController/processMouseEvent
Error in globe.internal.MouseController
Error in globe.internal.GlobeController/onRequestResponse
Error in globe.internal.GlobeController
Error in message.subscribe
Error in message.internal.executeCallback
Error in globe.internal.GlobeController
Error in globe.internal.GlobeController/waitForAction
Error in globe.internal.GlobeController/request
Error in globe.internal.GlobeController/getParameterRequest
Error in globe.internal.GlobeController/getCameraPosition
Error in globe.graphics.GeographicGlobe/getCameraPosition
Error in globe.graphics.GeographicGlobe/get.CameraPosition
Error in globe.graphics.GeographicGlobe/camheight
Error in matlabshared.satellitescenario.Viewer/camheight
Error in matlabshared.satellitescenario.ScenarioGraphic/flyToGraphic
Error in satelliteScenario/show
Error in satelliteScenario/satelliteScenarioViewer
Error in matlabshared.satellitescenario.ScenarioGraphic/show
Error in matlabshared.satellitescenario.internal.ObjectArray/show
I have tried changing several models. Every type shows the same way.
How should I fix it? Thank you matlab, simulation MATLAB Answers — New Questions
How to Solve nonlinear equations in simulink
Hello everyone, I want to define and solve a system of nonlinear equations in Simulink using the MATLAB Function block, but I encountered an error. I would like to ask, why is this happening?
Here is the code inside the MATLAB Function block:
function dx = fcn(x)
dx1=x(1)+1
dx2=2*x(2)
dx=[dx1;dx2]
endHello everyone, I want to define and solve a system of nonlinear equations in Simulink using the MATLAB Function block, but I encountered an error. I would like to ask, why is this happening?
Here is the code inside the MATLAB Function block:
function dx = fcn(x)
dx1=x(1)+1
dx2=2*x(2)
dx=[dx1;dx2]
end Hello everyone, I want to define and solve a system of nonlinear equations in Simulink using the MATLAB Function block, but I encountered an error. I would like to ask, why is this happening?
Here is the code inside the MATLAB Function block:
function dx = fcn(x)
dx1=x(1)+1
dx2=2*x(2)
dx=[dx1;dx2]
end nonlinear, simulink MATLAB Answers — New Questions
how to calculate the partial derivatives for a given function of two variable ?
How can I write code to calculate the partial derivatives a given function of two variable ?How can I write code to calculate the partial derivatives a given function of two variable ? How can I write code to calculate the partial derivatives a given function of two variable ? partial-derivatives, two-variable, partial, derivatives MATLAB Answers — New Questions
How to create a suitable statistical test for my repeated measures problem with unequal sample sizes?
dear community,
i have the following problem: I want to test differences of specific repeated measures during a pre and a post test:
my datasets has 10 subjects, each subjects did 2 tasks (called pre and post). during each task, I did repeated measurements of 5 different parameters (each set of 5 parameters were taken at the same time) over time. In addition, each pre and post measurement can be divided into two segments A and B. Now, i want to analyze the differences between pre and post on four different levels: on each of the parameters
taking parameter, I want to compare
subject wise and segement wise, e.g. Subj1, pre, A to Subj1, post, A
subjects wise only, both segments together, e.g. Subj1, pre, A+B to Subj1, post, A+B
segment-wise, but all subjects, e.g. Subj1to10, pre, A to Subj1to10, post, B
all subjects, both segements: Subj1to10, pre, A+B to Subj1to10, post, A+B
note that segments A/B and pre and post measurements do not have equal sample size, the samples are not independent and they may not be normally distributed.
How to tell, if there is a statistical significant difference between pre and post test at each of the four levels, and a suitable post-hoc analysis to tell, how this difference might be directed (probably looking at the median?)
And of course i need to compensate for mutiple comparison due to the 4 levels and the 5 parameters is measured at the same time?
best regards
Jonasdear community,
i have the following problem: I want to test differences of specific repeated measures during a pre and a post test:
my datasets has 10 subjects, each subjects did 2 tasks (called pre and post). during each task, I did repeated measurements of 5 different parameters (each set of 5 parameters were taken at the same time) over time. In addition, each pre and post measurement can be divided into two segments A and B. Now, i want to analyze the differences between pre and post on four different levels: on each of the parameters
taking parameter, I want to compare
subject wise and segement wise, e.g. Subj1, pre, A to Subj1, post, A
subjects wise only, both segments together, e.g. Subj1, pre, A+B to Subj1, post, A+B
segment-wise, but all subjects, e.g. Subj1to10, pre, A to Subj1to10, post, B
all subjects, both segements: Subj1to10, pre, A+B to Subj1to10, post, A+B
note that segments A/B and pre and post measurements do not have equal sample size, the samples are not independent and they may not be normally distributed.
How to tell, if there is a statistical significant difference between pre and post test at each of the four levels, and a suitable post-hoc analysis to tell, how this difference might be directed (probably looking at the median?)
And of course i need to compensate for mutiple comparison due to the 4 levels and the 5 parameters is measured at the same time?
best regards
Jonas dear community,
i have the following problem: I want to test differences of specific repeated measures during a pre and a post test:
my datasets has 10 subjects, each subjects did 2 tasks (called pre and post). during each task, I did repeated measurements of 5 different parameters (each set of 5 parameters were taken at the same time) over time. In addition, each pre and post measurement can be divided into two segments A and B. Now, i want to analyze the differences between pre and post on four different levels: on each of the parameters
taking parameter, I want to compare
subject wise and segement wise, e.g. Subj1, pre, A to Subj1, post, A
subjects wise only, both segments together, e.g. Subj1, pre, A+B to Subj1, post, A+B
segment-wise, but all subjects, e.g. Subj1to10, pre, A to Subj1to10, post, B
all subjects, both segements: Subj1to10, pre, A+B to Subj1to10, post, A+B
note that segments A/B and pre and post measurements do not have equal sample size, the samples are not independent and they may not be normally distributed.
How to tell, if there is a statistical significant difference between pre and post test at each of the four levels, and a suitable post-hoc analysis to tell, how this difference might be directed (probably looking at the median?)
And of course i need to compensate for mutiple comparison due to the 4 levels and the 5 parameters is measured at the same time?
best regards
Jonas statistics, repeated measures, multiple comaprisons, mixed effects MATLAB Answers — New Questions
Unable to save files in MATLAB Online
I have been using MATLAB Online for six months because I had a chromebook. This week, I got a windows, so I installed MATLAB on it. All of a sudden, my MATLAB Online has started acting weirdly. It would let me log in and run files, but it would not let me save ANYTHING. If I edit an existing script, I can’t save changes. If I create a new script, I can’t run it (because I need to save it first). If I create an image using my existing codes, I cannot export it either (because that ‘saves’ the image as a png).
I don’t think that switching my computer has anything to do with this problem, but they happened around the same time. I have doubts in my mind that this could have something to do with using the same license on both places, but I find it highly unlikely.
Any help is greatly appreciated.I have been using MATLAB Online for six months because I had a chromebook. This week, I got a windows, so I installed MATLAB on it. All of a sudden, my MATLAB Online has started acting weirdly. It would let me log in and run files, but it would not let me save ANYTHING. If I edit an existing script, I can’t save changes. If I create a new script, I can’t run it (because I need to save it first). If I create an image using my existing codes, I cannot export it either (because that ‘saves’ the image as a png).
I don’t think that switching my computer has anything to do with this problem, but they happened around the same time. I have doubts in my mind that this could have something to do with using the same license on both places, but I find it highly unlikely.
Any help is greatly appreciated. I have been using MATLAB Online for six months because I had a chromebook. This week, I got a windows, so I installed MATLAB on it. All of a sudden, my MATLAB Online has started acting weirdly. It would let me log in and run files, but it would not let me save ANYTHING. If I edit an existing script, I can’t save changes. If I create a new script, I can’t run it (because I need to save it first). If I create an image using my existing codes, I cannot export it either (because that ‘saves’ the image as a png).
I don’t think that switching my computer has anything to do with this problem, but they happened around the same time. I have doubts in my mind that this could have something to do with using the same license on both places, but I find it highly unlikely.
Any help is greatly appreciated. matlab online, license, error, file, creating file, save, matlab_online, distance_learning MATLAB Answers — New Questions
How to integrate an implicit acceleration function to a fitting pair of graphs of velocity and displacement
Hello!
New to matlab, so sorry if the question appears a bit of dumb
Im currently trying to plot the displacement of a falling pellet which acceleration follows implicit function f = @(t,a) exp((4.33254*w)/(9.81-a) – t/0.1036881 – 0.418/(0.00032*v)) – ((0.013864*v*w)/((9.81-a)*(0.418+0.00032*v)) – (0.00032*v)/(0.418+0.00032*w))
Where v and w are parameters to be adjusted.
The goal here is to first calculate the integral of the function to obtain a velocity function where the initial velocity is equal to 0 when t=0 and then obtain the integral of the velocity function to calculate the displacememt, where x=h (yet another parameter) when t=0 as well
However I struggle to find the correct sets of tools for that
Any advice is appreciated!
The deceleration graph looks somewhat like this btwHello!
New to matlab, so sorry if the question appears a bit of dumb
Im currently trying to plot the displacement of a falling pellet which acceleration follows implicit function f = @(t,a) exp((4.33254*w)/(9.81-a) – t/0.1036881 – 0.418/(0.00032*v)) – ((0.013864*v*w)/((9.81-a)*(0.418+0.00032*v)) – (0.00032*v)/(0.418+0.00032*w))
Where v and w are parameters to be adjusted.
The goal here is to first calculate the integral of the function to obtain a velocity function where the initial velocity is equal to 0 when t=0 and then obtain the integral of the velocity function to calculate the displacememt, where x=h (yet another parameter) when t=0 as well
However I struggle to find the correct sets of tools for that
Any advice is appreciated!
The deceleration graph looks somewhat like this btw Hello!
New to matlab, so sorry if the question appears a bit of dumb
Im currently trying to plot the displacement of a falling pellet which acceleration follows implicit function f = @(t,a) exp((4.33254*w)/(9.81-a) – t/0.1036881 – 0.418/(0.00032*v)) – ((0.013864*v*w)/((9.81-a)*(0.418+0.00032*v)) – (0.00032*v)/(0.418+0.00032*w))
Where v and w are parameters to be adjusted.
The goal here is to first calculate the integral of the function to obtain a velocity function where the initial velocity is equal to 0 when t=0 and then obtain the integral of the velocity function to calculate the displacememt, where x=h (yet another parameter) when t=0 as well
However I struggle to find the correct sets of tools for that
Any advice is appreciated!
The deceleration graph looks somewhat like this btw graph, function MATLAB Answers — New Questions
Algebraic Loops with FMU
When connecting FMUs in co-simulation mode in a loop an algebraic loop errors occurs, which causes termination of simulation. Therefore, I assume Simulink identifies the FMU-blocks as direct feedthrough. In the FMI 3.0 specification it is stated, that there cannot be a direct feedthough in Co-Simulation, as the step-size has to be greater that 0. Why does Simulink handle FMUs in co-simulation mode as direct feedthrough (and not like integrator blocks instead)?
Unfortunately I could not find anything regarding how the C-API functions of the FMUs are called by the Simulink discrete fixed-step solver.When connecting FMUs in co-simulation mode in a loop an algebraic loop errors occurs, which causes termination of simulation. Therefore, I assume Simulink identifies the FMU-blocks as direct feedthrough. In the FMI 3.0 specification it is stated, that there cannot be a direct feedthough in Co-Simulation, as the step-size has to be greater that 0. Why does Simulink handle FMUs in co-simulation mode as direct feedthrough (and not like integrator blocks instead)?
Unfortunately I could not find anything regarding how the C-API functions of the FMUs are called by the Simulink discrete fixed-step solver. When connecting FMUs in co-simulation mode in a loop an algebraic loop errors occurs, which causes termination of simulation. Therefore, I assume Simulink identifies the FMU-blocks as direct feedthrough. In the FMI 3.0 specification it is stated, that there cannot be a direct feedthough in Co-Simulation, as the step-size has to be greater that 0. Why does Simulink handle FMUs in co-simulation mode as direct feedthrough (and not like integrator blocks instead)?
Unfortunately I could not find anything regarding how the C-API functions of the FMUs are called by the Simulink discrete fixed-step solver. fmu, fmi, algebraic loops, discrete fixed-step solver, fmu-block MATLAB Answers — New Questions
Error using confusionchart (line 68) Order must be an exact permutation of the class labels.
Please help with this error – what could be the cause?
Error using confusionchart (line 68)
Order must be an exact permutation of the class labels.Please help with this error – what could be the cause?
Error using confusionchart (line 68)
Order must be an exact permutation of the class labels. Please help with this error – what could be the cause?
Error using confusionchart (line 68)
Order must be an exact permutation of the class labels. confusionchart MATLAB Answers — New Questions
TD3 agent fails to explore again after hitting the max action and gets stuck at the max action value. Additionally, the Q0 value exploded to large value.
The range of the a single action = 0.01 to 5. During learning using TD3, the learning is consist. However, if the agent applies the maximum values, it get stuck fails to explores lower values and suddenly does not improve or deteriorate further. I am not sure what could be the reason. The Q0 value explodes at this point. at this point.The range of the a single action = 0.01 to 5. During learning using TD3, the learning is consist. However, if the agent applies the maximum values, it get stuck fails to explores lower values and suddenly does not improve or deteriorate further. I am not sure what could be the reason. The Q0 value explodes at this point. at this point. The range of the a single action = 0.01 to 5. During learning using TD3, the learning is consist. However, if the agent applies the maximum values, it get stuck fails to explores lower values and suddenly does not improve or deteriorate further. I am not sure what could be the reason. The Q0 value explodes at this point. at this point. reinforcement learning, stuck learning, td3 MATLAB Answers — New Questions
errors with Simscape and SSC HDL Coder Workflow Advisor
hello, I’m having some really frustrating problems with Simscape and sschdladvisor.
there is going to be a lot of context up ahead, but I assure you it isn’t very dense at all.
—
initially, I tried following this document to generate HDL code, where they load the Full Wave Bridge Rectifier example. after following along and executing the workflow advisor tool, though, I’m met with the following warning at the very end (I renamed the simulink file to "fwbr"):
Warning
Run hdlsetup on the model ‘fwbr’ to modify configuration parameter values recommended for HDL code generation and rerun the workflow. Generated implementation model ‘gmStateSpaceHDL_fwbr’ with the ‘HDL settings’. The HDL Algorithm requires latency. Each output port experiences 1 additional delay.
but this is essentially an error, because it does not in fact generate the "gmStateSpaceHDL_fwbr" model. when I try opening it, I get the following error:
‘C:UsersCrisDocumentsMATLABssc_bcsschdlfwbrgmStateSpaceHDL_fwbr’ is not a valid Simulink object name and there is no file with that name.
there’s absolutely no configuration in the model nor in the Workflow Advisor I can use to make this warning go away.
I then run into the command sschdl.generateOptimizedModel, which was introduced in the R2024a version of MATLAB, which can replace all the Simscape components that might cause issues for HDL code generation into their dynamic block equivalent. after this and after making sure the generated optimized model is behaviourally identical, I can finally execute the Workflow Advisor with no problems.
—
after that, I try following along a different example, the Halfwave Rectifier model. this one executes flawlessly right off the bat and I get a dynamic system equivalent model out of the Workflow Advisor, for which I can then generate VHDL code with 0 issues.
—
I then try to make my own simscape system, a simple buck converter:
but I run into exactly the same issue as I did with the full wave bridge rectifier where it would throw that "warning" that wouldn’t let me actually generate the HDL coder adapted model. I then find this document with a buck converter model example, which executes flawlessly. this part in particular puzzles me, because in an attempt to find the problem with my own implementation I start moving parameters around both in the system and in the model settings themselves. eventually, I end up straight up copy-pasting the entire system into my own .slx file, and configure every single setting to be exactly the same as the example’s, and it still won’t let me generate the model by showing me that warning from before.
I tried applying the generateOptimizedModel command, but to my dismay it completely changed the behaviour of my circuit, and I could pinpoint that the one block causing the change in behaviour was the ideal switch’s replacement. this actually happens in every circuit where I use the generateOptimizedModel command and there are any switches. the command works, and it lets me generate the HDL Coder-adapted system with no warnings, but I cannot use it if my system now behaves differently.
—
phew, that should be all.
this is genuinely extremely confusing to me, from the fact that some default examples work right out of the box and some don’t, to the fact that two systems that are exactly the same in quite literally everything except the fact they’re different files don’t produce the same result when running them through sschdladvisor. for anyone who might have the slightest idea to what’s going on, I would be eternally grateful if you could tell me what the problem can be. the only thing I can think of is that something might have broken in some update since 2022.hello, I’m having some really frustrating problems with Simscape and sschdladvisor.
there is going to be a lot of context up ahead, but I assure you it isn’t very dense at all.
—
initially, I tried following this document to generate HDL code, where they load the Full Wave Bridge Rectifier example. after following along and executing the workflow advisor tool, though, I’m met with the following warning at the very end (I renamed the simulink file to "fwbr"):
Warning
Run hdlsetup on the model ‘fwbr’ to modify configuration parameter values recommended for HDL code generation and rerun the workflow. Generated implementation model ‘gmStateSpaceHDL_fwbr’ with the ‘HDL settings’. The HDL Algorithm requires latency. Each output port experiences 1 additional delay.
but this is essentially an error, because it does not in fact generate the "gmStateSpaceHDL_fwbr" model. when I try opening it, I get the following error:
‘C:UsersCrisDocumentsMATLABssc_bcsschdlfwbrgmStateSpaceHDL_fwbr’ is not a valid Simulink object name and there is no file with that name.
there’s absolutely no configuration in the model nor in the Workflow Advisor I can use to make this warning go away.
I then run into the command sschdl.generateOptimizedModel, which was introduced in the R2024a version of MATLAB, which can replace all the Simscape components that might cause issues for HDL code generation into their dynamic block equivalent. after this and after making sure the generated optimized model is behaviourally identical, I can finally execute the Workflow Advisor with no problems.
—
after that, I try following along a different example, the Halfwave Rectifier model. this one executes flawlessly right off the bat and I get a dynamic system equivalent model out of the Workflow Advisor, for which I can then generate VHDL code with 0 issues.
—
I then try to make my own simscape system, a simple buck converter:
but I run into exactly the same issue as I did with the full wave bridge rectifier where it would throw that "warning" that wouldn’t let me actually generate the HDL coder adapted model. I then find this document with a buck converter model example, which executes flawlessly. this part in particular puzzles me, because in an attempt to find the problem with my own implementation I start moving parameters around both in the system and in the model settings themselves. eventually, I end up straight up copy-pasting the entire system into my own .slx file, and configure every single setting to be exactly the same as the example’s, and it still won’t let me generate the model by showing me that warning from before.
I tried applying the generateOptimizedModel command, but to my dismay it completely changed the behaviour of my circuit, and I could pinpoint that the one block causing the change in behaviour was the ideal switch’s replacement. this actually happens in every circuit where I use the generateOptimizedModel command and there are any switches. the command works, and it lets me generate the HDL Coder-adapted system with no warnings, but I cannot use it if my system now behaves differently.
—
phew, that should be all.
this is genuinely extremely confusing to me, from the fact that some default examples work right out of the box and some don’t, to the fact that two systems that are exactly the same in quite literally everything except the fact they’re different files don’t produce the same result when running them through sschdladvisor. for anyone who might have the slightest idea to what’s going on, I would be eternally grateful if you could tell me what the problem can be. the only thing I can think of is that something might have broken in some update since 2022. hello, I’m having some really frustrating problems with Simscape and sschdladvisor.
there is going to be a lot of context up ahead, but I assure you it isn’t very dense at all.
—
initially, I tried following this document to generate HDL code, where they load the Full Wave Bridge Rectifier example. after following along and executing the workflow advisor tool, though, I’m met with the following warning at the very end (I renamed the simulink file to "fwbr"):
Warning
Run hdlsetup on the model ‘fwbr’ to modify configuration parameter values recommended for HDL code generation and rerun the workflow. Generated implementation model ‘gmStateSpaceHDL_fwbr’ with the ‘HDL settings’. The HDL Algorithm requires latency. Each output port experiences 1 additional delay.
but this is essentially an error, because it does not in fact generate the "gmStateSpaceHDL_fwbr" model. when I try opening it, I get the following error:
‘C:UsersCrisDocumentsMATLABssc_bcsschdlfwbrgmStateSpaceHDL_fwbr’ is not a valid Simulink object name and there is no file with that name.
there’s absolutely no configuration in the model nor in the Workflow Advisor I can use to make this warning go away.
I then run into the command sschdl.generateOptimizedModel, which was introduced in the R2024a version of MATLAB, which can replace all the Simscape components that might cause issues for HDL code generation into their dynamic block equivalent. after this and after making sure the generated optimized model is behaviourally identical, I can finally execute the Workflow Advisor with no problems.
—
after that, I try following along a different example, the Halfwave Rectifier model. this one executes flawlessly right off the bat and I get a dynamic system equivalent model out of the Workflow Advisor, for which I can then generate VHDL code with 0 issues.
—
I then try to make my own simscape system, a simple buck converter:
but I run into exactly the same issue as I did with the full wave bridge rectifier where it would throw that "warning" that wouldn’t let me actually generate the HDL coder adapted model. I then find this document with a buck converter model example, which executes flawlessly. this part in particular puzzles me, because in an attempt to find the problem with my own implementation I start moving parameters around both in the system and in the model settings themselves. eventually, I end up straight up copy-pasting the entire system into my own .slx file, and configure every single setting to be exactly the same as the example’s, and it still won’t let me generate the model by showing me that warning from before.
I tried applying the generateOptimizedModel command, but to my dismay it completely changed the behaviour of my circuit, and I could pinpoint that the one block causing the change in behaviour was the ideal switch’s replacement. this actually happens in every circuit where I use the generateOptimizedModel command and there are any switches. the command works, and it lets me generate the HDL Coder-adapted system with no warnings, but I cannot use it if my system now behaves differently.
—
phew, that should be all.
this is genuinely extremely confusing to me, from the fact that some default examples work right out of the box and some don’t, to the fact that two systems that are exactly the same in quite literally everything except the fact they’re different files don’t produce the same result when running them through sschdladvisor. for anyone who might have the slightest idea to what’s going on, I would be eternally grateful if you could tell me what the problem can be. the only thing I can think of is that something might have broken in some update since 2022. fpga, simscape, hdl coder, sschdl MATLAB Answers — New Questions
can’t find Init button by double click the Init subsystem inside the Rx block
when I try to follow the example "Globally Adapt Receiver Components Using Pulse Response Metrics to Improve SerDes Performance"when I try to follow the example "Globally Adapt Receiver Components Using Pulse Response Metrics to Improve SerDes Performance" when I try to follow the example "Globally Adapt Receiver Components Using Pulse Response Metrics to Improve SerDes Performance" serdesdesigner, equalization, serdes MATLAB Answers — New Questions
The follow code was create to calculate the time to increase the temperature, but when I run it the result is infinite. Anyone can help me?
Below are the tow functions used to calculate the time to increase the temp. according to the inputs: L1, L2, L3 and heat+power. The initial values were: 0.05m; 0.1 m; 0.05m and 500W respectively. But with any other values the result returns the same: inifinite seconds! I need the results in terms of plotting.
function time_to_increase_temperature = calculate_time_to_increase_temperature( …
rho_concrete, rho_air, k_concrete, k_air, ~, cp_concrete, …
cp_air, T_initial, T_surface, L1, L2, L3, volume_P1_P3, ~, …
Nx, Nt, delta_T, heat_power)
% Calculate total thickness
total_thickness = L1 + L2 + L3;
% Thermal diffusivities
alpha_concrete = k_concrete / (rho_concrete * cp_concrete); % m²/s
alpha_air = k_air / (rho_air * cp_air); % m²/s
% Discretization parameters
dx = total_thickness / Nx; % Spatial step size
dt = 6 / Nt; % Time step size
% Preallocate temperature arrays
T = T_initial * ones(Nx, 1);
T_new = T;
% Define material properties at each point
len_P1 = round(Nx * L1 / total_thickness); % Length of concrete layer P1
len_P2 = round(Nx * L2 / total_thickness); % Length of air layer P2
len_P3 = Nx – len_P1 – len_P2; % Length of concrete layer P3
% Ensure len_P3 is correctly adjusted if rounding caused any issues
if len_P1 + len_P2 + len_P3 ~= Nx
len_P3 = Nx – len_P1 – len_P2;
end
% Preallocate material array
material = zeros(Nx, 1);
material(1:len_P1) = alpha_concrete;
material(len_P1+1:len_P1+len_P2) = alpha_air;
material(len_P1+len_P2+1:Nx) = alpha_concrete;
time_to_increase_temperature = inf; % Initialize to store time to increase temperature
% Calculate heat input per spatial point
heat_input_per_point = heat_power * dt / (rho_concrete * cp_concrete * volume_P1_P3 / Nx);
% Time integration using Finite Difference Method (FDM)
time = 0; % Initialize time
for n = 1:Nt
for i = 2:Nx-1
T_new(i) = T(i) + material(i) * dt / dx^2 * (T(i+1) – 2*T(i) + T(i-1));
end
% Boundary conditions
T_new(1) = T(1) + alpha_concrete * dt / dx^2 * (T(2) – T(1)) + heat_input_per_point * (T_surface – T(1));
T_new(Nx) = T(Nx-1);
% Update temperature
T = T_new;
time = time + dt;
% Check if the temperature at the right side of P3 reaches T_initial + delta_T
if T(Nx) >= T_initial + delta_T
time_to_increase_temperature = time;
break;
end
end
% Return the time to increase temperature by 1 K at the right side of P3
end
Function main_process:
function main_process()
% Parameters with fixed values
rho_concrete = 2500; % kg/m³
rho_air = 1293; % kg/m³
k_concrete = 1.35; % W/(m·K)
k_air = 0.024; % W/(m·K) assuming typical value for air
cp_concrete = 0.92 * 1000; % J/(kg·K)
cp_air = 1.005 * 1000; % J/(kg·K)
T_initial = 300; % Initial temperature in K
T_surface = 411; % Surface temperature in K
volume_P1_P3 = 0.00488; % Volume of each concrete plate in m³
Nx = 100; % Number of spatial points
Nt = 1000; % Number of time steps
delta_T = 1; % Temperature increase in K
% Prompt the user for specific input parameters
L1 = input(‘Enter the thickness of the first concrete layer (m): ‘);
L2 = input(‘Enter the thickness of the air layer (m): ‘);
L3 = input(‘Enter the thickness of the second concrete layer (m): ‘);
heat_power = input(‘Enter the heat power (W): ‘);
% Call the function
time_to_increase_temperature = calculate_time_to_increase_temperature( …
rho_concrete, rho_air, k_concrete, k_air, [], cp_concrete, …
cp_air, T_initial, T_surface, L1, L2, L3, volume_P1_P3, [], …
Nx, Nt, delta_T, heat_power);
% Display the result
fprintf(‘Time to increase temperature by 1 K at the right side of P3: %.2f secondsn’, time_to_increase_temperature);
% Plot the result
total_thickness = L1 + L2 + L3;
x = linspace(0, total_thickness, Nx); % Spatial points
y = linspace(0, time_to_increase_temperature, Nx); % Temporal points for plotting
plot(x, y, ‘DisplayName’, ‘Time to Increase Temperature by 1 K’);
xlabel(‘Position (m)’);
ylabel(‘Time (s)’);
legend(‘show’);
title(‘Time to Increase Temperature by 1 K at the right side of P3’);
endBelow are the tow functions used to calculate the time to increase the temp. according to the inputs: L1, L2, L3 and heat+power. The initial values were: 0.05m; 0.1 m; 0.05m and 500W respectively. But with any other values the result returns the same: inifinite seconds! I need the results in terms of plotting.
function time_to_increase_temperature = calculate_time_to_increase_temperature( …
rho_concrete, rho_air, k_concrete, k_air, ~, cp_concrete, …
cp_air, T_initial, T_surface, L1, L2, L3, volume_P1_P3, ~, …
Nx, Nt, delta_T, heat_power)
% Calculate total thickness
total_thickness = L1 + L2 + L3;
% Thermal diffusivities
alpha_concrete = k_concrete / (rho_concrete * cp_concrete); % m²/s
alpha_air = k_air / (rho_air * cp_air); % m²/s
% Discretization parameters
dx = total_thickness / Nx; % Spatial step size
dt = 6 / Nt; % Time step size
% Preallocate temperature arrays
T = T_initial * ones(Nx, 1);
T_new = T;
% Define material properties at each point
len_P1 = round(Nx * L1 / total_thickness); % Length of concrete layer P1
len_P2 = round(Nx * L2 / total_thickness); % Length of air layer P2
len_P3 = Nx – len_P1 – len_P2; % Length of concrete layer P3
% Ensure len_P3 is correctly adjusted if rounding caused any issues
if len_P1 + len_P2 + len_P3 ~= Nx
len_P3 = Nx – len_P1 – len_P2;
end
% Preallocate material array
material = zeros(Nx, 1);
material(1:len_P1) = alpha_concrete;
material(len_P1+1:len_P1+len_P2) = alpha_air;
material(len_P1+len_P2+1:Nx) = alpha_concrete;
time_to_increase_temperature = inf; % Initialize to store time to increase temperature
% Calculate heat input per spatial point
heat_input_per_point = heat_power * dt / (rho_concrete * cp_concrete * volume_P1_P3 / Nx);
% Time integration using Finite Difference Method (FDM)
time = 0; % Initialize time
for n = 1:Nt
for i = 2:Nx-1
T_new(i) = T(i) + material(i) * dt / dx^2 * (T(i+1) – 2*T(i) + T(i-1));
end
% Boundary conditions
T_new(1) = T(1) + alpha_concrete * dt / dx^2 * (T(2) – T(1)) + heat_input_per_point * (T_surface – T(1));
T_new(Nx) = T(Nx-1);
% Update temperature
T = T_new;
time = time + dt;
% Check if the temperature at the right side of P3 reaches T_initial + delta_T
if T(Nx) >= T_initial + delta_T
time_to_increase_temperature = time;
break;
end
end
% Return the time to increase temperature by 1 K at the right side of P3
end
Function main_process:
function main_process()
% Parameters with fixed values
rho_concrete = 2500; % kg/m³
rho_air = 1293; % kg/m³
k_concrete = 1.35; % W/(m·K)
k_air = 0.024; % W/(m·K) assuming typical value for air
cp_concrete = 0.92 * 1000; % J/(kg·K)
cp_air = 1.005 * 1000; % J/(kg·K)
T_initial = 300; % Initial temperature in K
T_surface = 411; % Surface temperature in K
volume_P1_P3 = 0.00488; % Volume of each concrete plate in m³
Nx = 100; % Number of spatial points
Nt = 1000; % Number of time steps
delta_T = 1; % Temperature increase in K
% Prompt the user for specific input parameters
L1 = input(‘Enter the thickness of the first concrete layer (m): ‘);
L2 = input(‘Enter the thickness of the air layer (m): ‘);
L3 = input(‘Enter the thickness of the second concrete layer (m): ‘);
heat_power = input(‘Enter the heat power (W): ‘);
% Call the function
time_to_increase_temperature = calculate_time_to_increase_temperature( …
rho_concrete, rho_air, k_concrete, k_air, [], cp_concrete, …
cp_air, T_initial, T_surface, L1, L2, L3, volume_P1_P3, [], …
Nx, Nt, delta_T, heat_power);
% Display the result
fprintf(‘Time to increase temperature by 1 K at the right side of P3: %.2f secondsn’, time_to_increase_temperature);
% Plot the result
total_thickness = L1 + L2 + L3;
x = linspace(0, total_thickness, Nx); % Spatial points
y = linspace(0, time_to_increase_temperature, Nx); % Temporal points for plotting
plot(x, y, ‘DisplayName’, ‘Time to Increase Temperature by 1 K’);
xlabel(‘Position (m)’);
ylabel(‘Time (s)’);
legend(‘show’);
title(‘Time to Increase Temperature by 1 K at the right side of P3’);
end Below are the tow functions used to calculate the time to increase the temp. according to the inputs: L1, L2, L3 and heat+power. The initial values were: 0.05m; 0.1 m; 0.05m and 500W respectively. But with any other values the result returns the same: inifinite seconds! I need the results in terms of plotting.
function time_to_increase_temperature = calculate_time_to_increase_temperature( …
rho_concrete, rho_air, k_concrete, k_air, ~, cp_concrete, …
cp_air, T_initial, T_surface, L1, L2, L3, volume_P1_P3, ~, …
Nx, Nt, delta_T, heat_power)
% Calculate total thickness
total_thickness = L1 + L2 + L3;
% Thermal diffusivities
alpha_concrete = k_concrete / (rho_concrete * cp_concrete); % m²/s
alpha_air = k_air / (rho_air * cp_air); % m²/s
% Discretization parameters
dx = total_thickness / Nx; % Spatial step size
dt = 6 / Nt; % Time step size
% Preallocate temperature arrays
T = T_initial * ones(Nx, 1);
T_new = T;
% Define material properties at each point
len_P1 = round(Nx * L1 / total_thickness); % Length of concrete layer P1
len_P2 = round(Nx * L2 / total_thickness); % Length of air layer P2
len_P3 = Nx – len_P1 – len_P2; % Length of concrete layer P3
% Ensure len_P3 is correctly adjusted if rounding caused any issues
if len_P1 + len_P2 + len_P3 ~= Nx
len_P3 = Nx – len_P1 – len_P2;
end
% Preallocate material array
material = zeros(Nx, 1);
material(1:len_P1) = alpha_concrete;
material(len_P1+1:len_P1+len_P2) = alpha_air;
material(len_P1+len_P2+1:Nx) = alpha_concrete;
time_to_increase_temperature = inf; % Initialize to store time to increase temperature
% Calculate heat input per spatial point
heat_input_per_point = heat_power * dt / (rho_concrete * cp_concrete * volume_P1_P3 / Nx);
% Time integration using Finite Difference Method (FDM)
time = 0; % Initialize time
for n = 1:Nt
for i = 2:Nx-1
T_new(i) = T(i) + material(i) * dt / dx^2 * (T(i+1) – 2*T(i) + T(i-1));
end
% Boundary conditions
T_new(1) = T(1) + alpha_concrete * dt / dx^2 * (T(2) – T(1)) + heat_input_per_point * (T_surface – T(1));
T_new(Nx) = T(Nx-1);
% Update temperature
T = T_new;
time = time + dt;
% Check if the temperature at the right side of P3 reaches T_initial + delta_T
if T(Nx) >= T_initial + delta_T
time_to_increase_temperature = time;
break;
end
end
% Return the time to increase temperature by 1 K at the right side of P3
end
Function main_process:
function main_process()
% Parameters with fixed values
rho_concrete = 2500; % kg/m³
rho_air = 1293; % kg/m³
k_concrete = 1.35; % W/(m·K)
k_air = 0.024; % W/(m·K) assuming typical value for air
cp_concrete = 0.92 * 1000; % J/(kg·K)
cp_air = 1.005 * 1000; % J/(kg·K)
T_initial = 300; % Initial temperature in K
T_surface = 411; % Surface temperature in K
volume_P1_P3 = 0.00488; % Volume of each concrete plate in m³
Nx = 100; % Number of spatial points
Nt = 1000; % Number of time steps
delta_T = 1; % Temperature increase in K
% Prompt the user for specific input parameters
L1 = input(‘Enter the thickness of the first concrete layer (m): ‘);
L2 = input(‘Enter the thickness of the air layer (m): ‘);
L3 = input(‘Enter the thickness of the second concrete layer (m): ‘);
heat_power = input(‘Enter the heat power (W): ‘);
% Call the function
time_to_increase_temperature = calculate_time_to_increase_temperature( …
rho_concrete, rho_air, k_concrete, k_air, [], cp_concrete, …
cp_air, T_initial, T_surface, L1, L2, L3, volume_P1_P3, [], …
Nx, Nt, delta_T, heat_power);
% Display the result
fprintf(‘Time to increase temperature by 1 K at the right side of P3: %.2f secondsn’, time_to_increase_temperature);
% Plot the result
total_thickness = L1 + L2 + L3;
x = linspace(0, total_thickness, Nx); % Spatial points
y = linspace(0, time_to_increase_temperature, Nx); % Temporal points for plotting
plot(x, y, ‘DisplayName’, ‘Time to Increase Temperature by 1 K’);
xlabel(‘Position (m)’);
ylabel(‘Time (s)’);
legend(‘show’);
title(‘Time to Increase Temperature by 1 K at the right side of P3’);
end solving issue, unknown error, break linkage MATLAB Answers — New Questions