Tag Archives: matlab
how to solve XCP connection error
when I enter connect(xcpch), an error "Device not detected." is appearing.
Does anyone know rootcause and how to solve it?
thank you in advance,when I enter connect(xcpch), an error "Device not detected." is appearing.
Does anyone know rootcause and how to solve it?
thank you in advance, when I enter connect(xcpch), an error "Device not detected." is appearing.
Does anyone know rootcause and how to solve it?
thank you in advance, xcp, matlab, simulink MATLAB Answers — New Questions
How I Can Find The HumanActivityData data set contains over 380000 observations of five different physical human activities? from Brian Hu
Load Raw Sensor Data
The HumanActivityData data set contains over 380000 observations of five different physical human activities captured at a frequency of 10 Hz. Each observation includes x, y, and z acceleration data measured by a smartphone accelerometer sensor.Load Raw Sensor Data
The HumanActivityData data set contains over 380000 observations of five different physical human activities captured at a frequency of 10 Hz. Each observation includes x, y, and z acceleration data measured by a smartphone accelerometer sensor. Load Raw Sensor Data
The HumanActivityData data set contains over 380000 observations of five different physical human activities captured at a frequency of 10 Hz. Each observation includes x, y, and z acceleration data measured by a smartphone accelerometer sensor. the humanactivitydata MATLAB Answers — New Questions
Where to find the generated simscape code
Hi does anyone know where to find the generated simscape code? I simply built a dummy model down below and then used simulink coder to generate the c code. I already know that the Simulink Coder software generates code from the Simscape blocks separately from the Simulink blocks in my model, but where does this file store? and which file contains the c code of the simcape blocks?Hi does anyone know where to find the generated simscape code? I simply built a dummy model down below and then used simulink coder to generate the c code. I already know that the Simulink Coder software generates code from the Simscape blocks separately from the Simulink blocks in my model, but where does this file store? and which file contains the c code of the simcape blocks? Hi does anyone know where to find the generated simscape code? I simply built a dummy model down below and then used simulink coder to generate the c code. I already know that the Simulink Coder software generates code from the Simscape blocks separately from the Simulink blocks in my model, but where does this file store? and which file contains the c code of the simcape blocks? simscape, code generation MATLAB Answers — New Questions
Automatically select the right number of bins (or combine the bins) for the expected frequencies in crosstab, in order to guarantee at least 5 elements per bin
I have two observed datasets, "x" and "y", that I want to compare the observed frequencies in bins of "x" and "y" against the other, through crosstab. To do so, I first need to place the elements of "x" and "y" into bins, by using the histcounts function. The resulting binned arrays, "cx" and "cy", are then compared to each other with a chi-square test, perfomed by crosstab. The chi-square test of independence is performed to determine if there is a significant association between the frequencies of "x" and "y" across the bins.
However, the chi-square test "is not valid for small samples, and if some of the counts (in the expected frequency) are less than five, you may need to combine some bins in the tails.". In the following example, several bins of the observed frequencies "cx" and "cy" have zero elements, and I do not know if they affect the expected frequencies calculated within/by crosstab.
Therefore, is there a way in crosstab to automatically select the right number of bins for the expected frequencies, or to combine them if some are empty, in order to guarantee at least 5 elements per bin?
rng default; % for reproducibility
a = 0;
b = 100;
nb = 50;
% Create two log-normal distributed random datasets, "x" and "y’
% (but we can use any randomly distributed data)
x = (b-a).*round(lognrnd(1,1,1000,1)) + a;
y = (b-a).*round(lognrnd(0.88,1.1,1000,1)) + a;
% Counts/frequency of "x" and "y"
cx = histcounts(x,’NumBins’,nb);
cy = histcounts(y,’NumBins’,nb);
[~,chi2,p] = crosstab(cx,cy)I have two observed datasets, "x" and "y", that I want to compare the observed frequencies in bins of "x" and "y" against the other, through crosstab. To do so, I first need to place the elements of "x" and "y" into bins, by using the histcounts function. The resulting binned arrays, "cx" and "cy", are then compared to each other with a chi-square test, perfomed by crosstab. The chi-square test of independence is performed to determine if there is a significant association between the frequencies of "x" and "y" across the bins.
However, the chi-square test "is not valid for small samples, and if some of the counts (in the expected frequency) are less than five, you may need to combine some bins in the tails.". In the following example, several bins of the observed frequencies "cx" and "cy" have zero elements, and I do not know if they affect the expected frequencies calculated within/by crosstab.
Therefore, is there a way in crosstab to automatically select the right number of bins for the expected frequencies, or to combine them if some are empty, in order to guarantee at least 5 elements per bin?
rng default; % for reproducibility
a = 0;
b = 100;
nb = 50;
% Create two log-normal distributed random datasets, "x" and "y’
% (but we can use any randomly distributed data)
x = (b-a).*round(lognrnd(1,1,1000,1)) + a;
y = (b-a).*round(lognrnd(0.88,1.1,1000,1)) + a;
% Counts/frequency of "x" and "y"
cx = histcounts(x,’NumBins’,nb);
cy = histcounts(y,’NumBins’,nb);
[~,chi2,p] = crosstab(cx,cy) I have two observed datasets, "x" and "y", that I want to compare the observed frequencies in bins of "x" and "y" against the other, through crosstab. To do so, I first need to place the elements of "x" and "y" into bins, by using the histcounts function. The resulting binned arrays, "cx" and "cy", are then compared to each other with a chi-square test, perfomed by crosstab. The chi-square test of independence is performed to determine if there is a significant association between the frequencies of "x" and "y" across the bins.
However, the chi-square test "is not valid for small samples, and if some of the counts (in the expected frequency) are less than five, you may need to combine some bins in the tails.". In the following example, several bins of the observed frequencies "cx" and "cy" have zero elements, and I do not know if they affect the expected frequencies calculated within/by crosstab.
Therefore, is there a way in crosstab to automatically select the right number of bins for the expected frequencies, or to combine them if some are empty, in order to guarantee at least 5 elements per bin?
rng default; % for reproducibility
a = 0;
b = 100;
nb = 50;
% Create two log-normal distributed random datasets, "x" and "y’
% (but we can use any randomly distributed data)
x = (b-a).*round(lognrnd(1,1,1000,1)) + a;
y = (b-a).*round(lognrnd(0.88,1.1,1000,1)) + a;
% Counts/frequency of "x" and "y"
cx = histcounts(x,’NumBins’,nb);
cy = histcounts(y,’NumBins’,nb);
[~,chi2,p] = crosstab(cx,cy) crosstab, binning, binned, array, histcounts MATLAB Answers — New Questions
rtwbuild doesn’t generate modelsources.txt in MATLAB 2023
I have used rtwbuild in MATLAB 2020a and it generated modelsources.txt.
MATLAB 2023a doesn’t generate this file. Please help me to solve it.I have used rtwbuild in MATLAB 2020a and it generated modelsources.txt.
MATLAB 2023a doesn’t generate this file. Please help me to solve it. I have used rtwbuild in MATLAB 2020a and it generated modelsources.txt.
MATLAB 2023a doesn’t generate this file. Please help me to solve it. 2023a, simulink MATLAB Answers — New Questions
RMS Analysis on BIN File in Simulink
I am trying to import a BIN file into Simulink and analyze it for RMS. I currently have the sine wave, RMS, and scope blocks, and I can generate a sample sine wave, but I have no way of importing my BIN files. They are large, and I attempted using the Binary File Reader block, and while it started creating a sine wave, it was taking too long to run. How do I make this process more efficient?I am trying to import a BIN file into Simulink and analyze it for RMS. I currently have the sine wave, RMS, and scope blocks, and I can generate a sample sine wave, but I have no way of importing my BIN files. They are large, and I attempted using the Binary File Reader block, and while it started creating a sine wave, it was taking too long to run. How do I make this process more efficient? I am trying to import a BIN file into Simulink and analyze it for RMS. I currently have the sine wave, RMS, and scope blocks, and I can generate a sample sine wave, but I have no way of importing my BIN files. They are large, and I attempted using the Binary File Reader block, and while it started creating a sine wave, it was taking too long to run. How do I make this process more efficient? simulink, binary, statistics MATLAB Answers — New Questions
How to update a function with output from another function?
I am trying to solve for heat transfer coefficients so that I can use them to calculate gas and tank wall temperatures. Currently, I am using constant heat transfer coefficients to enable the calculation of the desired temperatures with ode45.
% Convective heat transfer coefficients
h_in = 25; % Convective heat transfer coefficient inside the tank (W/(m^2·K))
h_out = 6; % Convective heat transfer coefficient outside the tank (W/(m^2·K))
% Solve the coupled ODEs and PDE
[t, y] = ode45(@(t, y) odes(t, y, R, C_p_gas, k_liner, k_CFRP, rho_liner, rho_CFRP, C_p_liner, C_p_CFRP, h_in, h_out, T_ambient, A_in, A_out, dx_liner, dx_CFRP, N_liner, N_CFRP, V, mdot_out), tspan, initial_conditions);
% Extract time histories for inside and outside wall temperatures
T_wall_liner_interface = y(:,3); % Inside wall temperature (first point of the liner)
T_wall_CFRP_interface = y(:,end); % Outside wall temperature (last point of the CFRP layer)
What I would like to do is to use the output temperatures from the ode45 to solve for h_in and h_out, which will in turn be used by ode45 to solve for new temperatures. The h_in and h_out calculations look like this:
function [h_in, h_out]=heat_transfer_coefficients
Di = 0.230; % Internal diameter in meters
Do = 0.279; % External diameter in meters
T_gf = 266.17; %(K) – Type III hydrogen gas T at film temp
rho_gf = 39.16; %(kg/m^3) – Type III hydrogen gas density @ T_gf
Cp_gf = 0.01514*((T_gf/100)^4.789)+1002;
mu_gf = (-4.127*10^-7)*((T_gf/100)^2)+((7.258*10^-6)*(T_gf/100))+(4.094*10^-7);
lambda_gf = ((-3.77*10^-4)*(T_gf/100)^2)+((1.004*10^-2)*(T_gf/100))-(4.776*10^-4);
beta_gf = 1/T_gf; %volumetric thermal expansion coefficient
g = 9.81; %gravitational acceleration (m/s^2)
Rai = (rho_gf^2*(Di^3)*beta_gf*g*(T_wall_liner_interface-T_gas)*Cp_gf)/(mu_gf*lambda_gf); %Rayleigh number at inner wall
if Rai < 10^8
Nu_i = 1.15*Rai.^0.22;
else
Nu_i = 0.14*Rai.^0.333;
end
ki = 168.9e3; %thermal conductivity inside tank at T_g, Type III (W/m*K)
h_in = (Nu_i*ki)/Di;
T_ambf = 279.43; %(K) – Type III
rho_ambf = 1.263; %(kg/m^3) – density @ T_ambf
c_wind = 0; %(m/s) – cross wind velocity
Cp_ambf = 0.01514*((T_ambf/100)^4.789)+1002;
mu_ambf = (-4.127*10^-7)*((T_ambf/100)^2)+((7.258*10^-6)*(T_ambf/100))+(4.094*10^-7);
lambda_ambf = ((-3.77*10^-4)*(T_ambf/100)^2)+((1.004*10^-2)*(T_ambf/100))-(4.776*10^-4);
beta_ambf = 1/T_ambf; %volumetric thermal expansion coefficient
Re_Do = (rho_ambf*c_wind*Do)/(mu_ambf);
Pr_ambf = (mu_ambf*Cp_ambf)/lambda_ambf;
if Re_Do == 0
Nu_cylforced = 0;
Nu_sphforced = 0;
else
Nu_cylforced = 0.3+((0.62*(Re_Do^0.5)*(Pr_ambf^(1/3)))/(1+(0.4/((Pr_ambf))^(2/3)))^(1/4))…
*(1+(Re_Do/282000)^5/8)^4/5;
Nu_sphforced = 2 + ((Re_Do/4)+((3*10^-4)*Re_Do^1.6))^0.5;
end
Rao = (rho_ambf^2*(Do^3)*beta_ambf*g*(T_amb-T_wall_CFRP_interface)*Cp_ambf)/(mu_ambf*lambda_ambf); %Rayleigh number at inner wall
Nu_oforced = ((Nu_cylforced*0.72)+(Nu_sphforced*0.24))/(0.72+0.24);
Nu_ofree = (0.6+((0.387*(Rao.^(1/6)))/(1+(0.559/Pr_ambf)^(9/16)).^(8/27))).^2;
Nu_o = ((Nu_ofree.^4)+(Nu_oforced^4)).^0.25;
ko = 24.84e3; %thermal conductivity outside tank at T_wo, Type III (W/m*K)
h_out = (Nu_o*ko)/Do;
end
As can be seen in the above code, the h_in and h_out calculations require T_gas, T_wall_liner interface and T_wall_CFRP_interface, which currently are being calculated after h_in and h_out. Can somebody please show me a way I can incorporate the h_in and h_out calculations into the first section of code? For ease of explanation and solving, please feel free to use your own numbers for the constants in the ode45 solver line.I am trying to solve for heat transfer coefficients so that I can use them to calculate gas and tank wall temperatures. Currently, I am using constant heat transfer coefficients to enable the calculation of the desired temperatures with ode45.
% Convective heat transfer coefficients
h_in = 25; % Convective heat transfer coefficient inside the tank (W/(m^2·K))
h_out = 6; % Convective heat transfer coefficient outside the tank (W/(m^2·K))
% Solve the coupled ODEs and PDE
[t, y] = ode45(@(t, y) odes(t, y, R, C_p_gas, k_liner, k_CFRP, rho_liner, rho_CFRP, C_p_liner, C_p_CFRP, h_in, h_out, T_ambient, A_in, A_out, dx_liner, dx_CFRP, N_liner, N_CFRP, V, mdot_out), tspan, initial_conditions);
% Extract time histories for inside and outside wall temperatures
T_wall_liner_interface = y(:,3); % Inside wall temperature (first point of the liner)
T_wall_CFRP_interface = y(:,end); % Outside wall temperature (last point of the CFRP layer)
What I would like to do is to use the output temperatures from the ode45 to solve for h_in and h_out, which will in turn be used by ode45 to solve for new temperatures. The h_in and h_out calculations look like this:
function [h_in, h_out]=heat_transfer_coefficients
Di = 0.230; % Internal diameter in meters
Do = 0.279; % External diameter in meters
T_gf = 266.17; %(K) – Type III hydrogen gas T at film temp
rho_gf = 39.16; %(kg/m^3) – Type III hydrogen gas density @ T_gf
Cp_gf = 0.01514*((T_gf/100)^4.789)+1002;
mu_gf = (-4.127*10^-7)*((T_gf/100)^2)+((7.258*10^-6)*(T_gf/100))+(4.094*10^-7);
lambda_gf = ((-3.77*10^-4)*(T_gf/100)^2)+((1.004*10^-2)*(T_gf/100))-(4.776*10^-4);
beta_gf = 1/T_gf; %volumetric thermal expansion coefficient
g = 9.81; %gravitational acceleration (m/s^2)
Rai = (rho_gf^2*(Di^3)*beta_gf*g*(T_wall_liner_interface-T_gas)*Cp_gf)/(mu_gf*lambda_gf); %Rayleigh number at inner wall
if Rai < 10^8
Nu_i = 1.15*Rai.^0.22;
else
Nu_i = 0.14*Rai.^0.333;
end
ki = 168.9e3; %thermal conductivity inside tank at T_g, Type III (W/m*K)
h_in = (Nu_i*ki)/Di;
T_ambf = 279.43; %(K) – Type III
rho_ambf = 1.263; %(kg/m^3) – density @ T_ambf
c_wind = 0; %(m/s) – cross wind velocity
Cp_ambf = 0.01514*((T_ambf/100)^4.789)+1002;
mu_ambf = (-4.127*10^-7)*((T_ambf/100)^2)+((7.258*10^-6)*(T_ambf/100))+(4.094*10^-7);
lambda_ambf = ((-3.77*10^-4)*(T_ambf/100)^2)+((1.004*10^-2)*(T_ambf/100))-(4.776*10^-4);
beta_ambf = 1/T_ambf; %volumetric thermal expansion coefficient
Re_Do = (rho_ambf*c_wind*Do)/(mu_ambf);
Pr_ambf = (mu_ambf*Cp_ambf)/lambda_ambf;
if Re_Do == 0
Nu_cylforced = 0;
Nu_sphforced = 0;
else
Nu_cylforced = 0.3+((0.62*(Re_Do^0.5)*(Pr_ambf^(1/3)))/(1+(0.4/((Pr_ambf))^(2/3)))^(1/4))…
*(1+(Re_Do/282000)^5/8)^4/5;
Nu_sphforced = 2 + ((Re_Do/4)+((3*10^-4)*Re_Do^1.6))^0.5;
end
Rao = (rho_ambf^2*(Do^3)*beta_ambf*g*(T_amb-T_wall_CFRP_interface)*Cp_ambf)/(mu_ambf*lambda_ambf); %Rayleigh number at inner wall
Nu_oforced = ((Nu_cylforced*0.72)+(Nu_sphforced*0.24))/(0.72+0.24);
Nu_ofree = (0.6+((0.387*(Rao.^(1/6)))/(1+(0.559/Pr_ambf)^(9/16)).^(8/27))).^2;
Nu_o = ((Nu_ofree.^4)+(Nu_oforced^4)).^0.25;
ko = 24.84e3; %thermal conductivity outside tank at T_wo, Type III (W/m*K)
h_out = (Nu_o*ko)/Do;
end
As can be seen in the above code, the h_in and h_out calculations require T_gas, T_wall_liner interface and T_wall_CFRP_interface, which currently are being calculated after h_in and h_out. Can somebody please show me a way I can incorporate the h_in and h_out calculations into the first section of code? For ease of explanation and solving, please feel free to use your own numbers for the constants in the ode45 solver line. I am trying to solve for heat transfer coefficients so that I can use them to calculate gas and tank wall temperatures. Currently, I am using constant heat transfer coefficients to enable the calculation of the desired temperatures with ode45.
% Convective heat transfer coefficients
h_in = 25; % Convective heat transfer coefficient inside the tank (W/(m^2·K))
h_out = 6; % Convective heat transfer coefficient outside the tank (W/(m^2·K))
% Solve the coupled ODEs and PDE
[t, y] = ode45(@(t, y) odes(t, y, R, C_p_gas, k_liner, k_CFRP, rho_liner, rho_CFRP, C_p_liner, C_p_CFRP, h_in, h_out, T_ambient, A_in, A_out, dx_liner, dx_CFRP, N_liner, N_CFRP, V, mdot_out), tspan, initial_conditions);
% Extract time histories for inside and outside wall temperatures
T_wall_liner_interface = y(:,3); % Inside wall temperature (first point of the liner)
T_wall_CFRP_interface = y(:,end); % Outside wall temperature (last point of the CFRP layer)
What I would like to do is to use the output temperatures from the ode45 to solve for h_in and h_out, which will in turn be used by ode45 to solve for new temperatures. The h_in and h_out calculations look like this:
function [h_in, h_out]=heat_transfer_coefficients
Di = 0.230; % Internal diameter in meters
Do = 0.279; % External diameter in meters
T_gf = 266.17; %(K) – Type III hydrogen gas T at film temp
rho_gf = 39.16; %(kg/m^3) – Type III hydrogen gas density @ T_gf
Cp_gf = 0.01514*((T_gf/100)^4.789)+1002;
mu_gf = (-4.127*10^-7)*((T_gf/100)^2)+((7.258*10^-6)*(T_gf/100))+(4.094*10^-7);
lambda_gf = ((-3.77*10^-4)*(T_gf/100)^2)+((1.004*10^-2)*(T_gf/100))-(4.776*10^-4);
beta_gf = 1/T_gf; %volumetric thermal expansion coefficient
g = 9.81; %gravitational acceleration (m/s^2)
Rai = (rho_gf^2*(Di^3)*beta_gf*g*(T_wall_liner_interface-T_gas)*Cp_gf)/(mu_gf*lambda_gf); %Rayleigh number at inner wall
if Rai < 10^8
Nu_i = 1.15*Rai.^0.22;
else
Nu_i = 0.14*Rai.^0.333;
end
ki = 168.9e3; %thermal conductivity inside tank at T_g, Type III (W/m*K)
h_in = (Nu_i*ki)/Di;
T_ambf = 279.43; %(K) – Type III
rho_ambf = 1.263; %(kg/m^3) – density @ T_ambf
c_wind = 0; %(m/s) – cross wind velocity
Cp_ambf = 0.01514*((T_ambf/100)^4.789)+1002;
mu_ambf = (-4.127*10^-7)*((T_ambf/100)^2)+((7.258*10^-6)*(T_ambf/100))+(4.094*10^-7);
lambda_ambf = ((-3.77*10^-4)*(T_ambf/100)^2)+((1.004*10^-2)*(T_ambf/100))-(4.776*10^-4);
beta_ambf = 1/T_ambf; %volumetric thermal expansion coefficient
Re_Do = (rho_ambf*c_wind*Do)/(mu_ambf);
Pr_ambf = (mu_ambf*Cp_ambf)/lambda_ambf;
if Re_Do == 0
Nu_cylforced = 0;
Nu_sphforced = 0;
else
Nu_cylforced = 0.3+((0.62*(Re_Do^0.5)*(Pr_ambf^(1/3)))/(1+(0.4/((Pr_ambf))^(2/3)))^(1/4))…
*(1+(Re_Do/282000)^5/8)^4/5;
Nu_sphforced = 2 + ((Re_Do/4)+((3*10^-4)*Re_Do^1.6))^0.5;
end
Rao = (rho_ambf^2*(Do^3)*beta_ambf*g*(T_amb-T_wall_CFRP_interface)*Cp_ambf)/(mu_ambf*lambda_ambf); %Rayleigh number at inner wall
Nu_oforced = ((Nu_cylforced*0.72)+(Nu_sphforced*0.24))/(0.72+0.24);
Nu_ofree = (0.6+((0.387*(Rao.^(1/6)))/(1+(0.559/Pr_ambf)^(9/16)).^(8/27))).^2;
Nu_o = ((Nu_ofree.^4)+(Nu_oforced^4)).^0.25;
ko = 24.84e3; %thermal conductivity outside tank at T_wo, Type III (W/m*K)
h_out = (Nu_o*ko)/Do;
end
As can be seen in the above code, the h_in and h_out calculations require T_gas, T_wall_liner interface and T_wall_CFRP_interface, which currently are being calculated after h_in and h_out. Can somebody please show me a way I can incorporate the h_in and h_out calculations into the first section of code? For ease of explanation and solving, please feel free to use your own numbers for the constants in the ode45 solver line. function MATLAB Answers — New Questions
Unable to recognise function from called script
I created this function in a scipted named "lab1_script.m":
t = [1, 2, 3, 4]
function y = lab1_function(t, c)
y = c*t.^2;
end
But when I try to call the script in a new script as follows:
lab1_script;
y = lab1_function(t,0.1)
The error message: unrecognisable function or variable ‘lab1_function’ appears. And I know that the function works, because when I call it within the same script it is fine. It is just trying to call it into a different script that I am having trouble with.
I am confused, what am I doing wrong? Should I be calling the script a different way for the function to be recognised?
Thanks in advance! :)I created this function in a scipted named "lab1_script.m":
t = [1, 2, 3, 4]
function y = lab1_function(t, c)
y = c*t.^2;
end
But when I try to call the script in a new script as follows:
lab1_script;
y = lab1_function(t,0.1)
The error message: unrecognisable function or variable ‘lab1_function’ appears. And I know that the function works, because when I call it within the same script it is fine. It is just trying to call it into a different script that I am having trouble with.
I am confused, what am I doing wrong? Should I be calling the script a different way for the function to be recognised?
Thanks in advance! 🙂 I created this function in a scipted named "lab1_script.m":
t = [1, 2, 3, 4]
function y = lab1_function(t, c)
y = c*t.^2;
end
But when I try to call the script in a new script as follows:
lab1_script;
y = lab1_function(t,0.1)
The error message: unrecognisable function or variable ‘lab1_function’ appears. And I know that the function works, because when I call it within the same script it is fine. It is just trying to call it into a different script that I am having trouble with.
I am confused, what am I doing wrong? Should I be calling the script a different way for the function to be recognised?
Thanks in advance! 🙂 function, calling script MATLAB Answers — New Questions
Detecting residential areas in maps
Hello, trying to understand which strategy works best here.
I am using the mapping toolbox for a research project, which includes the calculation of the average distance/time for traveling from a number of polygonal ROIs (e.g. area of cities) to a given destination. This will in turn provide a measurement for the average cost that residents in the ROI have to endure in order to travel to the destination.
My script goes:
Consider one boundary polygon and geolocate it.
Build a grid of equally spaced geopoints within the polygon.
For each point in step 2, query the OSRM routing engine to the destination and store the response.
Average the distances/times.
I don’t like the current version of step 4, as the algorithm is applying the same weight to points in downtown and in the deep countryside. I would like to achieve a weighted average, where the weights represent a measure of the probability that someone lives nearby a given query point. This basically means detecting residential areas.
I’m not sure how to tackle this, as I’ve never worked with image processing (I’m assuming that’s the way, but I could be wrong). I thought about using geobasemap in ‘streets-light’ mode, and process the amount of pure white color in the picture, which would represent a measure of how much public road exists in a given portion of my ROI. The more roads are present, the less likely it is that we’re in the deep countryside.
I’m pretty sure there are more appropriate workarounds. Has anyone encountered a similar problem? Thank you very much.Hello, trying to understand which strategy works best here.
I am using the mapping toolbox for a research project, which includes the calculation of the average distance/time for traveling from a number of polygonal ROIs (e.g. area of cities) to a given destination. This will in turn provide a measurement for the average cost that residents in the ROI have to endure in order to travel to the destination.
My script goes:
Consider one boundary polygon and geolocate it.
Build a grid of equally spaced geopoints within the polygon.
For each point in step 2, query the OSRM routing engine to the destination and store the response.
Average the distances/times.
I don’t like the current version of step 4, as the algorithm is applying the same weight to points in downtown and in the deep countryside. I would like to achieve a weighted average, where the weights represent a measure of the probability that someone lives nearby a given query point. This basically means detecting residential areas.
I’m not sure how to tackle this, as I’ve never worked with image processing (I’m assuming that’s the way, but I could be wrong). I thought about using geobasemap in ‘streets-light’ mode, and process the amount of pure white color in the picture, which would represent a measure of how much public road exists in a given portion of my ROI. The more roads are present, the less likely it is that we’re in the deep countryside.
I’m pretty sure there are more appropriate workarounds. Has anyone encountered a similar problem? Thank you very much. Hello, trying to understand which strategy works best here.
I am using the mapping toolbox for a research project, which includes the calculation of the average distance/time for traveling from a number of polygonal ROIs (e.g. area of cities) to a given destination. This will in turn provide a measurement for the average cost that residents in the ROI have to endure in order to travel to the destination.
My script goes:
Consider one boundary polygon and geolocate it.
Build a grid of equally spaced geopoints within the polygon.
For each point in step 2, query the OSRM routing engine to the destination and store the response.
Average the distances/times.
I don’t like the current version of step 4, as the algorithm is applying the same weight to points in downtown and in the deep countryside. I would like to achieve a weighted average, where the weights represent a measure of the probability that someone lives nearby a given query point. This basically means detecting residential areas.
I’m not sure how to tackle this, as I’ve never worked with image processing (I’m assuming that’s the way, but I could be wrong). I thought about using geobasemap in ‘streets-light’ mode, and process the amount of pure white color in the picture, which would represent a measure of how much public road exists in a given portion of my ROI. The more roads are present, the less likely it is that we’re in the deep countryside.
I’m pretty sure there are more appropriate workarounds. Has anyone encountered a similar problem? Thank you very much. image processing, matlab, figure, image analysis, geobasemap MATLAB Answers — New Questions
From and Goto block connected block list?
how to find connected Corresponding From blocks list in Goto block? (Using mscript)
Similarly for From Block?how to find connected Corresponding From blocks list in Goto block? (Using mscript)
Similarly for From Block? how to find connected Corresponding From blocks list in Goto block? (Using mscript)
Similarly for From Block? from, goto block, mscript MATLAB Answers — New Questions
Run a python exe from within a Matlab exe with Administrator permissions
I would like to run a python.exe from within a Matlab.exe file with administrator permissions.Unfortunately, the python.exe does not have the necessary permissions to write out a file. I have tried executing it directly from command prompt as administrator and it works perfectly. The process fails when I try executing it within the matlab exe. The workflow is as follows:
The python.exe receives two inputs as arguments i) filename – which is a path to a particular file ii) value
ML_correction.exe –filename "C:/…/../xx.txt" –corrected_val "-185.7"
The python exe computes a certain value and writes out a .mat file
2. The above command to call the python exe is executed within a Matlab exe as follows:
python_path="C:/…/../xx.txt";
val=-185.7;
cmd_command=[‘….ML_correction.exe –filename "’ python_path ‘" –corrected_val "’ num2str(val) ‘"’];
[status,cmdout] = system(cmd_command);
I have read the suggestions from @Jan and @Guillaume : https://de.mathworks.com/matlabcentral/answers/398700-run-external-software-from-matlab-using-system-with-admin-rights
I tried to pass my arguments using ShellExecute from Microsoft documentation but I am definitely doing it wrong. I have tried the following:
cmd_command=[‘….ML_correction.exe –filename "’ python_path ‘" –corrected_val "’ num2str(val) ‘"’];
exepath=string(cmd_command);
uac = actxserver(‘Shell.Application’);
uac.ShellExecute(exepath, "ELEV", "", "runas", 1);
Thank You!
I am using Windows 10 and Matlab2017bI would like to run a python.exe from within a Matlab.exe file with administrator permissions.Unfortunately, the python.exe does not have the necessary permissions to write out a file. I have tried executing it directly from command prompt as administrator and it works perfectly. The process fails when I try executing it within the matlab exe. The workflow is as follows:
The python.exe receives two inputs as arguments i) filename – which is a path to a particular file ii) value
ML_correction.exe –filename "C:/…/../xx.txt" –corrected_val "-185.7"
The python exe computes a certain value and writes out a .mat file
2. The above command to call the python exe is executed within a Matlab exe as follows:
python_path="C:/…/../xx.txt";
val=-185.7;
cmd_command=[‘….ML_correction.exe –filename "’ python_path ‘" –corrected_val "’ num2str(val) ‘"’];
[status,cmdout] = system(cmd_command);
I have read the suggestions from @Jan and @Guillaume : https://de.mathworks.com/matlabcentral/answers/398700-run-external-software-from-matlab-using-system-with-admin-rights
I tried to pass my arguments using ShellExecute from Microsoft documentation but I am definitely doing it wrong. I have tried the following:
cmd_command=[‘….ML_correction.exe –filename "’ python_path ‘" –corrected_val "’ num2str(val) ‘"’];
exepath=string(cmd_command);
uac = actxserver(‘Shell.Application’);
uac.ShellExecute(exepath, "ELEV", "", "runas", 1);
Thank You!
I am using Windows 10 and Matlab2017b I would like to run a python.exe from within a Matlab.exe file with administrator permissions.Unfortunately, the python.exe does not have the necessary permissions to write out a file. I have tried executing it directly from command prompt as administrator and it works perfectly. The process fails when I try executing it within the matlab exe. The workflow is as follows:
The python.exe receives two inputs as arguments i) filename – which is a path to a particular file ii) value
ML_correction.exe –filename "C:/…/../xx.txt" –corrected_val "-185.7"
The python exe computes a certain value and writes out a .mat file
2. The above command to call the python exe is executed within a Matlab exe as follows:
python_path="C:/…/../xx.txt";
val=-185.7;
cmd_command=[‘….ML_correction.exe –filename "’ python_path ‘" –corrected_val "’ num2str(val) ‘"’];
[status,cmdout] = system(cmd_command);
I have read the suggestions from @Jan and @Guillaume : https://de.mathworks.com/matlabcentral/answers/398700-run-external-software-from-matlab-using-system-with-admin-rights
I tried to pass my arguments using ShellExecute from Microsoft documentation but I am definitely doing it wrong. I have tried the following:
cmd_command=[‘….ML_correction.exe –filename "’ python_path ‘" –corrected_val "’ num2str(val) ‘"’];
exepath=string(cmd_command);
uac = actxserver(‘Shell.Application’);
uac.ShellExecute(exepath, "ELEV", "", "runas", 1);
Thank You!
I am using Windows 10 and Matlab2017b system, python exe, matlab exe MATLAB Answers — New Questions
Trouble with an array
Hello,
I have some trouble with an array. I try to set the values for a 3D array (nx x ny x nz) that all inner nodes are set to a defined value, all surface nodes (except the edge nodes) are set to a defined value too. It’s like a small cube in a greater cube.
Here is the code I used:
clc;
clear all;
clf;
format short g
fontSize = 18;
% Domaine
L=0.1;
B=0.1;
H=0.1;
nx=5;
ny=5;
nz=5;
dx=L/(nx-1);
dy=B/(ny-1);
dz=H/(nz-1);
% Nodes
Tn=zeros(nx,ny,nz);
x=linspace(0,L,nx);
y=linspace(0,H,ny);
z=linspace(0,B,nz);
[X,Y,Z]=meshgrid(x,y,z);
K=zeros(nx,ny,nz);
K([1 end],:,:)=alpha;
K(:,[1 end],:)=alpha;
K(:,:,[1 end])=alpha;
% inner nodes
T=zeros(nx,ny,nz);
T(:,:,:)=700;
t=0;
% surrounding surfaces
Tu=600; % bottom
To=900; % top
Tl=400; % left
Tr=800; % rigth
Tv=300; % front
Th=300; % back
% side surfaces
Tn(1,2:nx-2,2:nz-2)=Tv; % front
Tn(ny,2:nx-2,2:nz-2)=Th; % back
Tn(2:ny-2,2:nx-2,1)=Tu; % bottom
Tn(2:ny-2,2:nx-2,nz)=To; % top
Tn(2:ny-2,1,2:nz-2)=Tl; % left
Tn(2:ny-2,nx,2:nz-2)=Tr; % rigth
% merge inner nodes
Tn(2:ny-2,2:nx-2,2:nz-2) = T(2:ny-2,2:nx-2,2:nz-2);
f = figure(1);
f.Position(3:4) = [1080 840];
%XY
subplot(2,2,1)
slice(X,Y,Z,Tn,[],[],[0,H],’cubic’);
set(gca,’FontSize’,fontSize)
colormap(jet)
xlabel(‘X -Axis’,’FontSize’, fontSize)
ylabel(‘Y -Axis’,’FontSize’, fontSize)
zlabel(‘Z -Axis’,’FontSize’, fontSize)
axis([0 L 0 B 0 H]);
view(30,30);
% XZ
subplot(2,2,2)
slice(X,Y,Z,Tn,[],[0,B],[],’cubic’);
set(gca,’FontSize’,fontSize)
colormap(jet)
%set ( gca, ‘ydir’, ‘reverse’ )
xlabel(‘X -Axis’,’FontSize’, fontSize)
ylabel(‘Y -Axis’,’FontSize’, fontSize)
zlabel(‘Z -Axis’,’FontSize’, fontSize)
axis([0 L 0 B 0 H]);
view(30,30);
% YZ
subplot(2,2,3)
slice(X,Y,Z,Tn,[0,L],[],[],’cubic’);
set(gca,’FontSize’,fontSize)
colormap(jet)
%set ( gca, ‘ydir’, ‘reverse’ )
xlabel(‘X -Axis’,’FontSize’, fontSize)
ylabel(‘Y -Axis’,’FontSize’, fontSize)
zlabel(‘Z -Axis’,’FontSize’, fontSize)
axis([0 L 0 B 0 H]);
view(30,30);
% 3D
subplot(2,2,4)
slice(X,Y,Z,Tn,[0,L/2],[B/2,B],[0],’linear’);
set(gca,’FontSize’,fontSize)
set(gca,’YDir’,’normal’)
colormap(jet)
set ( gca, ‘xdir’, ‘reverse’ )
set ( gca, ‘ydir’, ‘reverse’ )
xlabel(‘X -Axis’,’FontSize’, fontSize)
ylabel(‘Y -Axis’,’FontSize’, fontSize)
zlabel(‘Z -Axis’,’FontSize’, fontSize)
axis([0 L 0 B 0 H])
view(-150,30);
hold on
%shading(gca,’interp’)
p = get(subplot(2,2,4),’Position’);
cb=colorbar(‘Position’, [0.93 0.25 0.025 0.6]);
set(cb,’FontSize’,fontSize);
caxis([0, 900]);
The result I achieve is this:
I marked the false areas with a red sign. I indexed from 2:nx-1 and so on, but it’s not working.
The result should look like this:
I don’t know where the error is. Maybe someone has a clue how to fix this.
Greetings
SteffenHello,
I have some trouble with an array. I try to set the values for a 3D array (nx x ny x nz) that all inner nodes are set to a defined value, all surface nodes (except the edge nodes) are set to a defined value too. It’s like a small cube in a greater cube.
Here is the code I used:
clc;
clear all;
clf;
format short g
fontSize = 18;
% Domaine
L=0.1;
B=0.1;
H=0.1;
nx=5;
ny=5;
nz=5;
dx=L/(nx-1);
dy=B/(ny-1);
dz=H/(nz-1);
% Nodes
Tn=zeros(nx,ny,nz);
x=linspace(0,L,nx);
y=linspace(0,H,ny);
z=linspace(0,B,nz);
[X,Y,Z]=meshgrid(x,y,z);
K=zeros(nx,ny,nz);
K([1 end],:,:)=alpha;
K(:,[1 end],:)=alpha;
K(:,:,[1 end])=alpha;
% inner nodes
T=zeros(nx,ny,nz);
T(:,:,:)=700;
t=0;
% surrounding surfaces
Tu=600; % bottom
To=900; % top
Tl=400; % left
Tr=800; % rigth
Tv=300; % front
Th=300; % back
% side surfaces
Tn(1,2:nx-2,2:nz-2)=Tv; % front
Tn(ny,2:nx-2,2:nz-2)=Th; % back
Tn(2:ny-2,2:nx-2,1)=Tu; % bottom
Tn(2:ny-2,2:nx-2,nz)=To; % top
Tn(2:ny-2,1,2:nz-2)=Tl; % left
Tn(2:ny-2,nx,2:nz-2)=Tr; % rigth
% merge inner nodes
Tn(2:ny-2,2:nx-2,2:nz-2) = T(2:ny-2,2:nx-2,2:nz-2);
f = figure(1);
f.Position(3:4) = [1080 840];
%XY
subplot(2,2,1)
slice(X,Y,Z,Tn,[],[],[0,H],’cubic’);
set(gca,’FontSize’,fontSize)
colormap(jet)
xlabel(‘X -Axis’,’FontSize’, fontSize)
ylabel(‘Y -Axis’,’FontSize’, fontSize)
zlabel(‘Z -Axis’,’FontSize’, fontSize)
axis([0 L 0 B 0 H]);
view(30,30);
% XZ
subplot(2,2,2)
slice(X,Y,Z,Tn,[],[0,B],[],’cubic’);
set(gca,’FontSize’,fontSize)
colormap(jet)
%set ( gca, ‘ydir’, ‘reverse’ )
xlabel(‘X -Axis’,’FontSize’, fontSize)
ylabel(‘Y -Axis’,’FontSize’, fontSize)
zlabel(‘Z -Axis’,’FontSize’, fontSize)
axis([0 L 0 B 0 H]);
view(30,30);
% YZ
subplot(2,2,3)
slice(X,Y,Z,Tn,[0,L],[],[],’cubic’);
set(gca,’FontSize’,fontSize)
colormap(jet)
%set ( gca, ‘ydir’, ‘reverse’ )
xlabel(‘X -Axis’,’FontSize’, fontSize)
ylabel(‘Y -Axis’,’FontSize’, fontSize)
zlabel(‘Z -Axis’,’FontSize’, fontSize)
axis([0 L 0 B 0 H]);
view(30,30);
% 3D
subplot(2,2,4)
slice(X,Y,Z,Tn,[0,L/2],[B/2,B],[0],’linear’);
set(gca,’FontSize’,fontSize)
set(gca,’YDir’,’normal’)
colormap(jet)
set ( gca, ‘xdir’, ‘reverse’ )
set ( gca, ‘ydir’, ‘reverse’ )
xlabel(‘X -Axis’,’FontSize’, fontSize)
ylabel(‘Y -Axis’,’FontSize’, fontSize)
zlabel(‘Z -Axis’,’FontSize’, fontSize)
axis([0 L 0 B 0 H])
view(-150,30);
hold on
%shading(gca,’interp’)
p = get(subplot(2,2,4),’Position’);
cb=colorbar(‘Position’, [0.93 0.25 0.025 0.6]);
set(cb,’FontSize’,fontSize);
caxis([0, 900]);
The result I achieve is this:
I marked the false areas with a red sign. I indexed from 2:nx-1 and so on, but it’s not working.
The result should look like this:
I don’t know where the error is. Maybe someone has a clue how to fix this.
Greetings
Steffen Hello,
I have some trouble with an array. I try to set the values for a 3D array (nx x ny x nz) that all inner nodes are set to a defined value, all surface nodes (except the edge nodes) are set to a defined value too. It’s like a small cube in a greater cube.
Here is the code I used:
clc;
clear all;
clf;
format short g
fontSize = 18;
% Domaine
L=0.1;
B=0.1;
H=0.1;
nx=5;
ny=5;
nz=5;
dx=L/(nx-1);
dy=B/(ny-1);
dz=H/(nz-1);
% Nodes
Tn=zeros(nx,ny,nz);
x=linspace(0,L,nx);
y=linspace(0,H,ny);
z=linspace(0,B,nz);
[X,Y,Z]=meshgrid(x,y,z);
K=zeros(nx,ny,nz);
K([1 end],:,:)=alpha;
K(:,[1 end],:)=alpha;
K(:,:,[1 end])=alpha;
% inner nodes
T=zeros(nx,ny,nz);
T(:,:,:)=700;
t=0;
% surrounding surfaces
Tu=600; % bottom
To=900; % top
Tl=400; % left
Tr=800; % rigth
Tv=300; % front
Th=300; % back
% side surfaces
Tn(1,2:nx-2,2:nz-2)=Tv; % front
Tn(ny,2:nx-2,2:nz-2)=Th; % back
Tn(2:ny-2,2:nx-2,1)=Tu; % bottom
Tn(2:ny-2,2:nx-2,nz)=To; % top
Tn(2:ny-2,1,2:nz-2)=Tl; % left
Tn(2:ny-2,nx,2:nz-2)=Tr; % rigth
% merge inner nodes
Tn(2:ny-2,2:nx-2,2:nz-2) = T(2:ny-2,2:nx-2,2:nz-2);
f = figure(1);
f.Position(3:4) = [1080 840];
%XY
subplot(2,2,1)
slice(X,Y,Z,Tn,[],[],[0,H],’cubic’);
set(gca,’FontSize’,fontSize)
colormap(jet)
xlabel(‘X -Axis’,’FontSize’, fontSize)
ylabel(‘Y -Axis’,’FontSize’, fontSize)
zlabel(‘Z -Axis’,’FontSize’, fontSize)
axis([0 L 0 B 0 H]);
view(30,30);
% XZ
subplot(2,2,2)
slice(X,Y,Z,Tn,[],[0,B],[],’cubic’);
set(gca,’FontSize’,fontSize)
colormap(jet)
%set ( gca, ‘ydir’, ‘reverse’ )
xlabel(‘X -Axis’,’FontSize’, fontSize)
ylabel(‘Y -Axis’,’FontSize’, fontSize)
zlabel(‘Z -Axis’,’FontSize’, fontSize)
axis([0 L 0 B 0 H]);
view(30,30);
% YZ
subplot(2,2,3)
slice(X,Y,Z,Tn,[0,L],[],[],’cubic’);
set(gca,’FontSize’,fontSize)
colormap(jet)
%set ( gca, ‘ydir’, ‘reverse’ )
xlabel(‘X -Axis’,’FontSize’, fontSize)
ylabel(‘Y -Axis’,’FontSize’, fontSize)
zlabel(‘Z -Axis’,’FontSize’, fontSize)
axis([0 L 0 B 0 H]);
view(30,30);
% 3D
subplot(2,2,4)
slice(X,Y,Z,Tn,[0,L/2],[B/2,B],[0],’linear’);
set(gca,’FontSize’,fontSize)
set(gca,’YDir’,’normal’)
colormap(jet)
set ( gca, ‘xdir’, ‘reverse’ )
set ( gca, ‘ydir’, ‘reverse’ )
xlabel(‘X -Axis’,’FontSize’, fontSize)
ylabel(‘Y -Axis’,’FontSize’, fontSize)
zlabel(‘Z -Axis’,’FontSize’, fontSize)
axis([0 L 0 B 0 H])
view(-150,30);
hold on
%shading(gca,’interp’)
p = get(subplot(2,2,4),’Position’);
cb=colorbar(‘Position’, [0.93 0.25 0.025 0.6]);
set(cb,’FontSize’,fontSize);
caxis([0, 900]);
The result I achieve is this:
I marked the false areas with a red sign. I indexed from 2:nx-1 and so on, but it’s not working.
The result should look like this:
I don’t know where the error is. Maybe someone has a clue how to fix this.
Greetings
Steffen array, indexing MATLAB Answers — New Questions
n-dimensional Polyhedron plotting using 2-dimensional plot commamnd
I have a 4-dimensional system with 4 states x=(x1, x2, x3,x4) as follow:
A =[ 0 1 0 0
0 -6.7811 203.43 1.6275
0 0 0 1
0 0.89105 -26.732 -6.8804];
B =[ 0
101.72
0
61.26];
xmin = [-2; -5;-4; -2];xmax = [0; 50; 10; 10];
umin =-5;umax =5;
and a I must plot a Polyhedron as follow only for x1 , x2
X = Polyhedron(‘lb’,model.x.min,’ub’,model.x.max);
above-mentionaed Polyhedron is 4-dimentional and it is not possible to plot it.
i want to plot this polyhedron in 2-dimensional page only for x1 and x2 states such that x1 state is considered as horizontal axis and x2 state is considered as vertical axis.
How can I do that in Matlab?I have a 4-dimensional system with 4 states x=(x1, x2, x3,x4) as follow:
A =[ 0 1 0 0
0 -6.7811 203.43 1.6275
0 0 0 1
0 0.89105 -26.732 -6.8804];
B =[ 0
101.72
0
61.26];
xmin = [-2; -5;-4; -2];xmax = [0; 50; 10; 10];
umin =-5;umax =5;
and a I must plot a Polyhedron as follow only for x1 , x2
X = Polyhedron(‘lb’,model.x.min,’ub’,model.x.max);
above-mentionaed Polyhedron is 4-dimentional and it is not possible to plot it.
i want to plot this polyhedron in 2-dimensional page only for x1 and x2 states such that x1 state is considered as horizontal axis and x2 state is considered as vertical axis.
How can I do that in Matlab? I have a 4-dimensional system with 4 states x=(x1, x2, x3,x4) as follow:
A =[ 0 1 0 0
0 -6.7811 203.43 1.6275
0 0 0 1
0 0.89105 -26.732 -6.8804];
B =[ 0
101.72
0
61.26];
xmin = [-2; -5;-4; -2];xmax = [0; 50; 10; 10];
umin =-5;umax =5;
and a I must plot a Polyhedron as follow only for x1 , x2
X = Polyhedron(‘lb’,model.x.min,’ub’,model.x.max);
above-mentionaed Polyhedron is 4-dimentional and it is not possible to plot it.
i want to plot this polyhedron in 2-dimensional page only for x1 and x2 states such that x1 state is considered as horizontal axis and x2 state is considered as vertical axis.
How can I do that in Matlab? polyhedron, mpc MATLAB Answers — New Questions
Cannot figure out how to fit a complicated custom equation.
I am having trouble implementing this equation into the curve fitting toolbox, both in the command and by utilizing the curve fitting GUI.
A little background that may help explain this:
I am wanting to fit experimental data of T(K) vs K_ph (W/m K) which the thermal conductivity of a material, to a model from a journal paper. I have done an okay job in python with scipy.optimize but have been trying MATLAB for a more accurate method.
I have this equation I need to fit
where
A, B, b, C_1, C_2, D, Omega_res1, Omega_res2, and L (ignore L in the exmaple code) are all coefficients I want solved for.
Omega is the independent variable in the integral (omega is solved for) while T is the range 1 to 100 in 1K steps. Or T can simply be my experimental Temperature data as is in my code.
My problems (in the GUI) are in the ways to set the values for T and use an integral in the custom equation box. As in, I am not sure how to tyep the equation in the way MATLAB accepts in the GUI for the toolbox.
My problems for the code is in the integration and lsqcurve fit it seems. I have a lot of warnings/errors such as
Warning: Derivative finite-differencing step was artificially reduced to be within bound constraints. This may
adversely affect convergence. Increasing distance between bound constraints, in dimension 6, to be at least 2e-20
may improve results.
Local minimum possible.
lsqcurvefit stopped because the size of the current step is less than
the value of the step size tolerance.
<stopping criteria details>
Fitted Parameters:
D = 1e-40
B = 1e-20
A = 1e-15
b = 100
C1 = 1e-40
C2 = 1e-40
I am not sure how to fix these, I have gone through other posts on similar matters and have changed the bounds and manually changed the optimoptions values to very low, but reached a point where it was just iterating nonstop.
Any help is appreciated!
% Data from 0T.txt
data = readmatrix(‘0T.txt’, ‘HeaderLines’, 1);
T_data = data(:, 1); % First col: Temperature (K)
k_ph_data = data(:, 2); % Second col: kappa_{xx} (W/mK)
% Constants
k_B = 1.380649e-23; % Boltzmann constant in J/K
hbar = 1.0545718e-34; % Reduced Planck constant in J·s
v_s = 4.817e3; % Sound velocity in m/s
theta_D = 235; % Debye temperature in K
L = 1e-6; % Length in m
% Define the integrand function with omega_res1 and omega_res2
integrand = @(omega, T, D, B, A, b, C1, C2, omega_res1, omega_res2) …
(omega.^4 .* exp(hbar*omega./(k_B*T)) ./ (exp(hbar*omega./(k_B*T)) – 1).^2) .* …
(v_s / L + D*omega.^4 + B*omega + A*T*omega.^3 .* exp(-theta_D / (b*T)) + …
C1 * omega.^4 ./ ((omega.^2 – omega_res1.^2).^2 + 1e-10) .* exp(-hbar*omega_res1 / (k_B * T)) ./ …
(1 + exp(-hbar*omega_res1 / (k_B * T))) + …
C2 * omega.^4 ./ ((omega.^2 – omega_res2.^2).^2 + 1e-10) .* exp(-hbar*omega_res2 / (k_B * T)) ./ …
(1 + exp(-hbar*omega_res2 / (k_B * T))));
% Define the k_ph function
k_ph_func = @(params, T) (k_B / (2 * pi^2 * v_s)) * (k_B * T / hbar)^3 .* …
integral(@(omega) integrand(omega, T, params(1), params(2), params(3), params(4), params(5), params(6), params(7), params(8)), 0, theta_D / T);
% Define the function to be minimized
fun = @(params, T) arrayfun(@(t) k_ph_func(params, t), T);
% Initial guess for parameters [D, B, A, b, C1, C2, omega_res1, omega_res2]
initial_guess = [1e-43, 1e-6, 1e-31, 1, 1e9, 1e10, 1e12, 4e12];
% Set bounds
lb = [1e-50, 1e-12, 1e-35, 1, 1e7, 1e8, 1e10, 3e12];
ub = [1e-40, 1e-3, 1e-28, 1000, 1e11, 1e12, 1e14, 5e12];
% Create opts structure
opts = optimoptions(‘lsqcurvefit’, ‘MaxFunctionEvaluations’, 1e4, ‘MaxIterations’, 1e3);
% Use lsqcurvefit for the fitting
[fitted_params, resnorm, residual, exitflag, output] = lsqcurvefit(fun, initial_guess, T_data, k_ph_data, lb, ub, opts);
% Generate fitted curve (using log spacing)
T_fit = logspace(log10(min(T_data)), log10(max(T_data)), 100);
k_ph_fit = fun(fitted_params, T_fit);I am having trouble implementing this equation into the curve fitting toolbox, both in the command and by utilizing the curve fitting GUI.
A little background that may help explain this:
I am wanting to fit experimental data of T(K) vs K_ph (W/m K) which the thermal conductivity of a material, to a model from a journal paper. I have done an okay job in python with scipy.optimize but have been trying MATLAB for a more accurate method.
I have this equation I need to fit
where
A, B, b, C_1, C_2, D, Omega_res1, Omega_res2, and L (ignore L in the exmaple code) are all coefficients I want solved for.
Omega is the independent variable in the integral (omega is solved for) while T is the range 1 to 100 in 1K steps. Or T can simply be my experimental Temperature data as is in my code.
My problems (in the GUI) are in the ways to set the values for T and use an integral in the custom equation box. As in, I am not sure how to tyep the equation in the way MATLAB accepts in the GUI for the toolbox.
My problems for the code is in the integration and lsqcurve fit it seems. I have a lot of warnings/errors such as
Warning: Derivative finite-differencing step was artificially reduced to be within bound constraints. This may
adversely affect convergence. Increasing distance between bound constraints, in dimension 6, to be at least 2e-20
may improve results.
Local minimum possible.
lsqcurvefit stopped because the size of the current step is less than
the value of the step size tolerance.
<stopping criteria details>
Fitted Parameters:
D = 1e-40
B = 1e-20
A = 1e-15
b = 100
C1 = 1e-40
C2 = 1e-40
I am not sure how to fix these, I have gone through other posts on similar matters and have changed the bounds and manually changed the optimoptions values to very low, but reached a point where it was just iterating nonstop.
Any help is appreciated!
% Data from 0T.txt
data = readmatrix(‘0T.txt’, ‘HeaderLines’, 1);
T_data = data(:, 1); % First col: Temperature (K)
k_ph_data = data(:, 2); % Second col: kappa_{xx} (W/mK)
% Constants
k_B = 1.380649e-23; % Boltzmann constant in J/K
hbar = 1.0545718e-34; % Reduced Planck constant in J·s
v_s = 4.817e3; % Sound velocity in m/s
theta_D = 235; % Debye temperature in K
L = 1e-6; % Length in m
% Define the integrand function with omega_res1 and omega_res2
integrand = @(omega, T, D, B, A, b, C1, C2, omega_res1, omega_res2) …
(omega.^4 .* exp(hbar*omega./(k_B*T)) ./ (exp(hbar*omega./(k_B*T)) – 1).^2) .* …
(v_s / L + D*omega.^4 + B*omega + A*T*omega.^3 .* exp(-theta_D / (b*T)) + …
C1 * omega.^4 ./ ((omega.^2 – omega_res1.^2).^2 + 1e-10) .* exp(-hbar*omega_res1 / (k_B * T)) ./ …
(1 + exp(-hbar*omega_res1 / (k_B * T))) + …
C2 * omega.^4 ./ ((omega.^2 – omega_res2.^2).^2 + 1e-10) .* exp(-hbar*omega_res2 / (k_B * T)) ./ …
(1 + exp(-hbar*omega_res2 / (k_B * T))));
% Define the k_ph function
k_ph_func = @(params, T) (k_B / (2 * pi^2 * v_s)) * (k_B * T / hbar)^3 .* …
integral(@(omega) integrand(omega, T, params(1), params(2), params(3), params(4), params(5), params(6), params(7), params(8)), 0, theta_D / T);
% Define the function to be minimized
fun = @(params, T) arrayfun(@(t) k_ph_func(params, t), T);
% Initial guess for parameters [D, B, A, b, C1, C2, omega_res1, omega_res2]
initial_guess = [1e-43, 1e-6, 1e-31, 1, 1e9, 1e10, 1e12, 4e12];
% Set bounds
lb = [1e-50, 1e-12, 1e-35, 1, 1e7, 1e8, 1e10, 3e12];
ub = [1e-40, 1e-3, 1e-28, 1000, 1e11, 1e12, 1e14, 5e12];
% Create opts structure
opts = optimoptions(‘lsqcurvefit’, ‘MaxFunctionEvaluations’, 1e4, ‘MaxIterations’, 1e3);
% Use lsqcurvefit for the fitting
[fitted_params, resnorm, residual, exitflag, output] = lsqcurvefit(fun, initial_guess, T_data, k_ph_data, lb, ub, opts);
% Generate fitted curve (using log spacing)
T_fit = logspace(log10(min(T_data)), log10(max(T_data)), 100);
k_ph_fit = fun(fitted_params, T_fit); I am having trouble implementing this equation into the curve fitting toolbox, both in the command and by utilizing the curve fitting GUI.
A little background that may help explain this:
I am wanting to fit experimental data of T(K) vs K_ph (W/m K) which the thermal conductivity of a material, to a model from a journal paper. I have done an okay job in python with scipy.optimize but have been trying MATLAB for a more accurate method.
I have this equation I need to fit
where
A, B, b, C_1, C_2, D, Omega_res1, Omega_res2, and L (ignore L in the exmaple code) are all coefficients I want solved for.
Omega is the independent variable in the integral (omega is solved for) while T is the range 1 to 100 in 1K steps. Or T can simply be my experimental Temperature data as is in my code.
My problems (in the GUI) are in the ways to set the values for T and use an integral in the custom equation box. As in, I am not sure how to tyep the equation in the way MATLAB accepts in the GUI for the toolbox.
My problems for the code is in the integration and lsqcurve fit it seems. I have a lot of warnings/errors such as
Warning: Derivative finite-differencing step was artificially reduced to be within bound constraints. This may
adversely affect convergence. Increasing distance between bound constraints, in dimension 6, to be at least 2e-20
may improve results.
Local minimum possible.
lsqcurvefit stopped because the size of the current step is less than
the value of the step size tolerance.
<stopping criteria details>
Fitted Parameters:
D = 1e-40
B = 1e-20
A = 1e-15
b = 100
C1 = 1e-40
C2 = 1e-40
I am not sure how to fix these, I have gone through other posts on similar matters and have changed the bounds and manually changed the optimoptions values to very low, but reached a point where it was just iterating nonstop.
Any help is appreciated!
% Data from 0T.txt
data = readmatrix(‘0T.txt’, ‘HeaderLines’, 1);
T_data = data(:, 1); % First col: Temperature (K)
k_ph_data = data(:, 2); % Second col: kappa_{xx} (W/mK)
% Constants
k_B = 1.380649e-23; % Boltzmann constant in J/K
hbar = 1.0545718e-34; % Reduced Planck constant in J·s
v_s = 4.817e3; % Sound velocity in m/s
theta_D = 235; % Debye temperature in K
L = 1e-6; % Length in m
% Define the integrand function with omega_res1 and omega_res2
integrand = @(omega, T, D, B, A, b, C1, C2, omega_res1, omega_res2) …
(omega.^4 .* exp(hbar*omega./(k_B*T)) ./ (exp(hbar*omega./(k_B*T)) – 1).^2) .* …
(v_s / L + D*omega.^4 + B*omega + A*T*omega.^3 .* exp(-theta_D / (b*T)) + …
C1 * omega.^4 ./ ((omega.^2 – omega_res1.^2).^2 + 1e-10) .* exp(-hbar*omega_res1 / (k_B * T)) ./ …
(1 + exp(-hbar*omega_res1 / (k_B * T))) + …
C2 * omega.^4 ./ ((omega.^2 – omega_res2.^2).^2 + 1e-10) .* exp(-hbar*omega_res2 / (k_B * T)) ./ …
(1 + exp(-hbar*omega_res2 / (k_B * T))));
% Define the k_ph function
k_ph_func = @(params, T) (k_B / (2 * pi^2 * v_s)) * (k_B * T / hbar)^3 .* …
integral(@(omega) integrand(omega, T, params(1), params(2), params(3), params(4), params(5), params(6), params(7), params(8)), 0, theta_D / T);
% Define the function to be minimized
fun = @(params, T) arrayfun(@(t) k_ph_func(params, t), T);
% Initial guess for parameters [D, B, A, b, C1, C2, omega_res1, omega_res2]
initial_guess = [1e-43, 1e-6, 1e-31, 1, 1e9, 1e10, 1e12, 4e12];
% Set bounds
lb = [1e-50, 1e-12, 1e-35, 1, 1e7, 1e8, 1e10, 3e12];
ub = [1e-40, 1e-3, 1e-28, 1000, 1e11, 1e12, 1e14, 5e12];
% Create opts structure
opts = optimoptions(‘lsqcurvefit’, ‘MaxFunctionEvaluations’, 1e4, ‘MaxIterations’, 1e3);
% Use lsqcurvefit for the fitting
[fitted_params, resnorm, residual, exitflag, output] = lsqcurvefit(fun, initial_guess, T_data, k_ph_data, lb, ub, opts);
% Generate fitted curve (using log spacing)
T_fit = logspace(log10(min(T_data)), log10(max(T_data)), 100);
k_ph_fit = fun(fitted_params, T_fit); curve fitting MATLAB Answers — New Questions
extract 1 row data of 1 table
I want to extract the data of a row in a table, how to do it
exam: Name address age
hang VN 18
nam vn 40
lan vn 23
I want to retrieve the information of a man named Nam
help me!I want to extract the data of a row in a table, how to do it
exam: Name address age
hang VN 18
nam vn 40
lan vn 23
I want to retrieve the information of a man named Nam
help me! I want to extract the data of a row in a table, how to do it
exam: Name address age
hang VN 18
nam vn 40
lan vn 23
I want to retrieve the information of a man named Nam
help me! extract 1 row data of 1 table MATLAB Answers — New Questions
custom phase changing material does not release heat.
Problem:
When I adjust the latent heat, there’s no change in the temperature curve of the XPS material. I anticipate a stable temperature, ranging between 305K and 320K. So the problem is that the material does not release the absorbed heat.
equations
assert(Cps > 0 && Cpl > 0)
assert(T > 0, ‘Temperature must be greater than absolute zero’)
T == M.T;
if T >= Tmelt_start && T <= Tmelt_end
phaseChangeRate == {0.001, ‘1/s’};
else
phaseChangeRate == {0, ‘1/s’};
end
if phase < 1 && phase > 0
Q == m * Cps * T.der + m * L * phaseChangeRate;
phase.der == phaseChangeRate;
else
Q == m * Cpl * T.der;
phase.der == {0, ‘1/s’};
end
end
explanation of the full code:
This code describes a thermal component that models internal energy storage in a thermal network. Here’s a breakdown of the main parts of this code:
1. **Nodes**: These are points where other components can connect. Two thermal nodes are defined: `M` (top) and `N` (bottom).
2. **Inputs**: These values can be supplied from outside. `Mdot` represents the mass flow rate (in kg/s) and `T_in` is the input temperature (in Kelvin).
3. **Parameters**: These values determine the behavior of the component. They include:
– `mass_type`: Type of mass (constant or variable).
– `mass`: The mass of the thermal component.
– `Cps` and `Cpl`: Specific heat capacity for solid and liquid, respectively.
– `Tmelt_start` and `Tmelt_end`: The temperature range where the material starts melting and stops melting.
– `L`: Specific latent heat.
– `mass_min`: Minimum mass.
– `num_ports`: The number of graphical ports.
4. **Annotations**: These are metadata that provide additional information about the component or dictate how it is displayed in a GUI. Here, it is primarily used to indicate which parameters can be modified externally and to define the component’s icon.
5. **Variables**: These represent the internal states of the component. They include:
– `m`: The mass.
– `T`: The temperature.
– `phase`: The phase (0 for solid, 1 for liquid, and values in between for a mixed phase).
– `phaseChangeRate`: The rate of phase change.
– `Q`: Heat flow rate.
6. **Branches**: These are connections between different parts of the network. Here, the heat flow `Q` from node `M` to another part of the network is defined.
7. **Equations**: These describe the mathematical relationships between the different variables and parameters. They include:
– Relationships between `T`, `Q`, `m`, and other variables, especially around phase change.
– Constraints on certain values (like that `Cps`, `Cpl`, and `T` must be positive).
8. **Connections**: These are the actual connections between the different nodes within the component. Here, node `M` is connected to node `N`.
The essence of this component is that it models a thermal mass that can store and release energy. It also accounts for phase changes, meaning it can melt or solidify within a certain temperature range.
component derdecomponent
% Thermal Mass
% This block models internal energy storage in a thermal network.
nodes
M = foundation.thermal.thermal; % :top
end
inputs(ExternalAccess = none)
Mdot = {0, ‘kg/s’}; % Mdot:bottom
T_in = {300, ‘K’}; % Tin:bottom
end
nodes(ExternalAccess = none)
N = foundation.thermal.thermal; % :bottom
end
parameters
mass_type = foundation.enum.constant_variable.constant; % Mass type
end
parameters (ExternalAccess = none)
mass = {1, ‘kg’}; % Mass
end
parameters
Cps = {200, ‘J/(kg*K)’}; % Specific heat solid
Cpl = {1000, ‘J/(kg*K)’}; % Specific heat liquid
Tmelt_start = {320, ‘K’}; % Start Melting Temperature
Tmelt_end = {305, ‘K’}; % End Melting Temperature
L = {100, ‘J/(kg)’}; % Specific Latent Heat
end
parameters (ExternalAccess = none)
mass_min = {1e-6,’kg’}; % Minimum mass
end
parameters
num_ports = foundation.enum.numPorts2.one; % Number of graphical ports
end
if num_ports == 2
annotations
N : ExternalAccess=modify
end
if mass_type == foundation.enum.constant_variable.constant
annotations
% Icon = ‘mass2.svg’
end
else
annotations
% Icon = ‘mass4.svg’
end
end
else
if mass_type == foundation.enum.constant_variable.variable
annotations
% Icon = ‘mass3.svg’
end
end
end
if mass_type == foundation.enum.constant_variable.constant
annotations
mass : ExternalAccess=modify
end
equations
m == {1,’kg’};
end
else
annotations
[Mdot, T_in, m, mass_min] : ExternalAccess=modify
end
equations
assert(mass_min > 0)
end
end
variables (ExternalAccess=none)
m = {value = {1,’kg’}, priority=priority.high}; % Mass
end
variables
T = {value = {300, ‘K’}, priority = priority.high}; % Temperature
phase = {value = {0, ‘1’}, priority = priority.high}; % Phase
phaseChangeRate = {0, ‘1/s’}; % Rate of phase change
end
variables (Access=private)
Q = {0, ‘W’}; % Heat flow rate
end
branches
Q : M.Q -> *;
end
equations
assert(Cps > 0 && Cpl > 0)
assert(T > 0, ‘Temperature must be greater than absolute zero’)
T == M.T;
if T >= Tmelt_start && T <= Tmelt_end
phaseChangeRate == {0.001, ‘1/s’};
else
phaseChangeRate == {0, ‘1/s’};
end
if phase < 1 && phase > 0
Q == m * Cps * T.der + m * L * phaseChangeRate;
phase.der == phaseChangeRate;
else
Q == m * Cpl * T.der;
phase.der == {0, ‘1/s’};
end
end
connections
connect(M,N)
end
endProblem:
When I adjust the latent heat, there’s no change in the temperature curve of the XPS material. I anticipate a stable temperature, ranging between 305K and 320K. So the problem is that the material does not release the absorbed heat.
equations
assert(Cps > 0 && Cpl > 0)
assert(T > 0, ‘Temperature must be greater than absolute zero’)
T == M.T;
if T >= Tmelt_start && T <= Tmelt_end
phaseChangeRate == {0.001, ‘1/s’};
else
phaseChangeRate == {0, ‘1/s’};
end
if phase < 1 && phase > 0
Q == m * Cps * T.der + m * L * phaseChangeRate;
phase.der == phaseChangeRate;
else
Q == m * Cpl * T.der;
phase.der == {0, ‘1/s’};
end
end
explanation of the full code:
This code describes a thermal component that models internal energy storage in a thermal network. Here’s a breakdown of the main parts of this code:
1. **Nodes**: These are points where other components can connect. Two thermal nodes are defined: `M` (top) and `N` (bottom).
2. **Inputs**: These values can be supplied from outside. `Mdot` represents the mass flow rate (in kg/s) and `T_in` is the input temperature (in Kelvin).
3. **Parameters**: These values determine the behavior of the component. They include:
– `mass_type`: Type of mass (constant or variable).
– `mass`: The mass of the thermal component.
– `Cps` and `Cpl`: Specific heat capacity for solid and liquid, respectively.
– `Tmelt_start` and `Tmelt_end`: The temperature range where the material starts melting and stops melting.
– `L`: Specific latent heat.
– `mass_min`: Minimum mass.
– `num_ports`: The number of graphical ports.
4. **Annotations**: These are metadata that provide additional information about the component or dictate how it is displayed in a GUI. Here, it is primarily used to indicate which parameters can be modified externally and to define the component’s icon.
5. **Variables**: These represent the internal states of the component. They include:
– `m`: The mass.
– `T`: The temperature.
– `phase`: The phase (0 for solid, 1 for liquid, and values in between for a mixed phase).
– `phaseChangeRate`: The rate of phase change.
– `Q`: Heat flow rate.
6. **Branches**: These are connections between different parts of the network. Here, the heat flow `Q` from node `M` to another part of the network is defined.
7. **Equations**: These describe the mathematical relationships between the different variables and parameters. They include:
– Relationships between `T`, `Q`, `m`, and other variables, especially around phase change.
– Constraints on certain values (like that `Cps`, `Cpl`, and `T` must be positive).
8. **Connections**: These are the actual connections between the different nodes within the component. Here, node `M` is connected to node `N`.
The essence of this component is that it models a thermal mass that can store and release energy. It also accounts for phase changes, meaning it can melt or solidify within a certain temperature range.
component derdecomponent
% Thermal Mass
% This block models internal energy storage in a thermal network.
nodes
M = foundation.thermal.thermal; % :top
end
inputs(ExternalAccess = none)
Mdot = {0, ‘kg/s’}; % Mdot:bottom
T_in = {300, ‘K’}; % Tin:bottom
end
nodes(ExternalAccess = none)
N = foundation.thermal.thermal; % :bottom
end
parameters
mass_type = foundation.enum.constant_variable.constant; % Mass type
end
parameters (ExternalAccess = none)
mass = {1, ‘kg’}; % Mass
end
parameters
Cps = {200, ‘J/(kg*K)’}; % Specific heat solid
Cpl = {1000, ‘J/(kg*K)’}; % Specific heat liquid
Tmelt_start = {320, ‘K’}; % Start Melting Temperature
Tmelt_end = {305, ‘K’}; % End Melting Temperature
L = {100, ‘J/(kg)’}; % Specific Latent Heat
end
parameters (ExternalAccess = none)
mass_min = {1e-6,’kg’}; % Minimum mass
end
parameters
num_ports = foundation.enum.numPorts2.one; % Number of graphical ports
end
if num_ports == 2
annotations
N : ExternalAccess=modify
end
if mass_type == foundation.enum.constant_variable.constant
annotations
% Icon = ‘mass2.svg’
end
else
annotations
% Icon = ‘mass4.svg’
end
end
else
if mass_type == foundation.enum.constant_variable.variable
annotations
% Icon = ‘mass3.svg’
end
end
end
if mass_type == foundation.enum.constant_variable.constant
annotations
mass : ExternalAccess=modify
end
equations
m == {1,’kg’};
end
else
annotations
[Mdot, T_in, m, mass_min] : ExternalAccess=modify
end
equations
assert(mass_min > 0)
end
end
variables (ExternalAccess=none)
m = {value = {1,’kg’}, priority=priority.high}; % Mass
end
variables
T = {value = {300, ‘K’}, priority = priority.high}; % Temperature
phase = {value = {0, ‘1’}, priority = priority.high}; % Phase
phaseChangeRate = {0, ‘1/s’}; % Rate of phase change
end
variables (Access=private)
Q = {0, ‘W’}; % Heat flow rate
end
branches
Q : M.Q -> *;
end
equations
assert(Cps > 0 && Cpl > 0)
assert(T > 0, ‘Temperature must be greater than absolute zero’)
T == M.T;
if T >= Tmelt_start && T <= Tmelt_end
phaseChangeRate == {0.001, ‘1/s’};
else
phaseChangeRate == {0, ‘1/s’};
end
if phase < 1 && phase > 0
Q == m * Cps * T.der + m * L * phaseChangeRate;
phase.der == phaseChangeRate;
else
Q == m * Cpl * T.der;
phase.der == {0, ‘1/s’};
end
end
connections
connect(M,N)
end
end Problem:
When I adjust the latent heat, there’s no change in the temperature curve of the XPS material. I anticipate a stable temperature, ranging between 305K and 320K. So the problem is that the material does not release the absorbed heat.
equations
assert(Cps > 0 && Cpl > 0)
assert(T > 0, ‘Temperature must be greater than absolute zero’)
T == M.T;
if T >= Tmelt_start && T <= Tmelt_end
phaseChangeRate == {0.001, ‘1/s’};
else
phaseChangeRate == {0, ‘1/s’};
end
if phase < 1 && phase > 0
Q == m * Cps * T.der + m * L * phaseChangeRate;
phase.der == phaseChangeRate;
else
Q == m * Cpl * T.der;
phase.der == {0, ‘1/s’};
end
end
explanation of the full code:
This code describes a thermal component that models internal energy storage in a thermal network. Here’s a breakdown of the main parts of this code:
1. **Nodes**: These are points where other components can connect. Two thermal nodes are defined: `M` (top) and `N` (bottom).
2. **Inputs**: These values can be supplied from outside. `Mdot` represents the mass flow rate (in kg/s) and `T_in` is the input temperature (in Kelvin).
3. **Parameters**: These values determine the behavior of the component. They include:
– `mass_type`: Type of mass (constant or variable).
– `mass`: The mass of the thermal component.
– `Cps` and `Cpl`: Specific heat capacity for solid and liquid, respectively.
– `Tmelt_start` and `Tmelt_end`: The temperature range where the material starts melting and stops melting.
– `L`: Specific latent heat.
– `mass_min`: Minimum mass.
– `num_ports`: The number of graphical ports.
4. **Annotations**: These are metadata that provide additional information about the component or dictate how it is displayed in a GUI. Here, it is primarily used to indicate which parameters can be modified externally and to define the component’s icon.
5. **Variables**: These represent the internal states of the component. They include:
– `m`: The mass.
– `T`: The temperature.
– `phase`: The phase (0 for solid, 1 for liquid, and values in between for a mixed phase).
– `phaseChangeRate`: The rate of phase change.
– `Q`: Heat flow rate.
6. **Branches**: These are connections between different parts of the network. Here, the heat flow `Q` from node `M` to another part of the network is defined.
7. **Equations**: These describe the mathematical relationships between the different variables and parameters. They include:
– Relationships between `T`, `Q`, `m`, and other variables, especially around phase change.
– Constraints on certain values (like that `Cps`, `Cpl`, and `T` must be positive).
8. **Connections**: These are the actual connections between the different nodes within the component. Here, node `M` is connected to node `N`.
The essence of this component is that it models a thermal mass that can store and release energy. It also accounts for phase changes, meaning it can melt or solidify within a certain temperature range.
component derdecomponent
% Thermal Mass
% This block models internal energy storage in a thermal network.
nodes
M = foundation.thermal.thermal; % :top
end
inputs(ExternalAccess = none)
Mdot = {0, ‘kg/s’}; % Mdot:bottom
T_in = {300, ‘K’}; % Tin:bottom
end
nodes(ExternalAccess = none)
N = foundation.thermal.thermal; % :bottom
end
parameters
mass_type = foundation.enum.constant_variable.constant; % Mass type
end
parameters (ExternalAccess = none)
mass = {1, ‘kg’}; % Mass
end
parameters
Cps = {200, ‘J/(kg*K)’}; % Specific heat solid
Cpl = {1000, ‘J/(kg*K)’}; % Specific heat liquid
Tmelt_start = {320, ‘K’}; % Start Melting Temperature
Tmelt_end = {305, ‘K’}; % End Melting Temperature
L = {100, ‘J/(kg)’}; % Specific Latent Heat
end
parameters (ExternalAccess = none)
mass_min = {1e-6,’kg’}; % Minimum mass
end
parameters
num_ports = foundation.enum.numPorts2.one; % Number of graphical ports
end
if num_ports == 2
annotations
N : ExternalAccess=modify
end
if mass_type == foundation.enum.constant_variable.constant
annotations
% Icon = ‘mass2.svg’
end
else
annotations
% Icon = ‘mass4.svg’
end
end
else
if mass_type == foundation.enum.constant_variable.variable
annotations
% Icon = ‘mass3.svg’
end
end
end
if mass_type == foundation.enum.constant_variable.constant
annotations
mass : ExternalAccess=modify
end
equations
m == {1,’kg’};
end
else
annotations
[Mdot, T_in, m, mass_min] : ExternalAccess=modify
end
equations
assert(mass_min > 0)
end
end
variables (ExternalAccess=none)
m = {value = {1,’kg’}, priority=priority.high}; % Mass
end
variables
T = {value = {300, ‘K’}, priority = priority.high}; % Temperature
phase = {value = {0, ‘1’}, priority = priority.high}; % Phase
phaseChangeRate = {0, ‘1/s’}; % Rate of phase change
end
variables (Access=private)
Q = {0, ‘W’}; % Heat flow rate
end
branches
Q : M.Q -> *;
end
equations
assert(Cps > 0 && Cpl > 0)
assert(T > 0, ‘Temperature must be greater than absolute zero’)
T == M.T;
if T >= Tmelt_start && T <= Tmelt_end
phaseChangeRate == {0.001, ‘1/s’};
else
phaseChangeRate == {0, ‘1/s’};
end
if phase < 1 && phase > 0
Q == m * Cps * T.der + m * L * phaseChangeRate;
phase.der == phaseChangeRate;
else
Q == m * Cpl * T.der;
phase.der == {0, ‘1/s’};
end
end
connections
connect(M,N)
end
end phasechangingmaterial, heattransfer MATLAB Answers — New Questions
Simulink zoom / scroll problem on MacBook Pro trackpad
When I two-finger scroll on my trackpad to zoom a Simulink model, it
zooms in and out rapidly and erratically. Moreoever, pinch-to-zoom
produces no zooming effect.
This problem was noted here:
http://lizard-spock.co.uk/blog/engineering/simulink-scroll-wheel-erratic-behaviour/
They advised disabling scroll-wheel zoom altogether with
File > Simulink Prefs > Editor defaults > Scroll wheel controls zooming preference.
However, the zoom feature is essential for fast model navigation.
I have tried twiddling various settings on the Mac Trackpad system preferences, no luck.
The following Mathworks doc claims that pinch-to-zoom and regular
scroll-zoom should work, but it doesn’t for me.
http://www.mathworks.com/help/simulink/ug/zooming-block-diagrams.html
Has anyone solved this?
("Use a mouse" and "just click the zoom button" are not acceptable
answers, since I don’t want to lug a mouse around just for Matlab and
having to click a button is a crappy UI constraint on something that
should be natural.)
Thanks for your help.When I two-finger scroll on my trackpad to zoom a Simulink model, it
zooms in and out rapidly and erratically. Moreoever, pinch-to-zoom
produces no zooming effect.
This problem was noted here:
http://lizard-spock.co.uk/blog/engineering/simulink-scroll-wheel-erratic-behaviour/
They advised disabling scroll-wheel zoom altogether with
File > Simulink Prefs > Editor defaults > Scroll wheel controls zooming preference.
However, the zoom feature is essential for fast model navigation.
I have tried twiddling various settings on the Mac Trackpad system preferences, no luck.
The following Mathworks doc claims that pinch-to-zoom and regular
scroll-zoom should work, but it doesn’t for me.
http://www.mathworks.com/help/simulink/ug/zooming-block-diagrams.html
Has anyone solved this?
("Use a mouse" and "just click the zoom button" are not acceptable
answers, since I don’t want to lug a mouse around just for Matlab and
having to click a button is a crappy UI constraint on something that
should be natural.)
Thanks for your help. When I two-finger scroll on my trackpad to zoom a Simulink model, it
zooms in and out rapidly and erratically. Moreoever, pinch-to-zoom
produces no zooming effect.
This problem was noted here:
http://lizard-spock.co.uk/blog/engineering/simulink-scroll-wheel-erratic-behaviour/
They advised disabling scroll-wheel zoom altogether with
File > Simulink Prefs > Editor defaults > Scroll wheel controls zooming preference.
However, the zoom feature is essential for fast model navigation.
I have tried twiddling various settings on the Mac Trackpad system preferences, no luck.
The following Mathworks doc claims that pinch-to-zoom and regular
scroll-zoom should work, but it doesn’t for me.
http://www.mathworks.com/help/simulink/ug/zooming-block-diagrams.html
Has anyone solved this?
("Use a mouse" and "just click the zoom button" are not acceptable
answers, since I don’t want to lug a mouse around just for Matlab and
having to click a button is a crappy UI constraint on something that
should be natural.)
Thanks for your help. simulink, trackpad, zoom MATLAB Answers — New Questions
Compiling error : Unknown file extension ‘ ‘
I am compiling a file that contains a caller block, and that c caller block is calling c file that have many header files included. But while compiling its giving error Unknown "file extension ‘ ‘ ". Can anyone tell me how to solve this one?I am compiling a file that contains a caller block, and that c caller block is calling c file that have many header files included. But while compiling its giving error Unknown "file extension ‘ ‘ ". Can anyone tell me how to solve this one? I am compiling a file that contains a caller block, and that c caller block is calling c file that have many header files included. But while compiling its giving error Unknown "file extension ‘ ‘ ". Can anyone tell me how to solve this one? c caller, mex, error, unknown file MATLAB Answers — New Questions
Looking to License two separate Programs PolySpace on one port and Matlab on a separate one.
I have licensing in an offline environment. One for Matlab and one for POLLSPACE. I’m looking to license them both on the same server (since both licenses have that MAC:ID tied to them). I’m running into the fact that I can’t run two separate MLM.exe’s on the same FLEXNet license manager. So my thought was I could combine the licensing that is for the same server ID, for the two products. But I seem to be running into and issue that I don’t know how to make it so both products are working and on separate ports.
Is there a way either in options file or something similar to be able to take two valid licenses and have the products be listening on two separate ports?
Thanks!I have licensing in an offline environment. One for Matlab and one for POLLSPACE. I’m looking to license them both on the same server (since both licenses have that MAC:ID tied to them). I’m running into the fact that I can’t run two separate MLM.exe’s on the same FLEXNet license manager. So my thought was I could combine the licensing that is for the same server ID, for the two products. But I seem to be running into and issue that I don’t know how to make it so both products are working and on separate ports.
Is there a way either in options file or something similar to be able to take two valid licenses and have the products be listening on two separate ports?
Thanks! I have licensing in an offline environment. One for Matlab and one for POLLSPACE. I’m looking to license them both on the same server (since both licenses have that MAC:ID tied to them). I’m running into the fact that I can’t run two separate MLM.exe’s on the same FLEXNet license manager. So my thought was I could combine the licensing that is for the same server ID, for the two products. But I seem to be running into and issue that I don’t know how to make it so both products are working and on separate ports.
Is there a way either in options file or something similar to be able to take two valid licenses and have the products be listening on two separate ports?
Thanks! license, licensemanager MATLAB Answers — New Questions
Finding mean value over certain amount of values in a matrix
Hello!
I would like to calculate the mean value of a defined number of values of the columns in a matrix.
e.g.
Mean value every 2 values column by column of A.
A = [1,2,3;4,6,8;7,12,7;14,4,23];
result = [2.5,4,5.5;10.5,8,15]
Thanks for the answers in advance.Hello!
I would like to calculate the mean value of a defined number of values of the columns in a matrix.
e.g.
Mean value every 2 values column by column of A.
A = [1,2,3;4,6,8;7,12,7;14,4,23];
result = [2.5,4,5.5;10.5,8,15]
Thanks for the answers in advance. Hello!
I would like to calculate the mean value of a defined number of values of the columns in a matrix.
e.g.
Mean value every 2 values column by column of A.
A = [1,2,3;4,6,8;7,12,7;14,4,23];
result = [2.5,4,5.5;10.5,8,15]
Thanks for the answers in advance. mean, matlab, reshape MATLAB Answers — New Questions