Tag Archives: matlab
Regarding the Gaussian filtering function imgaussfilt and the filter function fspecial.
I want to perform Gaussian filtering on an image, but the size of the filter will continue to increase as the program progresses, while the image is getting smaller and smaller. This inevitably leads to a situation where the image size is smaller than the filter size. So, I used these two functions to give a simple example to see if they can work properly.
Now that the execution has ended, I find that the results of the two functions are not the same. I would like to ask if these two functions have different ways of handling the issue of exceeding the matrix boundary? And which function would be more recommended for Gaussian filtering of images in image processing?
a = [1 2 1; 2 1 2; 1 2 1];
% imgaussfilt函数滤波对于边界像素的处理
b = imgaussfilt(a, 1.6);
disp(b);
% 使用same约束矩阵大小,对边界像素的处理
sigma = 1.6;
size = 9;
gaussian_kernel = fspecial(‘gaussian’, size, sigma);
% disp(gaussian_kernel);
c = conv2(a, gaussian_kernel, ‘same’);
disp(c);I want to perform Gaussian filtering on an image, but the size of the filter will continue to increase as the program progresses, while the image is getting smaller and smaller. This inevitably leads to a situation where the image size is smaller than the filter size. So, I used these two functions to give a simple example to see if they can work properly.
Now that the execution has ended, I find that the results of the two functions are not the same. I would like to ask if these two functions have different ways of handling the issue of exceeding the matrix boundary? And which function would be more recommended for Gaussian filtering of images in image processing?
a = [1 2 1; 2 1 2; 1 2 1];
% imgaussfilt函数滤波对于边界像素的处理
b = imgaussfilt(a, 1.6);
disp(b);
% 使用same约束矩阵大小,对边界像素的处理
sigma = 1.6;
size = 9;
gaussian_kernel = fspecial(‘gaussian’, size, sigma);
% disp(gaussian_kernel);
c = conv2(a, gaussian_kernel, ‘same’);
disp(c); I want to perform Gaussian filtering on an image, but the size of the filter will continue to increase as the program progresses, while the image is getting smaller and smaller. This inevitably leads to a situation where the image size is smaller than the filter size. So, I used these two functions to give a simple example to see if they can work properly.
Now that the execution has ended, I find that the results of the two functions are not the same. I would like to ask if these two functions have different ways of handling the issue of exceeding the matrix boundary? And which function would be more recommended for Gaussian filtering of images in image processing?
a = [1 2 1; 2 1 2; 1 2 1];
% imgaussfilt函数滤波对于边界像素的处理
b = imgaussfilt(a, 1.6);
disp(b);
% 使用same约束矩阵大小,对边界像素的处理
sigma = 1.6;
size = 9;
gaussian_kernel = fspecial(‘gaussian’, size, sigma);
% disp(gaussian_kernel);
c = conv2(a, gaussian_kernel, ‘same’);
disp(c); fspecial,imgaussfilt,gauss,filter MATLAB Answers — New Questions
Higher order transfer function precision issue
Hi,
I’m creating a transfer function at higher order (to the degree of 80) by multiplication of many 2nd order transfer function. However, when I get this final transfer function, the result returned is NaN.
I suspect it is due to the precision error in MATLAB, and tried to use vpa commend. It didn’t solve the problem by giving errors.
Could anyone advise me a solution please? thank you.
Steven
num_bnotch=vpa([1 4*0.20*pi*19.5 (2*pi*20.04)^2]);
den_bnotch=vpa([1 4900.88 1.5855e+004]);
bnotch=tf(num_bnotch,den_bnotch)
??? Error using ==> tf.tf at 251
The values of the "num" and "den" properties must be row vectors or cell arrays of row vectors, where each vector is
nonempty and containing numeric data. Type "ltiprops tf" for more information.Hi,
I’m creating a transfer function at higher order (to the degree of 80) by multiplication of many 2nd order transfer function. However, when I get this final transfer function, the result returned is NaN.
I suspect it is due to the precision error in MATLAB, and tried to use vpa commend. It didn’t solve the problem by giving errors.
Could anyone advise me a solution please? thank you.
Steven
num_bnotch=vpa([1 4*0.20*pi*19.5 (2*pi*20.04)^2]);
den_bnotch=vpa([1 4900.88 1.5855e+004]);
bnotch=tf(num_bnotch,den_bnotch)
??? Error using ==> tf.tf at 251
The values of the "num" and "den" properties must be row vectors or cell arrays of row vectors, where each vector is
nonempty and containing numeric data. Type "ltiprops tf" for more information. Hi,
I’m creating a transfer function at higher order (to the degree of 80) by multiplication of many 2nd order transfer function. However, when I get this final transfer function, the result returned is NaN.
I suspect it is due to the precision error in MATLAB, and tried to use vpa commend. It didn’t solve the problem by giving errors.
Could anyone advise me a solution please? thank you.
Steven
num_bnotch=vpa([1 4*0.20*pi*19.5 (2*pi*20.04)^2]);
den_bnotch=vpa([1 4900.88 1.5855e+004]);
bnotch=tf(num_bnotch,den_bnotch)
??? Error using ==> tf.tf at 251
The values of the "num" and "den" properties must be row vectors or cell arrays of row vectors, where each vector is
nonempty and containing numeric data. Type "ltiprops tf" for more information. transfer function, vpa, precision MATLAB Answers — New Questions
Derive full formula from fitlm(X,y,”quadratic”)
I have X which is a 258×6 double and y which is a 258×1 double. These are used to fit a model utilizing fitlm. I found the quadratic to yield the best results.
X = outTableNumeric{:, corr_ids}; % Using the most correlated features
y = outTableNumeric.target; % Target variabel
% Fit a linear regression model
mdl = fitlm(X, y, "quadratic");
However when I try to derive a formula to be deployed outside matlab I find it extremely obscure how I’m to combine the quadratic terms with the coefficients and so on?
I tried to make the formula programmatically but that is not working when I test the result on some row of X.
coefficients = mdl.Coefficients.Estimate;
% Extract the simple notation of the formula
intercept = coefficients(1);
formula = sprintf(‘%.2f’, intercept);
for i = 2:length(coefficients)
if coefficients(i) ~= 0
feature_indices = find(strcmp(mdl.CoefficientNames, mdl.CoefficientNames{i}));
feature_name = mdl.CoefficientNames{feature_indices(1)};
formula = sprintf(‘%s + %.2f * %s’, formula, coefficients(i), feature_name);
end
end
strrep(formula,’:’,’*’);
disp(‘Simple notation of the formula:’);
disp(formula);
Can you please help me extract the full equation?I have X which is a 258×6 double and y which is a 258×1 double. These are used to fit a model utilizing fitlm. I found the quadratic to yield the best results.
X = outTableNumeric{:, corr_ids}; % Using the most correlated features
y = outTableNumeric.target; % Target variabel
% Fit a linear regression model
mdl = fitlm(X, y, "quadratic");
However when I try to derive a formula to be deployed outside matlab I find it extremely obscure how I’m to combine the quadratic terms with the coefficients and so on?
I tried to make the formula programmatically but that is not working when I test the result on some row of X.
coefficients = mdl.Coefficients.Estimate;
% Extract the simple notation of the formula
intercept = coefficients(1);
formula = sprintf(‘%.2f’, intercept);
for i = 2:length(coefficients)
if coefficients(i) ~= 0
feature_indices = find(strcmp(mdl.CoefficientNames, mdl.CoefficientNames{i}));
feature_name = mdl.CoefficientNames{feature_indices(1)};
formula = sprintf(‘%s + %.2f * %s’, formula, coefficients(i), feature_name);
end
end
strrep(formula,’:’,’*’);
disp(‘Simple notation of the formula:’);
disp(formula);
Can you please help me extract the full equation? I have X which is a 258×6 double and y which is a 258×1 double. These are used to fit a model utilizing fitlm. I found the quadratic to yield the best results.
X = outTableNumeric{:, corr_ids}; % Using the most correlated features
y = outTableNumeric.target; % Target variabel
% Fit a linear regression model
mdl = fitlm(X, y, "quadratic");
However when I try to derive a formula to be deployed outside matlab I find it extremely obscure how I’m to combine the quadratic terms with the coefficients and so on?
I tried to make the formula programmatically but that is not working when I test the result on some row of X.
coefficients = mdl.Coefficients.Estimate;
% Extract the simple notation of the formula
intercept = coefficients(1);
formula = sprintf(‘%.2f’, intercept);
for i = 2:length(coefficients)
if coefficients(i) ~= 0
feature_indices = find(strcmp(mdl.CoefficientNames, mdl.CoefficientNames{i}));
feature_name = mdl.CoefficientNames{feature_indices(1)};
formula = sprintf(‘%s + %.2f * %s’, formula, coefficients(i), feature_name);
end
end
strrep(formula,’:’,’*’);
disp(‘Simple notation of the formula:’);
disp(formula);
Can you please help me extract the full equation? #fitlm MATLAB Answers — New Questions
GUI IN MATLAB 2021B, HOW TO SELSCT LISTBOX
HI
how i change the color map of figure in GUI by ListBox Items:{ jet hot cool …..} using GUIHI
how i change the color map of figure in GUI by ListBox Items:{ jet hot cool …..} using GUI HI
how i change the color map of figure in GUI by ListBox Items:{ jet hot cool …..} using GUI guide, gui, matlab gui, colormap, listbox, text, figure MATLAB Answers — New Questions
how to run simulink simulation from matlab script
hello i need to run simulink simulation from matlab, how to do it using matlab command in script ?hello i need to run simulink simulation from matlab, how to do it using matlab command in script ? hello i need to run simulink simulation from matlab, how to do it using matlab command in script ? simulink, run function MATLAB Answers — New Questions
How do I use objects with inheritance structures in a `parfor` loop in Matlab?
I am trying to parallelize a simulation that uses a custom library. Within the ‘parfor’ loop I am using, I receive the following error:
Error using sensor/readdata
Unrecognized field name "sensorDevice".
The object is an instance of Sensor that inherits its .sensorDevice field from its parent class. The method readdata calls on the inherited field. This works fine in a for loop. The transparency requirements for variable definitions and the corresponding documentation emphasize the ability of all variables to be machine-readable, but I do not follow why the parfor loop cannot trace the pointers to the parent classes’ fields and methods. Re-writing the class in a flattened structure is not an option due to the time that would be required to do so.
How do I use methods and fields from a parent class in an instance of a child class in a parfor loop?I am trying to parallelize a simulation that uses a custom library. Within the ‘parfor’ loop I am using, I receive the following error:
Error using sensor/readdata
Unrecognized field name "sensorDevice".
The object is an instance of Sensor that inherits its .sensorDevice field from its parent class. The method readdata calls on the inherited field. This works fine in a for loop. The transparency requirements for variable definitions and the corresponding documentation emphasize the ability of all variables to be machine-readable, but I do not follow why the parfor loop cannot trace the pointers to the parent classes’ fields and methods. Re-writing the class in a flattened structure is not an option due to the time that would be required to do so.
How do I use methods and fields from a parent class in an instance of a child class in a parfor loop? I am trying to parallelize a simulation that uses a custom library. Within the ‘parfor’ loop I am using, I receive the following error:
Error using sensor/readdata
Unrecognized field name "sensorDevice".
The object is an instance of Sensor that inherits its .sensorDevice field from its parent class. The method readdata calls on the inherited field. This works fine in a for loop. The transparency requirements for variable definitions and the corresponding documentation emphasize the ability of all variables to be machine-readable, but I do not follow why the parfor loop cannot trace the pointers to the parent classes’ fields and methods. Re-writing the class in a flattened structure is not an option due to the time that would be required to do so.
How do I use methods and fields from a parent class in an instance of a child class in a parfor loop? parfor, parallel computing MATLAB Answers — New Questions
Run Simulink Model via parsim() and save after each simulation
I am trying to run my simulink model in parallel while saving the results to a matfile after each simulation has completed.
Each worker should take the following action:
Simulate model with simIn( j )
Create matfile for above simulation
Repeate with simIn ( K ) until all simulations are complete.
The below code is my starting point. "test_model" is a simulink model of only a sin wave going into a gain, integrator, and to workspace block simply to test out parsim().
%% Example of how to run simulink models in parallel
clear; close all; clc;
mdl = "test_model";
amp= 1:10;
freq = 1:10;
nSims = length(amp);
simIn(1:nSims) = Simulink.SimulationInput(mdl);
% Setup model workspace
k = 5;
for i =1:nSims
nm = [num2str(i) ‘.mat’];
simIn(i) = setVariable(simIn(i), "amp", amp(i), ‘Workspace’, mdl);
simIn(i) = setVariable(simIn(i), "freq", freq(i), ‘Workspace’, mdl);
simIn(i) = setPostSimFcn(simIn(i), @(x)postSim(x, simIn(i), nm));
end
out = parsim (simIn, ‘UseFastRestart’,’on’, ‘TransferBaseWorkspaceVariables’,’on’);
function postSim(out, in, nm)
% postSim – Run @ completion of each simulation
% Saves simulation input, output, and name to file "nm"
m = matfile(nm, ‘Writable’, true);
m.out = out;
m.in = in;
m.nm = nm;
end
I understand that save() does not work as expected in parallel, so I’ve implemented the example from the question below as a method of creating my mat files. The above code works exactly as expected if "parsim" is replaced with "sim"; however, no files are created when using "parsim".
https://www.mathworks.com/matlabcentral/answers/135285-how-do-i-use-save-with-a-parfor-loop-using-parallel-computing-toolbox
Note: setting ‘TransferBaseWorkspaceVariables’ to ‘off’ and setting k via setVariable does not have any impact on this behavior.
Ask: How can I modify the above code to also work with the parsim command?I am trying to run my simulink model in parallel while saving the results to a matfile after each simulation has completed.
Each worker should take the following action:
Simulate model with simIn( j )
Create matfile for above simulation
Repeate with simIn ( K ) until all simulations are complete.
The below code is my starting point. "test_model" is a simulink model of only a sin wave going into a gain, integrator, and to workspace block simply to test out parsim().
%% Example of how to run simulink models in parallel
clear; close all; clc;
mdl = "test_model";
amp= 1:10;
freq = 1:10;
nSims = length(amp);
simIn(1:nSims) = Simulink.SimulationInput(mdl);
% Setup model workspace
k = 5;
for i =1:nSims
nm = [num2str(i) ‘.mat’];
simIn(i) = setVariable(simIn(i), "amp", amp(i), ‘Workspace’, mdl);
simIn(i) = setVariable(simIn(i), "freq", freq(i), ‘Workspace’, mdl);
simIn(i) = setPostSimFcn(simIn(i), @(x)postSim(x, simIn(i), nm));
end
out = parsim (simIn, ‘UseFastRestart’,’on’, ‘TransferBaseWorkspaceVariables’,’on’);
function postSim(out, in, nm)
% postSim – Run @ completion of each simulation
% Saves simulation input, output, and name to file "nm"
m = matfile(nm, ‘Writable’, true);
m.out = out;
m.in = in;
m.nm = nm;
end
I understand that save() does not work as expected in parallel, so I’ve implemented the example from the question below as a method of creating my mat files. The above code works exactly as expected if "parsim" is replaced with "sim"; however, no files are created when using "parsim".
https://www.mathworks.com/matlabcentral/answers/135285-how-do-i-use-save-with-a-parfor-loop-using-parallel-computing-toolbox
Note: setting ‘TransferBaseWorkspaceVariables’ to ‘off’ and setting k via setVariable does not have any impact on this behavior.
Ask: How can I modify the above code to also work with the parsim command? I am trying to run my simulink model in parallel while saving the results to a matfile after each simulation has completed.
Each worker should take the following action:
Simulate model with simIn( j )
Create matfile for above simulation
Repeate with simIn ( K ) until all simulations are complete.
The below code is my starting point. "test_model" is a simulink model of only a sin wave going into a gain, integrator, and to workspace block simply to test out parsim().
%% Example of how to run simulink models in parallel
clear; close all; clc;
mdl = "test_model";
amp= 1:10;
freq = 1:10;
nSims = length(amp);
simIn(1:nSims) = Simulink.SimulationInput(mdl);
% Setup model workspace
k = 5;
for i =1:nSims
nm = [num2str(i) ‘.mat’];
simIn(i) = setVariable(simIn(i), "amp", amp(i), ‘Workspace’, mdl);
simIn(i) = setVariable(simIn(i), "freq", freq(i), ‘Workspace’, mdl);
simIn(i) = setPostSimFcn(simIn(i), @(x)postSim(x, simIn(i), nm));
end
out = parsim (simIn, ‘UseFastRestart’,’on’, ‘TransferBaseWorkspaceVariables’,’on’);
function postSim(out, in, nm)
% postSim – Run @ completion of each simulation
% Saves simulation input, output, and name to file "nm"
m = matfile(nm, ‘Writable’, true);
m.out = out;
m.in = in;
m.nm = nm;
end
I understand that save() does not work as expected in parallel, so I’ve implemented the example from the question below as a method of creating my mat files. The above code works exactly as expected if "parsim" is replaced with "sim"; however, no files are created when using "parsim".
https://www.mathworks.com/matlabcentral/answers/135285-how-do-i-use-save-with-a-parfor-loop-using-parallel-computing-toolbox
Note: setting ‘TransferBaseWorkspaceVariables’ to ‘off’ and setting k via setVariable does not have any impact on this behavior.
Ask: How can I modify the above code to also work with the parsim command? simulink, parallel computing toolbox MATLAB Answers — New Questions
Controlled Voltage Source (Three-Phase)
After the three-phase voltage signal passes through the Controlled Voltage Source (Three-Phase), the amplitude becomes root three times the original value, and the phase also changes. But according to the module description:
Instantaneous — The output voltages, [va vb vc], are equal to the values of the input port S.
The signal input and output should be same..
Could anyone help me this question? Many thanks.After the three-phase voltage signal passes through the Controlled Voltage Source (Three-Phase), the amplitude becomes root three times the original value, and the phase also changes. But according to the module description:
Instantaneous — The output voltages, [va vb vc], are equal to the values of the input port S.
The signal input and output should be same..
Could anyone help me this question? Many thanks. After the three-phase voltage signal passes through the Controlled Voltage Source (Three-Phase), the amplitude becomes root three times the original value, and the phase also changes. But according to the module description:
Instantaneous — The output voltages, [va vb vc], are equal to the values of the input port S.
The signal input and output should be same..
Could anyone help me this question? Many thanks. controlled voltage source (three-phase) MATLAB Answers — New Questions
A struct in the workspace window consists of n (say 1000 or more) different variable names. How to quickly look for a variable name without any code?
I am having a struct data type that consists of 2000 different names of places with their avg temperatures . When I open the struct variable I get a huge list. How can I quickly locate the variable and read its values without scrolling down to every variable. I don’t see any find option in the window. One may say I can code it. Yes, I can do that but I am looking for alternative quick ways so that I don’t need to write the code to find it.I am having a struct data type that consists of 2000 different names of places with their avg temperatures . When I open the struct variable I get a huge list. How can I quickly locate the variable and read its values without scrolling down to every variable. I don’t see any find option in the window. One may say I can code it. Yes, I can do that but I am looking for alternative quick ways so that I don’t need to write the code to find it. I am having a struct data type that consists of 2000 different names of places with their avg temperatures . When I open the struct variable I get a huge list. How can I quickly locate the variable and read its values without scrolling down to every variable. I don’t see any find option in the window. One may say I can code it. Yes, I can do that but I am looking for alternative quick ways so that I don’t need to write the code to find it. quick variable search in struct variable window MATLAB Answers — New Questions
while writing script for automatic Model advisor check for a model , getting this error
Post Content Post Content automate model advisor, model advisor MATLAB Answers — New Questions
I need to create a polygon or buffer along an irregular shaped coastline in a 2D array of gridded sea temperature data.
I have a 578×235 grid of ocean temperature data in which the land pixels are NaN. I would like to create a 1 pixel buffer around the coastline so that all pixels adjacent to an existing NaN also become NaN. I’m unsure on the best way to do this. I thought I could create a logical array of NaNs and not NaNs but am not sure on the best way to extract a polygon and create the buffer after that step.I have a 578×235 grid of ocean temperature data in which the land pixels are NaN. I would like to create a 1 pixel buffer around the coastline so that all pixels adjacent to an existing NaN also become NaN. I’m unsure on the best way to do this. I thought I could create a logical array of NaNs and not NaNs but am not sure on the best way to extract a polygon and create the buffer after that step. I have a 578×235 grid of ocean temperature data in which the land pixels are NaN. I would like to create a 1 pixel buffer around the coastline so that all pixels adjacent to an existing NaN also become NaN. I’m unsure on the best way to do this. I thought I could create a logical array of NaNs and not NaNs but am not sure on the best way to extract a polygon and create the buffer after that step. extract polygon, buffer MATLAB Answers — New Questions
Training Data type error for a CNN using trainnet function
Trying to use a convolution1dLayer for my sequence input data put when I try to train it i get the error:
"Error using trainnet
Invalid targets. Network expects numeric or categorical targets, but received a cell array."
I’ve looked at many exemples of how the data must be structed but even if is in the same format, it doesn’t work.
For the predictors I’m doing a test with only 4 observations, each one with 4 features and 36191 points:
For the targets there are also for observations with only one target each and also 36191 points:
I can’t understand why it doesn’t accept it, like I said, its equal to many other exemples. I leave down here the code for the CNN-LSTM network and the trainnet function:
lgraph = layerGraph();
tempLayers = [
sequenceInputLayer(4,"Name","input")
convolution1dLayer(4,32,"Name","conv1d","Padding","same")
globalAveragePooling1dLayer("Name","gapool1d")];
lgraph = addLayers(lgraph,tempLayers);
tempLayers = lstmLayer(25,"Name","lstm");
lgraph = addLayers(lgraph,tempLayers);
tempLayers = lstmLayer(25,"Name","lstm_1");
lgraph = addLayers(lgraph,tempLayers);
tempLayers = [
concatenationLayer(1,2,"Name","concat")
lstmLayer(55,"Name","lstm_2")
dropoutLayer(0.5,"Name","drop")
fullyConnectedLayer(1,"Name","fc")
sigmoidLayer("Name","sigmoid")];
lgraph = addLayers(lgraph,tempLayers);
% clean up helper variable
clear tempLayers;
lgraph = connectLayers(lgraph,"gapool1d","lstm");
lgraph = connectLayers(lgraph,"gapool1d","lstm_1");
lgraph = connectLayers(lgraph,"lstm","concat/in1");
lgraph = connectLayers(lgraph,"lstm_1","concat/in2");
plot(lgraph);
epochs = 800;
miniBatchSize = 128;
LRDropPeriod = 200;
InitialLR = 0.01;
LRDropFactor = 0.1;
valFrequency = 30;
options = trainingOptions("adam", …
MaxEpochs=epochs, …
SequencePaddingDirection="left", …
Shuffle="every-epoch", …
GradientThreshold=1, …
InitialLearnRate=InitialLR, …
LearnRateSchedule="piecewise", …
LearnRateDropPeriod=LRDropPeriod, …
LearnRateDropFactor=LRDropFactor, …
MiniBatchSize=miniBatchSize, …
Plots="training-progress", …
Metrics="rmse", …
Verbose=0, …
ExecutionEnvironment="parallel");
CNN_LTSM = trainnet(trainDataX, trainDataY, dlnetwork(lgraph),"mse",options);
using version 2023bTrying to use a convolution1dLayer for my sequence input data put when I try to train it i get the error:
"Error using trainnet
Invalid targets. Network expects numeric or categorical targets, but received a cell array."
I’ve looked at many exemples of how the data must be structed but even if is in the same format, it doesn’t work.
For the predictors I’m doing a test with only 4 observations, each one with 4 features and 36191 points:
For the targets there are also for observations with only one target each and also 36191 points:
I can’t understand why it doesn’t accept it, like I said, its equal to many other exemples. I leave down here the code for the CNN-LSTM network and the trainnet function:
lgraph = layerGraph();
tempLayers = [
sequenceInputLayer(4,"Name","input")
convolution1dLayer(4,32,"Name","conv1d","Padding","same")
globalAveragePooling1dLayer("Name","gapool1d")];
lgraph = addLayers(lgraph,tempLayers);
tempLayers = lstmLayer(25,"Name","lstm");
lgraph = addLayers(lgraph,tempLayers);
tempLayers = lstmLayer(25,"Name","lstm_1");
lgraph = addLayers(lgraph,tempLayers);
tempLayers = [
concatenationLayer(1,2,"Name","concat")
lstmLayer(55,"Name","lstm_2")
dropoutLayer(0.5,"Name","drop")
fullyConnectedLayer(1,"Name","fc")
sigmoidLayer("Name","sigmoid")];
lgraph = addLayers(lgraph,tempLayers);
% clean up helper variable
clear tempLayers;
lgraph = connectLayers(lgraph,"gapool1d","lstm");
lgraph = connectLayers(lgraph,"gapool1d","lstm_1");
lgraph = connectLayers(lgraph,"lstm","concat/in1");
lgraph = connectLayers(lgraph,"lstm_1","concat/in2");
plot(lgraph);
epochs = 800;
miniBatchSize = 128;
LRDropPeriod = 200;
InitialLR = 0.01;
LRDropFactor = 0.1;
valFrequency = 30;
options = trainingOptions("adam", …
MaxEpochs=epochs, …
SequencePaddingDirection="left", …
Shuffle="every-epoch", …
GradientThreshold=1, …
InitialLearnRate=InitialLR, …
LearnRateSchedule="piecewise", …
LearnRateDropPeriod=LRDropPeriod, …
LearnRateDropFactor=LRDropFactor, …
MiniBatchSize=miniBatchSize, …
Plots="training-progress", …
Metrics="rmse", …
Verbose=0, …
ExecutionEnvironment="parallel");
CNN_LTSM = trainnet(trainDataX, trainDataY, dlnetwork(lgraph),"mse",options);
using version 2023b Trying to use a convolution1dLayer for my sequence input data put when I try to train it i get the error:
"Error using trainnet
Invalid targets. Network expects numeric or categorical targets, but received a cell array."
I’ve looked at many exemples of how the data must be structed but even if is in the same format, it doesn’t work.
For the predictors I’m doing a test with only 4 observations, each one with 4 features and 36191 points:
For the targets there are also for observations with only one target each and also 36191 points:
I can’t understand why it doesn’t accept it, like I said, its equal to many other exemples. I leave down here the code for the CNN-LSTM network and the trainnet function:
lgraph = layerGraph();
tempLayers = [
sequenceInputLayer(4,"Name","input")
convolution1dLayer(4,32,"Name","conv1d","Padding","same")
globalAveragePooling1dLayer("Name","gapool1d")];
lgraph = addLayers(lgraph,tempLayers);
tempLayers = lstmLayer(25,"Name","lstm");
lgraph = addLayers(lgraph,tempLayers);
tempLayers = lstmLayer(25,"Name","lstm_1");
lgraph = addLayers(lgraph,tempLayers);
tempLayers = [
concatenationLayer(1,2,"Name","concat")
lstmLayer(55,"Name","lstm_2")
dropoutLayer(0.5,"Name","drop")
fullyConnectedLayer(1,"Name","fc")
sigmoidLayer("Name","sigmoid")];
lgraph = addLayers(lgraph,tempLayers);
% clean up helper variable
clear tempLayers;
lgraph = connectLayers(lgraph,"gapool1d","lstm");
lgraph = connectLayers(lgraph,"gapool1d","lstm_1");
lgraph = connectLayers(lgraph,"lstm","concat/in1");
lgraph = connectLayers(lgraph,"lstm_1","concat/in2");
plot(lgraph);
epochs = 800;
miniBatchSize = 128;
LRDropPeriod = 200;
InitialLR = 0.01;
LRDropFactor = 0.1;
valFrequency = 30;
options = trainingOptions("adam", …
MaxEpochs=epochs, …
SequencePaddingDirection="left", …
Shuffle="every-epoch", …
GradientThreshold=1, …
InitialLearnRate=InitialLR, …
LearnRateSchedule="piecewise", …
LearnRateDropPeriod=LRDropPeriod, …
LearnRateDropFactor=LRDropFactor, …
MiniBatchSize=miniBatchSize, …
Plots="training-progress", …
Metrics="rmse", …
Verbose=0, …
ExecutionEnvironment="parallel");
CNN_LTSM = trainnet(trainDataX, trainDataY, dlnetwork(lgraph),"mse",options);
using version 2023b deep learning, cnn, data, neural network, machine learning MATLAB Answers — New Questions
How to plot cross quantile correltaion heatmap
How do I plot similar cross quantile correlation plotHow do I plot similar cross quantile correlation plot How do I plot similar cross quantile correlation plot heatmap, quantile, correlat MATLAB Answers — New Questions
i am trying to open matlab but it is showing “You dont have a valid license file”. It was working fine before.
i am trying to open matlab but it is showing "You dont have a valid license file". It was working fine before.i am trying to open matlab but it is showing "You dont have a valid license file". It was working fine before. i am trying to open matlab but it is showing "You dont have a valid license file". It was working fine before. valid license file MATLAB Answers — New Questions
py.list bug in R2024a
I believe I’m experiencing a bug in R2024a with py.list. After a clear all, I get the error No module or function named ‘list’.:
clear all;res = py.list({"Name1","Name2","Name3"});
In this interface, the code runs just fine. When I run it locally, I get this:
>> clear all;res = py.list({"Name1","Name2","Name3"})
No module or function named ‘list’.
I can get py.list to work again if I use another Python command. For example, this works:
>> handlers = py.logging.getLogger().handlers;
>> res = py.list({"Name1","Name2","Name3"});
>> clear all;res = py.list({"Name1","Name2","Name3"});
No module or function named ‘list’.
I’m running MATLAB Version: 24.1.0.2628055 (R2024a) Update 4. I cannot replicate on R2023b.I believe I’m experiencing a bug in R2024a with py.list. After a clear all, I get the error No module or function named ‘list’.:
clear all;res = py.list({"Name1","Name2","Name3"});
In this interface, the code runs just fine. When I run it locally, I get this:
>> clear all;res = py.list({"Name1","Name2","Name3"})
No module or function named ‘list’.
I can get py.list to work again if I use another Python command. For example, this works:
>> handlers = py.logging.getLogger().handlers;
>> res = py.list({"Name1","Name2","Name3"});
>> clear all;res = py.list({"Name1","Name2","Name3"});
No module or function named ‘list’.
I’m running MATLAB Version: 24.1.0.2628055 (R2024a) Update 4. I cannot replicate on R2023b. I believe I’m experiencing a bug in R2024a with py.list. After a clear all, I get the error No module or function named ‘list’.:
clear all;res = py.list({"Name1","Name2","Name3"});
In this interface, the code runs just fine. When I run it locally, I get this:
>> clear all;res = py.list({"Name1","Name2","Name3"})
No module or function named ‘list’.
I can get py.list to work again if I use another Python command. For example, this works:
>> handlers = py.logging.getLogger().handlers;
>> res = py.list({"Name1","Name2","Name3"});
>> clear all;res = py.list({"Name1","Name2","Name3"});
No module or function named ‘list’.
I’m running MATLAB Version: 24.1.0.2628055 (R2024a) Update 4. I cannot replicate on R2023b. python MATLAB Answers — New Questions
Fit meta data to a custom equation
Hello everyone,
I have been having trouble fitting a set of meta data (attached called IndiMSD) to this custom equation, doing fit to a custom equation and output parameters of the equation.
The first row of data points of x and y is zero, it will output Inf of NaN when do the fit. So I disgard all in x and y matrix.
now the x and y are below:
x_input = readmatrix(‘IndiMSD.xlsx’);
x = x_input(2:end,:); % first zero rows are disgarded, now x is 96 by 112, instead of 97 by 112
y = 15:15:1440;% first zero data point is disgarded, now y is 96 by 1
I want to fit each paif of column of x with y as above. For example, x(:,1) will be fitted with y, output its own S, P value with goodness of fit; , x(:,2) fits with y, output its own S, P value with goodness of fit, and so on until the last column. All fitted results of S, P and goodness of fit will be stored in separate matrice.
The fitted equation is
y = 2*((S^2)*(P^2)) * ((x./P) – 1 + exp(-(x./P)));
I really appreciate it if anyone has some ideas of how to do it.Hello everyone,
I have been having trouble fitting a set of meta data (attached called IndiMSD) to this custom equation, doing fit to a custom equation and output parameters of the equation.
The first row of data points of x and y is zero, it will output Inf of NaN when do the fit. So I disgard all in x and y matrix.
now the x and y are below:
x_input = readmatrix(‘IndiMSD.xlsx’);
x = x_input(2:end,:); % first zero rows are disgarded, now x is 96 by 112, instead of 97 by 112
y = 15:15:1440;% first zero data point is disgarded, now y is 96 by 1
I want to fit each paif of column of x with y as above. For example, x(:,1) will be fitted with y, output its own S, P value with goodness of fit; , x(:,2) fits with y, output its own S, P value with goodness of fit, and so on until the last column. All fitted results of S, P and goodness of fit will be stored in separate matrice.
The fitted equation is
y = 2*((S^2)*(P^2)) * ((x./P) – 1 + exp(-(x./P)));
I really appreciate it if anyone has some ideas of how to do it. Hello everyone,
I have been having trouble fitting a set of meta data (attached called IndiMSD) to this custom equation, doing fit to a custom equation and output parameters of the equation.
The first row of data points of x and y is zero, it will output Inf of NaN when do the fit. So I disgard all in x and y matrix.
now the x and y are below:
x_input = readmatrix(‘IndiMSD.xlsx’);
x = x_input(2:end,:); % first zero rows are disgarded, now x is 96 by 112, instead of 97 by 112
y = 15:15:1440;% first zero data point is disgarded, now y is 96 by 1
I want to fit each paif of column of x with y as above. For example, x(:,1) will be fitted with y, output its own S, P value with goodness of fit; , x(:,2) fits with y, output its own S, P value with goodness of fit, and so on until the last column. All fitted results of S, P and goodness of fit will be stored in separate matrice.
The fitted equation is
y = 2*((S^2)*(P^2)) * ((x./P) – 1 + exp(-(x./P)));
I really appreciate it if anyone has some ideas of how to do it. nonlinear, curve fitting MATLAB Answers — New Questions
VideoReader: Unrecognized function or variable ‘hasFrame’
I am following the VideoReader documentation from https://www.mathworks.com/help/matlab/ref/videoreader.html
When I try to run the example code using R2024a Update 5,
currAxes = axes;
v = VideoReader("xylophone_video.mp4");
while hasFrame(v)
vidFrame = readFrame(v);
image(vidFrame,"Parent",currAxes)
currAxes.Visible = "off";
pause(1/v.FrameRate)
end
the line with while hasFrame(v) throws an error: Unrecognized function or variable ‘hasFrame’.
The VideoReader object was created, but the hasFrame(v) line does not work. Was support for this function removed? If so, what replaced it?I am following the VideoReader documentation from https://www.mathworks.com/help/matlab/ref/videoreader.html
When I try to run the example code using R2024a Update 5,
currAxes = axes;
v = VideoReader("xylophone_video.mp4");
while hasFrame(v)
vidFrame = readFrame(v);
image(vidFrame,"Parent",currAxes)
currAxes.Visible = "off";
pause(1/v.FrameRate)
end
the line with while hasFrame(v) throws an error: Unrecognized function or variable ‘hasFrame’.
The VideoReader object was created, but the hasFrame(v) line does not work. Was support for this function removed? If so, what replaced it? I am following the VideoReader documentation from https://www.mathworks.com/help/matlab/ref/videoreader.html
When I try to run the example code using R2024a Update 5,
currAxes = axes;
v = VideoReader("xylophone_video.mp4");
while hasFrame(v)
vidFrame = readFrame(v);
image(vidFrame,"Parent",currAxes)
currAxes.Visible = "off";
pause(1/v.FrameRate)
end
the line with while hasFrame(v) throws an error: Unrecognized function or variable ‘hasFrame’.
The VideoReader object was created, but the hasFrame(v) line does not work. Was support for this function removed? If so, what replaced it? video processing MATLAB Answers — New Questions
Matlab Custom Add-On disappearing from Add-On list after restarting the Matlab instant
Hi,
I am working with custom Matlab add-on (simulink toolbox) which I tried installing (with/without admin access), but everytime I close the Matlab and reopen the new instance I lose that add-on from add-on list that also mean I am not able to use those custom toolboxes.
Please note I still see the custom add-on installation present on the disk at following folder.
Users<user.name>AppDataRoamingMathWorksMATLAB Add-OnsToolboxes<<CustomToolBox>>
Does anyone know what is the resolution to this?Hi,
I am working with custom Matlab add-on (simulink toolbox) which I tried installing (with/without admin access), but everytime I close the Matlab and reopen the new instance I lose that add-on from add-on list that also mean I am not able to use those custom toolboxes.
Please note I still see the custom add-on installation present on the disk at following folder.
Users<user.name>AppDataRoamingMathWorksMATLAB Add-OnsToolboxes<<CustomToolBox>>
Does anyone know what is the resolution to this? Hi,
I am working with custom Matlab add-on (simulink toolbox) which I tried installing (with/without admin access), but everytime I close the Matlab and reopen the new instance I lose that add-on from add-on list that also mean I am not able to use those custom toolboxes.
Please note I still see the custom add-on installation present on the disk at following folder.
Users<user.name>AppDataRoamingMathWorksMATLAB Add-OnsToolboxes<<CustomToolBox>>
Does anyone know what is the resolution to this? simulink toolbox, add on MATLAB Answers — New Questions
How do I pull data from multiple excel spreadsheets located in the same folder?
Hello!
I’m trying to record a specific data point from multiple excel files that are located in the same folder and dump them into their own table.
To elaborate, I have thousands of excel files all under the path ‘C:UsersMeDataFiles’. I want to open each file, take the data from cell M18, and put it into its own table with all the data points.
I currently have a line using the readmatrix function and I’m able to read just the first file in the folder, but nothing else. I already have a table populated with serial number information, so I get an error that the table variables must have the same number of rows.
Any help would be greatly appreciated, thank you!Hello!
I’m trying to record a specific data point from multiple excel files that are located in the same folder and dump them into their own table.
To elaborate, I have thousands of excel files all under the path ‘C:UsersMeDataFiles’. I want to open each file, take the data from cell M18, and put it into its own table with all the data points.
I currently have a line using the readmatrix function and I’m able to read just the first file in the folder, but nothing else. I already have a table populated with serial number information, so I get an error that the table variables must have the same number of rows.
Any help would be greatly appreciated, thank you! Hello!
I’m trying to record a specific data point from multiple excel files that are located in the same folder and dump them into their own table.
To elaborate, I have thousands of excel files all under the path ‘C:UsersMeDataFiles’. I want to open each file, take the data from cell M18, and put it into its own table with all the data points.
I currently have a line using the readmatrix function and I’m able to read just the first file in the folder, but nothing else. I already have a table populated with serial number information, so I get an error that the table variables must have the same number of rows.
Any help would be greatly appreciated, thank you! importing excel data MATLAB Answers — New Questions
How do I solve the construct marices of multiple variables and plot a graph
I am a beginner to MATLAB.
I tried but I’m getting errors.
Anybody, kindly help. Thank you.
Equations dx/dt=-2x
dy/dt=2x
Initial condition: x(t=0)=100
y(t=0)=0
tspan=[0 3];
x0=100;
y0=0;
dzdt = (dxdt dydt);
[tSol, zSol]=ode45(@odefun,tspan,x0);
plot(tSol, zSol);
function dzdt=odefun(t,z)
x = z(1);
y = z(2);
dxdt = -2*x;
dydt = 2*x;
dzdt = [dxdt;dydt];
endI am a beginner to MATLAB.
I tried but I’m getting errors.
Anybody, kindly help. Thank you.
Equations dx/dt=-2x
dy/dt=2x
Initial condition: x(t=0)=100
y(t=0)=0
tspan=[0 3];
x0=100;
y0=0;
dzdt = (dxdt dydt);
[tSol, zSol]=ode45(@odefun,tspan,x0);
plot(tSol, zSol);
function dzdt=odefun(t,z)
x = z(1);
y = z(2);
dxdt = -2*x;
dydt = 2*x;
dzdt = [dxdt;dydt];
end I am a beginner to MATLAB.
I tried but I’m getting errors.
Anybody, kindly help. Thank you.
Equations dx/dt=-2x
dy/dt=2x
Initial condition: x(t=0)=100
y(t=0)=0
tspan=[0 3];
x0=100;
y0=0;
dzdt = (dxdt dydt);
[tSol, zSol]=ode45(@odefun,tspan,x0);
plot(tSol, zSol);
function dzdt=odefun(t,z)
x = z(1);
y = z(2);
dxdt = -2*x;
dydt = 2*x;
dzdt = [dxdt;dydt];
end ode MATLAB Answers — New Questions