Tag Archives: matlab
How to Run raytrace or siteviewer related program in Parallel Computing Toolbox?
I am attempting to simulate coverage for different ‘txsites’ across various osm maps, aiming to expedite the process through parallelization. However, it appears that ‘siteviewer’ is not compatible with the Parallel Computing Toolbox.
1. I tried to create a ‘siteviewer’ object within a parallel loop:
pm = propagationModel("raytracing", …
"Method", "sbr", …
"MaxNumReflections", 5);
osmMaps = ["hongkong.osm","chicago.osm","manhattan.osm"];
lats = [22.27,41.87,40.71];
lons = [114.15,-87.63,-74.00];
parfor i=1:3
viewer = siteviewer(‘Buildings’, osmMaps(i), ‘Terrain’, "none", ‘Basemap’, "darkwater");
txs = txsite(Latitude=lats(i),Longitude=lons(i));
pd = coverage(txs, pm, ‘Map’, viewer);
disp(pd);
close(viewer);
end
The above code resulted in the following error: Error using siteviewer, Timeout waiting for response. Despite adjusting several initialization parameters, the error persisted. When I changed ‘parfor’ to ‘for’, the program ran without any errors. My understanding is that ‘siteviewer’ objects cannot be created within ‘parfor’.
2. Consequently, I altered my parallelization strategy by creating the ‘siteviewer’ object in advance and referencing it within the ‘parfor’ loop:
viewer = siteviewer(‘Buildings’, ‘hongkong.osm’, ‘Terrain’, "none", ‘Basemap’, "darkwater");
lats = [22.27,22.273,22.275];
lons = [114.15,114.152,114.154];
parfor i = 1:3
txs = txsite(Latitude=lats(i),Longitude=lons(i)); % Each iteration, ‘txs’ are at different locations.
pd = coverage(txs, pm, ‘Map’, viewer);
end
close(viewer);
Referencing the ‘viewer’ object within ‘parfor’ still led to errors.
Output: Warning: While loading an object of class ‘siteviewer’:
Variables of this type are not subscriptable using dot indexing.
3. Further,I examined the source code of the ‘coverage’ function and debugged the parallel code.
viewer = siteviewer(‘Buildings’, ‘hongkong’, ‘Terrain’, "none", ‘Basemap’, "darkwater");
future = parfeval(@()viewer, 1); % Assuming ‘viewer’ is already created.
[~, thisResult] = fetchNext([future]);
% Output: Warning: While loading an object of class ‘siteviewer’:
% Variables of this type are not subscriptable using dot indexing.
future = parfeval(@()siteviewer.all, 1); % Assuming existing ‘siteviewer’ objects.
[~, thisResult] = fetchNext([future]);
% Output: thisResult = 0x0 cell
future = parfeval(@()siteviewer.current, 1); % Assuming existing ‘siteviewer’ objects.
[~, thisResult] = fetchNext([future]);
%Output: error using siteviewer, Timeout waiting for response.
I am puzzled, as the computation for Ray Tracing is slow, cannot be expedited using GPU acceleration, nor can it utilize the Parallel Computing Toolbox, resulting in low efficiency. Is there any solution to run ‘coverage’ in parallel?
I have consulted many Q&As, including the following: answer_link
However, this Answer is evidently incorrect; the 1000 rays within a cell are identical, failing to achieve parallel acceleration, and moreover, the rays were computed incorrectly. Based on the issues I’ve encountered, ‘raytrace’ in a parallel loop is unable to access previously created ‘viewer’ objects, and the ‘Map’ in ‘raytrace(tx,rx)’ differs from the one I defined, leading to incorrect results.I am attempting to simulate coverage for different ‘txsites’ across various osm maps, aiming to expedite the process through parallelization. However, it appears that ‘siteviewer’ is not compatible with the Parallel Computing Toolbox.
1. I tried to create a ‘siteviewer’ object within a parallel loop:
pm = propagationModel("raytracing", …
"Method", "sbr", …
"MaxNumReflections", 5);
osmMaps = ["hongkong.osm","chicago.osm","manhattan.osm"];
lats = [22.27,41.87,40.71];
lons = [114.15,-87.63,-74.00];
parfor i=1:3
viewer = siteviewer(‘Buildings’, osmMaps(i), ‘Terrain’, "none", ‘Basemap’, "darkwater");
txs = txsite(Latitude=lats(i),Longitude=lons(i));
pd = coverage(txs, pm, ‘Map’, viewer);
disp(pd);
close(viewer);
end
The above code resulted in the following error: Error using siteviewer, Timeout waiting for response. Despite adjusting several initialization parameters, the error persisted. When I changed ‘parfor’ to ‘for’, the program ran without any errors. My understanding is that ‘siteviewer’ objects cannot be created within ‘parfor’.
2. Consequently, I altered my parallelization strategy by creating the ‘siteviewer’ object in advance and referencing it within the ‘parfor’ loop:
viewer = siteviewer(‘Buildings’, ‘hongkong.osm’, ‘Terrain’, "none", ‘Basemap’, "darkwater");
lats = [22.27,22.273,22.275];
lons = [114.15,114.152,114.154];
parfor i = 1:3
txs = txsite(Latitude=lats(i),Longitude=lons(i)); % Each iteration, ‘txs’ are at different locations.
pd = coverage(txs, pm, ‘Map’, viewer);
end
close(viewer);
Referencing the ‘viewer’ object within ‘parfor’ still led to errors.
Output: Warning: While loading an object of class ‘siteviewer’:
Variables of this type are not subscriptable using dot indexing.
3. Further,I examined the source code of the ‘coverage’ function and debugged the parallel code.
viewer = siteviewer(‘Buildings’, ‘hongkong’, ‘Terrain’, "none", ‘Basemap’, "darkwater");
future = parfeval(@()viewer, 1); % Assuming ‘viewer’ is already created.
[~, thisResult] = fetchNext([future]);
% Output: Warning: While loading an object of class ‘siteviewer’:
% Variables of this type are not subscriptable using dot indexing.
future = parfeval(@()siteviewer.all, 1); % Assuming existing ‘siteviewer’ objects.
[~, thisResult] = fetchNext([future]);
% Output: thisResult = 0x0 cell
future = parfeval(@()siteviewer.current, 1); % Assuming existing ‘siteviewer’ objects.
[~, thisResult] = fetchNext([future]);
%Output: error using siteviewer, Timeout waiting for response.
I am puzzled, as the computation for Ray Tracing is slow, cannot be expedited using GPU acceleration, nor can it utilize the Parallel Computing Toolbox, resulting in low efficiency. Is there any solution to run ‘coverage’ in parallel?
I have consulted many Q&As, including the following: answer_link
However, this Answer is evidently incorrect; the 1000 rays within a cell are identical, failing to achieve parallel acceleration, and moreover, the rays were computed incorrectly. Based on the issues I’ve encountered, ‘raytrace’ in a parallel loop is unable to access previously created ‘viewer’ objects, and the ‘Map’ in ‘raytrace(tx,rx)’ differs from the one I defined, leading to incorrect results. I am attempting to simulate coverage for different ‘txsites’ across various osm maps, aiming to expedite the process through parallelization. However, it appears that ‘siteviewer’ is not compatible with the Parallel Computing Toolbox.
1. I tried to create a ‘siteviewer’ object within a parallel loop:
pm = propagationModel("raytracing", …
"Method", "sbr", …
"MaxNumReflections", 5);
osmMaps = ["hongkong.osm","chicago.osm","manhattan.osm"];
lats = [22.27,41.87,40.71];
lons = [114.15,-87.63,-74.00];
parfor i=1:3
viewer = siteviewer(‘Buildings’, osmMaps(i), ‘Terrain’, "none", ‘Basemap’, "darkwater");
txs = txsite(Latitude=lats(i),Longitude=lons(i));
pd = coverage(txs, pm, ‘Map’, viewer);
disp(pd);
close(viewer);
end
The above code resulted in the following error: Error using siteviewer, Timeout waiting for response. Despite adjusting several initialization parameters, the error persisted. When I changed ‘parfor’ to ‘for’, the program ran without any errors. My understanding is that ‘siteviewer’ objects cannot be created within ‘parfor’.
2. Consequently, I altered my parallelization strategy by creating the ‘siteviewer’ object in advance and referencing it within the ‘parfor’ loop:
viewer = siteviewer(‘Buildings’, ‘hongkong.osm’, ‘Terrain’, "none", ‘Basemap’, "darkwater");
lats = [22.27,22.273,22.275];
lons = [114.15,114.152,114.154];
parfor i = 1:3
txs = txsite(Latitude=lats(i),Longitude=lons(i)); % Each iteration, ‘txs’ are at different locations.
pd = coverage(txs, pm, ‘Map’, viewer);
end
close(viewer);
Referencing the ‘viewer’ object within ‘parfor’ still led to errors.
Output: Warning: While loading an object of class ‘siteviewer’:
Variables of this type are not subscriptable using dot indexing.
3. Further,I examined the source code of the ‘coverage’ function and debugged the parallel code.
viewer = siteviewer(‘Buildings’, ‘hongkong’, ‘Terrain’, "none", ‘Basemap’, "darkwater");
future = parfeval(@()viewer, 1); % Assuming ‘viewer’ is already created.
[~, thisResult] = fetchNext([future]);
% Output: Warning: While loading an object of class ‘siteviewer’:
% Variables of this type are not subscriptable using dot indexing.
future = parfeval(@()siteviewer.all, 1); % Assuming existing ‘siteviewer’ objects.
[~, thisResult] = fetchNext([future]);
% Output: thisResult = 0x0 cell
future = parfeval(@()siteviewer.current, 1); % Assuming existing ‘siteviewer’ objects.
[~, thisResult] = fetchNext([future]);
%Output: error using siteviewer, Timeout waiting for response.
I am puzzled, as the computation for Ray Tracing is slow, cannot be expedited using GPU acceleration, nor can it utilize the Parallel Computing Toolbox, resulting in low efficiency. Is there any solution to run ‘coverage’ in parallel?
I have consulted many Q&As, including the following: answer_link
However, this Answer is evidently incorrect; the 1000 rays within a cell are identical, failing to achieve parallel acceleration, and moreover, the rays were computed incorrectly. Based on the issues I’ve encountered, ‘raytrace’ in a parallel loop is unable to access previously created ‘viewer’ objects, and the ‘Map’ in ‘raytrace(tx,rx)’ differs from the one I defined, leading to incorrect results. coverage, parallel computing, siteviewer, raytrace, propagation and channel models MATLAB Answers — New Questions
Issue with slanted y-axis ticks when using UIAxes component in app designer.
Hi,
I’m attempting to create a MATLAB app that displays a 2D plot but I’m intermittently having issues with the Y-axis tick when inserting a UIAxes plot.
It only seems to happen for certain combinations of x and y data. My guess is it has something to do with how the UIAxes supports all 3 axis. For some reason there isn’t an option to lock the UIAxes into a 2d format what I can tell.
I’ve tried programmatically resetting the viewing angle after plotting but that doesn’t seem to fix it.
Here is the code I’m using to plot:
plot(Ax,X,Y,’-k’);
view(Ax, 0, 90);
grid(Ax,’minor’);
Any help would be much appreciated.Hi,
I’m attempting to create a MATLAB app that displays a 2D plot but I’m intermittently having issues with the Y-axis tick when inserting a UIAxes plot.
It only seems to happen for certain combinations of x and y data. My guess is it has something to do with how the UIAxes supports all 3 axis. For some reason there isn’t an option to lock the UIAxes into a 2d format what I can tell.
I’ve tried programmatically resetting the viewing angle after plotting but that doesn’t seem to fix it.
Here is the code I’m using to plot:
plot(Ax,X,Y,’-k’);
view(Ax, 0, 90);
grid(Ax,’minor’);
Any help would be much appreciated. Hi,
I’m attempting to create a MATLAB app that displays a 2D plot but I’m intermittently having issues with the Y-axis tick when inserting a UIAxes plot.
It only seems to happen for certain combinations of x and y data. My guess is it has something to do with how the UIAxes supports all 3 axis. For some reason there isn’t an option to lock the UIAxes into a 2d format what I can tell.
I’ve tried programmatically resetting the viewing angle after plotting but that doesn’t seem to fix it.
Here is the code I’m using to plot:
plot(Ax,X,Y,’-k’);
view(Ax, 0, 90);
grid(Ax,’minor’);
Any help would be much appreciated. app designer, plotting MATLAB Answers — New Questions
License Error while running Yolov4 object detector
I’m getting the following error message once I run the Yolov4 object detector. Also, the training data is not saved.
Error using vision.internal.cnn.validation.checkDetectionInputImage
License checkout failed.
License Manager Error -15
Unable to connect to the license server.
Check that the network license manager has been started, and that the client machine can communicate with the license server.
Troubleshoot this issue by visiting:
https://www.mathworks.com/support/lme/15
Diagnostic Information:
Feature: Video_and_Image_Blockset
License path:
Licensing error: -15,0.
Error in yolov4ObjectDetector/parseDetectInputs (line 649)
[sz,params.DetectionInputWasBatchOfImages] = vision.internal.cnn.validation.checkDetectionInputImage(…
Error in yolov4ObjectDetector/detect (line 440)
params = parseDetectInputs(detector,I,varargin{:});
How to resolve this issue.I’m getting the following error message once I run the Yolov4 object detector. Also, the training data is not saved.
Error using vision.internal.cnn.validation.checkDetectionInputImage
License checkout failed.
License Manager Error -15
Unable to connect to the license server.
Check that the network license manager has been started, and that the client machine can communicate with the license server.
Troubleshoot this issue by visiting:
https://www.mathworks.com/support/lme/15
Diagnostic Information:
Feature: Video_and_Image_Blockset
License path:
Licensing error: -15,0.
Error in yolov4ObjectDetector/parseDetectInputs (line 649)
[sz,params.DetectionInputWasBatchOfImages] = vision.internal.cnn.validation.checkDetectionInputImage(…
Error in yolov4ObjectDetector/detect (line 440)
params = parseDetectInputs(detector,I,varargin{:});
How to resolve this issue. I’m getting the following error message once I run the Yolov4 object detector. Also, the training data is not saved.
Error using vision.internal.cnn.validation.checkDetectionInputImage
License checkout failed.
License Manager Error -15
Unable to connect to the license server.
Check that the network license manager has been started, and that the client machine can communicate with the license server.
Troubleshoot this issue by visiting:
https://www.mathworks.com/support/lme/15
Diagnostic Information:
Feature: Video_and_Image_Blockset
License path:
Licensing error: -15,0.
Error in yolov4ObjectDetector/parseDetectInputs (line 649)
[sz,params.DetectionInputWasBatchOfImages] = vision.internal.cnn.validation.checkDetectionInputImage(…
Error in yolov4ObjectDetector/detect (line 440)
params = parseDetectInputs(detector,I,varargin{:});
How to resolve this issue. image processing, license, video and image blockset MATLAB Answers — New Questions
I want to change the default UAV dynamics to the quadcopter to F450.
Good Day!
I want to change the model of the quadcopter to F450. I have changed the Ix, Iy,Iz and mass of the default UAV dynamic model used in https://ww2.mathworks.cn/help/uav/px4/ref/hitl-simulink-plant-example.html. But this is not working for me. Could you please guide, how should i completely change the model dynamics for F450.Good Day!
I want to change the model of the quadcopter to F450. I have changed the Ix, Iy,Iz and mass of the default UAV dynamic model used in https://ww2.mathworks.cn/help/uav/px4/ref/hitl-simulink-plant-example.html. But this is not working for me. Could you please guide, how should i completely change the model dynamics for F450. Good Day!
I want to change the model of the quadcopter to F450. I have changed the Ix, Iy,Iz and mass of the default UAV dynamic model used in https://ww2.mathworks.cn/help/uav/px4/ref/hitl-simulink-plant-example.html. But this is not working for me. Could you please guide, how should i completely change the model dynamics for F450. uav dynamics, f450 MATLAB Answers — New Questions
I need a link and password to the MATLAB software accompanying the text Business Finance and Economics with MATLAB
request for software linkrequest for software link request for software link business, economics MATLAB Answers — New Questions
How to use YOLOv7 ONNX model on MATLAB2023b ?
Hello. I am doing a study on strawberry detection using MATLAB.
I am considering using YOLOv7 for object detection, but MATLAB only supports up to yolov4.
Therefore, I would like to convert the best.pt trained with yolov7 to ONNX format and use it in MATLAB using the " importNetworkFromONNX" function,
is this possible?
Please reply.Hello. I am doing a study on strawberry detection using MATLAB.
I am considering using YOLOv7 for object detection, but MATLAB only supports up to yolov4.
Therefore, I would like to convert the best.pt trained with yolov7 to ONNX format and use it in MATLAB using the " importNetworkFromONNX" function,
is this possible?
Please reply. Hello. I am doing a study on strawberry detection using MATLAB.
I am considering using YOLOv7 for object detection, but MATLAB only supports up to yolov4.
Therefore, I would like to convert the best.pt trained with yolov7 to ONNX format and use it in MATLAB using the " importNetworkFromONNX" function,
is this possible?
Please reply. yolov7 MATLAB Answers — New Questions
problem in curve fitting
hey,guys
Recently I am learning the PSO algorithm, I use the spline curve interpolation that comes with matlab to get a set of smooth data of x, y, z, and I want to fit them with some arcs to apply to my environment。
How do I fit discrete points with arcs of fixed curvature and make these arcs G1 continuous?Is there a difference between two-dimensional and three-dimensional environments?hey,guys
Recently I am learning the PSO algorithm, I use the spline curve interpolation that comes with matlab to get a set of smooth data of x, y, z, and I want to fit them with some arcs to apply to my environment。
How do I fit discrete points with arcs of fixed curvature and make these arcs G1 continuous?Is there a difference between two-dimensional and three-dimensional environments? hey,guys
Recently I am learning the PSO algorithm, I use the spline curve interpolation that comes with matlab to get a set of smooth data of x, y, z, and I want to fit them with some arcs to apply to my environment。
How do I fit discrete points with arcs of fixed curvature and make these arcs G1 continuous?Is there a difference between two-dimensional and three-dimensional environments? curve fitting MATLAB Answers — New Questions
How to do I get the standard deviation from an eeg input signal in SImulink?
Hello I’m trying to make a function block that calculates standard deviation of the signal, as the standard deviation blocks do not give me the standard deviation of the SIMULINK signal (they either give me 0 or say it needs discrete values). However that doesnt work either, is there a way for me to get the standard deviationl? I want to equal the signal to 0 if the sdv is higher than a certain value.
I’ve tried the following but it isn’t working.
function y = fcn(u)
std(u)
y = std(u)
end
my input is an eeg signal taken from the workspace using "from workspace" (simin)Hello I’m trying to make a function block that calculates standard deviation of the signal, as the standard deviation blocks do not give me the standard deviation of the SIMULINK signal (they either give me 0 or say it needs discrete values). However that doesnt work either, is there a way for me to get the standard deviationl? I want to equal the signal to 0 if the sdv is higher than a certain value.
I’ve tried the following but it isn’t working.
function y = fcn(u)
std(u)
y = std(u)
end
my input is an eeg signal taken from the workspace using "from workspace" (simin) Hello I’m trying to make a function block that calculates standard deviation of the signal, as the standard deviation blocks do not give me the standard deviation of the SIMULINK signal (they either give me 0 or say it needs discrete values). However that doesnt work either, is there a way for me to get the standard deviationl? I want to equal the signal to 0 if the sdv is higher than a certain value.
I’ve tried the following but it isn’t working.
function y = fcn(u)
std(u)
y = std(u)
end
my input is an eeg signal taken from the workspace using "from workspace" (simin) simulink, signal processing MATLAB Answers — New Questions
Display script comment as contents in MATLAB “Script Editor”, instead of “Current Folder” script overview
The purpose is to view, check, click and link to script lines, with comment label by %%.
In "Current Folder", when a *.m script file is selected, this overview shown on the bottom of the current folder view section realizes what I need. I call the comments labeled by %% as "key comments".
But whenever I have some changes, and save the script, this key comments overview is refreshed and jumped back to the top. This becomes inconvenience when I have a lot of key comments, and when I am editing bottom part of my script. Every time I save the script, the overview jumps back to top, and I have to scroll down and look for my editing part labeled by the corresponding key comment.
I am guessing this overview in the current folder section was not primarily deisgned for my usage case. Is there an alternative way to show and linked to the key comments in my script?
Picture #1: key comment overview in current folder descriptiong
Picture #2: ok case, before script (with changes) is saved
Picture #3: NOK case, after I save the script
Thanks and best regards,
ZhengThe purpose is to view, check, click and link to script lines, with comment label by %%.
In "Current Folder", when a *.m script file is selected, this overview shown on the bottom of the current folder view section realizes what I need. I call the comments labeled by %% as "key comments".
But whenever I have some changes, and save the script, this key comments overview is refreshed and jumped back to the top. This becomes inconvenience when I have a lot of key comments, and when I am editing bottom part of my script. Every time I save the script, the overview jumps back to top, and I have to scroll down and look for my editing part labeled by the corresponding key comment.
I am guessing this overview in the current folder section was not primarily deisgned for my usage case. Is there an alternative way to show and linked to the key comments in my script?
Picture #1: key comment overview in current folder descriptiong
Picture #2: ok case, before script (with changes) is saved
Picture #3: NOK case, after I save the script
Thanks and best regards,
Zheng The purpose is to view, check, click and link to script lines, with comment label by %%.
In "Current Folder", when a *.m script file is selected, this overview shown on the bottom of the current folder view section realizes what I need. I call the comments labeled by %% as "key comments".
But whenever I have some changes, and save the script, this key comments overview is refreshed and jumped back to the top. This becomes inconvenience when I have a lot of key comments, and when I am editing bottom part of my script. Every time I save the script, the overview jumps back to top, and I have to scroll down and look for my editing part labeled by the corresponding key comment.
I am guessing this overview in the current folder section was not primarily deisgned for my usage case. Is there an alternative way to show and linked to the key comments in my script?
Picture #1: key comment overview in current folder descriptiong
Picture #2: ok case, before script (with changes) is saved
Picture #3: NOK case, after I save the script
Thanks and best regards,
Zheng script MATLAB Answers — New Questions
Is there a way to use fill with animatedline?
I’m generating animations consisiting of various closed curves (tiles) moving about each other. I’m presently using animated line to accomplish this, but I would like to try using diffeerent colors for the individual tiles. I cannot find any way to fill them in the context of the animated line, so I’m asking if it’s possible.I’m generating animations consisiting of various closed curves (tiles) moving about each other. I’m presently using animated line to accomplish this, but I would like to try using diffeerent colors for the individual tiles. I cannot find any way to fill them in the context of the animated line, so I’m asking if it’s possible. I’m generating animations consisiting of various closed curves (tiles) moving about each other. I’m presently using animated line to accomplish this, but I would like to try using diffeerent colors for the individual tiles. I cannot find any way to fill them in the context of the animated line, so I’m asking if it’s possible. fill, animatedline MATLAB Answers — New Questions
My script can run but every time it is published it is a blank
% Load Dry Bean Dataset
dryBeanData = readtable(‘D:MATLABFinal ProjectDry_Bean_Dataset.csv’);
% Extract features and labels from the dryBeanData table
data = table2array(dryBeanData(:, 1:16)); % Adjust column indices if needed
labels = dryBeanData{:, 17}; % Assuming the 17th column contains labels
labels = categorical(labels);
% Ensure the data and labels match in size
if size(data, 1) ~= numel(labels)
error(‘Mismatch between the number of rows in data and the number of labels.’);
end
% Set the number of nearest neighbors and the target dimensionality
k = 10; % Increase k to improve graph connectivity
num_dims = 2; % Target dimensionality (2D)
% Apply Isomap and measure time
tic;
mappedIsomap = compute_mapping(data, ‘Isomap’, num_dims, k);
timeElapsedIsomap = toc;
fprintf(‘Isomap computation took %.2f secondsn’, timeElapsedIsomap);
% Verify the size of the mapped data matches the original labels
if size(mappedIsomap, 1) ~= numel(labels)
error(‘Mismatch between reduced data rows and number of labels. Try increasing the value of k.’);
end
% Plot the Isomap result
figure;
gscatter(mappedIsomap(:, 1), mappedIsomap(:, 2), labels);
title(‘Isomap 2D Projection’);
xlabel(‘Dimension 1’);
ylabel(‘Dimension 2’);
grid on;
% Setup kNN Classifier using the Isomap-reduced data
Mdl_kNN_Isomap = fitcknn(mappedIsomap, labels, ‘NumNeighbors’, k);
% Cross-validation to evaluate the kNN model
cvmodelIsomap = crossval(Mdl_kNN_Isomap, ‘KFold’, 10); % 10-fold cross-validation
classLossIsomap = kfoldLoss(cvmodelIsomap);
predictedLabelsIsomap = kfoldPredict(cvmodelIsomap);
confMatIsomap = confusionmat(labels, predictedLabelsIsomap);
% Calculate and display classification metrics
fprintf(‘Classification loss for Isomap data using kNN: %.4fn’, classLossIsomap);
[f1Isomap, precisionIsomap, recallIsomap] = f1score(confMatIsomap);
fprintf(‘F1 Score: %.2f, Precision: %.2f, Recall: %.2fn’, f1Isomap, precisionIsomap, recallIsomap);
% Display Confusion Matrix
figure;
imagesc(confMatIsomap);
colormap(‘hot’);
colorbar;
title(‘Confusion Matrix for Isomap’);
xlabel(‘Predicted Labels’);
ylabel(‘Actual Labels’);
xticks(1:length(categories(labels)));
yticks(1:length(categories(labels)));
xticklabels(categories(labels));
yticklabels(categories(labels));
% Function to calculate F1 Score, Precision, and Recall from the Confusion Matrix
function [f1, precision, recall] = f1score(confMat)
numClasses = size(confMat, 1);
f1 = zeros(numClasses, 1);
precision = zeros(numClasses, 1);
recall = zeros(numClasses, 1);
for i = 1:numClasses
TP = confMat(i, i);
FP = sum(confMat(:, i)) – TP;
FN = sum(confMat(i, 🙂 – TP);
if (TP + FP) > 0
precision(i) = TP / (TP + FP);
else
precision(i) = 0;
end
if (TP + FN) > 0
recall(i) = TP / (TP + FN);
else
recall(i) = 0;
end
if (precision(i) + recall(i)) > 0
f1(i) = 2 * ((precision(i) * recall(i)) / (precision(i) + recall(i)));
else
f1(i) = 0;
end
end
f1 = mean(f1); % Calculating mean F1 score for all classes
precision = mean(precision);
recall = mean(recall);
end
Other scripts can be published normally but this script is blank every time it is published. But I can get the results and images when the post is finished.Just publish the page without anything% Load Dry Bean Dataset
dryBeanData = readtable(‘D:MATLABFinal ProjectDry_Bean_Dataset.csv’);
% Extract features and labels from the dryBeanData table
data = table2array(dryBeanData(:, 1:16)); % Adjust column indices if needed
labels = dryBeanData{:, 17}; % Assuming the 17th column contains labels
labels = categorical(labels);
% Ensure the data and labels match in size
if size(data, 1) ~= numel(labels)
error(‘Mismatch between the number of rows in data and the number of labels.’);
end
% Set the number of nearest neighbors and the target dimensionality
k = 10; % Increase k to improve graph connectivity
num_dims = 2; % Target dimensionality (2D)
% Apply Isomap and measure time
tic;
mappedIsomap = compute_mapping(data, ‘Isomap’, num_dims, k);
timeElapsedIsomap = toc;
fprintf(‘Isomap computation took %.2f secondsn’, timeElapsedIsomap);
% Verify the size of the mapped data matches the original labels
if size(mappedIsomap, 1) ~= numel(labels)
error(‘Mismatch between reduced data rows and number of labels. Try increasing the value of k.’);
end
% Plot the Isomap result
figure;
gscatter(mappedIsomap(:, 1), mappedIsomap(:, 2), labels);
title(‘Isomap 2D Projection’);
xlabel(‘Dimension 1’);
ylabel(‘Dimension 2’);
grid on;
% Setup kNN Classifier using the Isomap-reduced data
Mdl_kNN_Isomap = fitcknn(mappedIsomap, labels, ‘NumNeighbors’, k);
% Cross-validation to evaluate the kNN model
cvmodelIsomap = crossval(Mdl_kNN_Isomap, ‘KFold’, 10); % 10-fold cross-validation
classLossIsomap = kfoldLoss(cvmodelIsomap);
predictedLabelsIsomap = kfoldPredict(cvmodelIsomap);
confMatIsomap = confusionmat(labels, predictedLabelsIsomap);
% Calculate and display classification metrics
fprintf(‘Classification loss for Isomap data using kNN: %.4fn’, classLossIsomap);
[f1Isomap, precisionIsomap, recallIsomap] = f1score(confMatIsomap);
fprintf(‘F1 Score: %.2f, Precision: %.2f, Recall: %.2fn’, f1Isomap, precisionIsomap, recallIsomap);
% Display Confusion Matrix
figure;
imagesc(confMatIsomap);
colormap(‘hot’);
colorbar;
title(‘Confusion Matrix for Isomap’);
xlabel(‘Predicted Labels’);
ylabel(‘Actual Labels’);
xticks(1:length(categories(labels)));
yticks(1:length(categories(labels)));
xticklabels(categories(labels));
yticklabels(categories(labels));
% Function to calculate F1 Score, Precision, and Recall from the Confusion Matrix
function [f1, precision, recall] = f1score(confMat)
numClasses = size(confMat, 1);
f1 = zeros(numClasses, 1);
precision = zeros(numClasses, 1);
recall = zeros(numClasses, 1);
for i = 1:numClasses
TP = confMat(i, i);
FP = sum(confMat(:, i)) – TP;
FN = sum(confMat(i, 🙂 – TP);
if (TP + FP) > 0
precision(i) = TP / (TP + FP);
else
precision(i) = 0;
end
if (TP + FN) > 0
recall(i) = TP / (TP + FN);
else
recall(i) = 0;
end
if (precision(i) + recall(i)) > 0
f1(i) = 2 * ((precision(i) * recall(i)) / (precision(i) + recall(i)));
else
f1(i) = 0;
end
end
f1 = mean(f1); % Calculating mean F1 score for all classes
precision = mean(precision);
recall = mean(recall);
end
Other scripts can be published normally but this script is blank every time it is published. But I can get the results and images when the post is finished.Just publish the page without anything % Load Dry Bean Dataset
dryBeanData = readtable(‘D:MATLABFinal ProjectDry_Bean_Dataset.csv’);
% Extract features and labels from the dryBeanData table
data = table2array(dryBeanData(:, 1:16)); % Adjust column indices if needed
labels = dryBeanData{:, 17}; % Assuming the 17th column contains labels
labels = categorical(labels);
% Ensure the data and labels match in size
if size(data, 1) ~= numel(labels)
error(‘Mismatch between the number of rows in data and the number of labels.’);
end
% Set the number of nearest neighbors and the target dimensionality
k = 10; % Increase k to improve graph connectivity
num_dims = 2; % Target dimensionality (2D)
% Apply Isomap and measure time
tic;
mappedIsomap = compute_mapping(data, ‘Isomap’, num_dims, k);
timeElapsedIsomap = toc;
fprintf(‘Isomap computation took %.2f secondsn’, timeElapsedIsomap);
% Verify the size of the mapped data matches the original labels
if size(mappedIsomap, 1) ~= numel(labels)
error(‘Mismatch between reduced data rows and number of labels. Try increasing the value of k.’);
end
% Plot the Isomap result
figure;
gscatter(mappedIsomap(:, 1), mappedIsomap(:, 2), labels);
title(‘Isomap 2D Projection’);
xlabel(‘Dimension 1’);
ylabel(‘Dimension 2’);
grid on;
% Setup kNN Classifier using the Isomap-reduced data
Mdl_kNN_Isomap = fitcknn(mappedIsomap, labels, ‘NumNeighbors’, k);
% Cross-validation to evaluate the kNN model
cvmodelIsomap = crossval(Mdl_kNN_Isomap, ‘KFold’, 10); % 10-fold cross-validation
classLossIsomap = kfoldLoss(cvmodelIsomap);
predictedLabelsIsomap = kfoldPredict(cvmodelIsomap);
confMatIsomap = confusionmat(labels, predictedLabelsIsomap);
% Calculate and display classification metrics
fprintf(‘Classification loss for Isomap data using kNN: %.4fn’, classLossIsomap);
[f1Isomap, precisionIsomap, recallIsomap] = f1score(confMatIsomap);
fprintf(‘F1 Score: %.2f, Precision: %.2f, Recall: %.2fn’, f1Isomap, precisionIsomap, recallIsomap);
% Display Confusion Matrix
figure;
imagesc(confMatIsomap);
colormap(‘hot’);
colorbar;
title(‘Confusion Matrix for Isomap’);
xlabel(‘Predicted Labels’);
ylabel(‘Actual Labels’);
xticks(1:length(categories(labels)));
yticks(1:length(categories(labels)));
xticklabels(categories(labels));
yticklabels(categories(labels));
% Function to calculate F1 Score, Precision, and Recall from the Confusion Matrix
function [f1, precision, recall] = f1score(confMat)
numClasses = size(confMat, 1);
f1 = zeros(numClasses, 1);
precision = zeros(numClasses, 1);
recall = zeros(numClasses, 1);
for i = 1:numClasses
TP = confMat(i, i);
FP = sum(confMat(:, i)) – TP;
FN = sum(confMat(i, 🙂 – TP);
if (TP + FP) > 0
precision(i) = TP / (TP + FP);
else
precision(i) = 0;
end
if (TP + FN) > 0
recall(i) = TP / (TP + FN);
else
recall(i) = 0;
end
if (precision(i) + recall(i)) > 0
f1(i) = 2 * ((precision(i) * recall(i)) / (precision(i) + recall(i)));
else
f1(i) = 0;
end
end
f1 = mean(f1); % Calculating mean F1 score for all classes
precision = mean(precision);
recall = mean(recall);
end
Other scripts can be published normally but this script is blank every time it is published. But I can get the results and images when the post is finished.Just publish the page without anything pubilsh MATLAB Answers — New Questions
Determine the area of the nodules (in pixels)
I’m currently working on a school project of medical imaging. I have an X-Ray image of hands with nodules. The objective is to determine the area of the nodules (in pixels). To achieve the requested objective, we must work on the image, apply some of the methods taught, improve it, and subsequently segment structures of interest.
How can i do it?
Thank you everyone in advance.I’m currently working on a school project of medical imaging. I have an X-Ray image of hands with nodules. The objective is to determine the area of the nodules (in pixels). To achieve the requested objective, we must work on the image, apply some of the methods taught, improve it, and subsequently segment structures of interest.
How can i do it?
Thank you everyone in advance. I’m currently working on a school project of medical imaging. I have an X-Ray image of hands with nodules. The objective is to determine the area of the nodules (in pixels). To achieve the requested objective, we must work on the image, apply some of the methods taught, improve it, and subsequently segment structures of interest.
How can i do it?
Thank you everyone in advance. x-ray, image segmentation, nodules, area pixels MATLAB Answers — New Questions
How can we convert a datetime into a string that represents a Unix timestamp in nanoseconds?
I am trying to use Matlab to generate a string which contains a Unix timestamp in nanoseconds (i.e number of nanoseconds since 01-Jan-1970 00:00:00, the Unix epoch) from an input date string.
For example, if my input is only 1 ns after the start of the epoch, then the following code works:
t0 = datetime(’01-Jan-1970 00:00:00.000000000′,’Format’,’dd-MMM-yyyy HH:mm:ss.SSSSSSSSS’);
t1 = datetime(’01-Jan-1970 00:00:00.000000001′,’Format’,’dd-MMM-yyyy HH:mm:ss.SSSSSSSSS’);
dt_ns = seconds(t1 – t0)*1e9
dt_ns_string = sprintf(‘%.0f’,dt_ns)
% Output:
dt_ns_string =
‘1’
and I have the nanosecond precision that I need.
However, for later dates this does not work. For example, if I instead for t1 use a date around today:
t1 = datetime(’16-Jun-2020 00:00:00.000000001′,’Format’,’dd-MMM-yyyy HH:mm:ss.SSSSSSSSS’);
then the output is the following:
dt_ns_string =
‘1592265600000000000’
and I have lost the final nanosecond precision on the end of the string (final character should be a "1").
I believe this may be due to working with double types, and I might need to use uint64, but I can’t figure out how to make the change.
How can I solve this?I am trying to use Matlab to generate a string which contains a Unix timestamp in nanoseconds (i.e number of nanoseconds since 01-Jan-1970 00:00:00, the Unix epoch) from an input date string.
For example, if my input is only 1 ns after the start of the epoch, then the following code works:
t0 = datetime(’01-Jan-1970 00:00:00.000000000′,’Format’,’dd-MMM-yyyy HH:mm:ss.SSSSSSSSS’);
t1 = datetime(’01-Jan-1970 00:00:00.000000001′,’Format’,’dd-MMM-yyyy HH:mm:ss.SSSSSSSSS’);
dt_ns = seconds(t1 – t0)*1e9
dt_ns_string = sprintf(‘%.0f’,dt_ns)
% Output:
dt_ns_string =
‘1’
and I have the nanosecond precision that I need.
However, for later dates this does not work. For example, if I instead for t1 use a date around today:
t1 = datetime(’16-Jun-2020 00:00:00.000000001′,’Format’,’dd-MMM-yyyy HH:mm:ss.SSSSSSSSS’);
then the output is the following:
dt_ns_string =
‘1592265600000000000’
and I have lost the final nanosecond precision on the end of the string (final character should be a "1").
I believe this may be due to working with double types, and I might need to use uint64, but I can’t figure out how to make the change.
How can I solve this? I am trying to use Matlab to generate a string which contains a Unix timestamp in nanoseconds (i.e number of nanoseconds since 01-Jan-1970 00:00:00, the Unix epoch) from an input date string.
For example, if my input is only 1 ns after the start of the epoch, then the following code works:
t0 = datetime(’01-Jan-1970 00:00:00.000000000′,’Format’,’dd-MMM-yyyy HH:mm:ss.SSSSSSSSS’);
t1 = datetime(’01-Jan-1970 00:00:00.000000001′,’Format’,’dd-MMM-yyyy HH:mm:ss.SSSSSSSSS’);
dt_ns = seconds(t1 – t0)*1e9
dt_ns_string = sprintf(‘%.0f’,dt_ns)
% Output:
dt_ns_string =
‘1’
and I have the nanosecond precision that I need.
However, for later dates this does not work. For example, if I instead for t1 use a date around today:
t1 = datetime(’16-Jun-2020 00:00:00.000000001′,’Format’,’dd-MMM-yyyy HH:mm:ss.SSSSSSSSS’);
then the output is the following:
dt_ns_string =
‘1592265600000000000’
and I have lost the final nanosecond precision on the end of the string (final character should be a "1").
I believe this may be due to working with double types, and I might need to use uint64, but I can’t figure out how to make the change.
How can I solve this? datetime, unix time MATLAB Answers — New Questions
I am trying to perform a simple operation FOR loop. I think I am not able to get the indexing right.
%%I am trying to something which seems pretty eady, but I cant get it right.
t1 = [2 7 11 14 16];
t2 = [3 6 9 12 15 17 19];
t3 = [5 8 10 13 14 15 17 19];
%% why does not the following operation work
for i =1:3
di = 2*ti
end%%I am trying to something which seems pretty eady, but I cant get it right.
t1 = [2 7 11 14 16];
t2 = [3 6 9 12 15 17 19];
t3 = [5 8 10 13 14 15 17 19];
%% why does not the following operation work
for i =1:3
di = 2*ti
end %%I am trying to something which seems pretty eady, but I cant get it right.
t1 = [2 7 11 14 16];
t2 = [3 6 9 12 15 17 19];
t3 = [5 8 10 13 14 15 17 19];
%% why does not the following operation work
for i =1:3
di = 2*ti
end for, loop MATLAB Answers — New Questions
I need help with composite_trapezoidal_rule and Composite Simpson”s Rule
Write a program to evaluate 𝐼𝑛 = ∫01𝑒^(−2𝑥)𝑑x with 𝑛 = 16, 128 𝑎n𝑑 512 subdivisions using:
Composite trapozidal rule
. ii) Compsosite Simpson’s rule. Compare the results of part i) and ii)
Derive a theoretical bound for the number of subdivisions 𝑛𝑛 to approximate the integral in part (a) with an accuracy of 10^8 using the composite Simpson’s rule. Verify this bound numerically.Write a program to evaluate 𝐼𝑛 = ∫01𝑒^(−2𝑥)𝑑x with 𝑛 = 16, 128 𝑎n𝑑 512 subdivisions using:
Composite trapozidal rule
. ii) Compsosite Simpson’s rule. Compare the results of part i) and ii)
Derive a theoretical bound for the number of subdivisions 𝑛𝑛 to approximate the integral in part (a) with an accuracy of 10^8 using the composite Simpson’s rule. Verify this bound numerically. Write a program to evaluate 𝐼𝑛 = ∫01𝑒^(−2𝑥)𝑑x with 𝑛 = 16, 128 𝑎n𝑑 512 subdivisions using:
Composite trapozidal rule
. ii) Compsosite Simpson’s rule. Compare the results of part i) and ii)
Derive a theoretical bound for the number of subdivisions 𝑛𝑛 to approximate the integral in part (a) with an accuracy of 10^8 using the composite Simpson’s rule. Verify this bound numerically. matlab code, simpson”s rule MATLAB Answers — New Questions
Using a loop to add rows to a struct, but the counter overwrites the rows.
I am using this loop, which is embeded in another loop which loads 3 files, to add rows to a struct. After it itterates through 1 files, the rows get overwritten starting from 1. I know this is because of the counter, but I just can’t wrap my head around how have it start after the last entry. Any help would be greatly appreciated!
for structRow = 1:nTrials
masterStruct(structRow).mouse = file.subjectNumber;
masterStruct(structRow).date = matfiles.name;
masterStruct(structRow).trialEnd = trials(structRow).trialEnd
masterStruct(structRow).reactTimeMS = trials(structRow).reactTimeMS;
masterStruct(structRow).rewardUL = trials(structRow).rewardUL;
masterStruct(structRow).stimulusType = trial.stimulusType;
masterStruct(structRow).preStimMS = trial(structRow).preStimMS;
masterStruct(structRow).visualDurMS = trial(structRow).visualDurMS;
masterStruct(structRow).optiDurMS = trial(structRow).optiDurMS;
masterStruct(structRow).minPowerMW = blockInfo(structRow).minPowerMW;
masterStruct(structRow).maxPowerMW = blockInfo(structRow).maxPowerMW;
masterStruct(structRow).minContrastPC = blockInfo(structRow).minContrastPC;
masterStruct(structRow).maxContrastPC = blockInfo(structRow).maxContrastPC;
endI am using this loop, which is embeded in another loop which loads 3 files, to add rows to a struct. After it itterates through 1 files, the rows get overwritten starting from 1. I know this is because of the counter, but I just can’t wrap my head around how have it start after the last entry. Any help would be greatly appreciated!
for structRow = 1:nTrials
masterStruct(structRow).mouse = file.subjectNumber;
masterStruct(structRow).date = matfiles.name;
masterStruct(structRow).trialEnd = trials(structRow).trialEnd
masterStruct(structRow).reactTimeMS = trials(structRow).reactTimeMS;
masterStruct(structRow).rewardUL = trials(structRow).rewardUL;
masterStruct(structRow).stimulusType = trial.stimulusType;
masterStruct(structRow).preStimMS = trial(structRow).preStimMS;
masterStruct(structRow).visualDurMS = trial(structRow).visualDurMS;
masterStruct(structRow).optiDurMS = trial(structRow).optiDurMS;
masterStruct(structRow).minPowerMW = blockInfo(structRow).minPowerMW;
masterStruct(structRow).maxPowerMW = blockInfo(structRow).maxPowerMW;
masterStruct(structRow).minContrastPC = blockInfo(structRow).minContrastPC;
masterStruct(structRow).maxContrastPC = blockInfo(structRow).maxContrastPC;
end I am using this loop, which is embeded in another loop which loads 3 files, to add rows to a struct. After it itterates through 1 files, the rows get overwritten starting from 1. I know this is because of the counter, but I just can’t wrap my head around how have it start after the last entry. Any help would be greatly appreciated!
for structRow = 1:nTrials
masterStruct(structRow).mouse = file.subjectNumber;
masterStruct(structRow).date = matfiles.name;
masterStruct(structRow).trialEnd = trials(structRow).trialEnd
masterStruct(structRow).reactTimeMS = trials(structRow).reactTimeMS;
masterStruct(structRow).rewardUL = trials(structRow).rewardUL;
masterStruct(structRow).stimulusType = trial.stimulusType;
masterStruct(structRow).preStimMS = trial(structRow).preStimMS;
masterStruct(structRow).visualDurMS = trial(structRow).visualDurMS;
masterStruct(structRow).optiDurMS = trial(structRow).optiDurMS;
masterStruct(structRow).minPowerMW = blockInfo(structRow).minPowerMW;
masterStruct(structRow).maxPowerMW = blockInfo(structRow).maxPowerMW;
masterStruct(structRow).minContrastPC = blockInfo(structRow).minContrastPC;
masterStruct(structRow).maxContrastPC = blockInfo(structRow).maxContrastPC;
end loops MATLAB Answers — New Questions
Kelvin functions ker kei functions evaluation
Hi,
I am working with Kelvin functions and in the specific with ker(x) and kei(x). I build a short function to evaluate them using the Matlab build in besselk function but when I test it I am not obtaining the expected results.
The values should be:
kei(0)=-0.78540; ker(0)=-inf
Instead I get kei(0)=0
Can anyone help?
Thank you.
% Define a range of x values
x = linspace(0, 6, 100);
% Calculate ber and bei
[ker_vals, kei_vals] = kelvink(0, x);
% Plot the results
figure;
plot(x, ker_vals, ‘b-‘, x, kei_vals, ‘r–‘);
title(‘Kelvin KER and KEI Functions’);
xlabel(‘x’);
ylabel(‘Function Value’);
legend(‘ker(x)’, ‘kei(x)’);
function [ker, kei] = kelvink(n, x)
a = exp(pi*1i/4);
ke = besselk(n,a*x);
ker = real(ke);
kei = imag(ke);
endHi,
I am working with Kelvin functions and in the specific with ker(x) and kei(x). I build a short function to evaluate them using the Matlab build in besselk function but when I test it I am not obtaining the expected results.
The values should be:
kei(0)=-0.78540; ker(0)=-inf
Instead I get kei(0)=0
Can anyone help?
Thank you.
% Define a range of x values
x = linspace(0, 6, 100);
% Calculate ber and bei
[ker_vals, kei_vals] = kelvink(0, x);
% Plot the results
figure;
plot(x, ker_vals, ‘b-‘, x, kei_vals, ‘r–‘);
title(‘Kelvin KER and KEI Functions’);
xlabel(‘x’);
ylabel(‘Function Value’);
legend(‘ker(x)’, ‘kei(x)’);
function [ker, kei] = kelvink(n, x)
a = exp(pi*1i/4);
ke = besselk(n,a*x);
ker = real(ke);
kei = imag(ke);
end Hi,
I am working with Kelvin functions and in the specific with ker(x) and kei(x). I build a short function to evaluate them using the Matlab build in besselk function but when I test it I am not obtaining the expected results.
The values should be:
kei(0)=-0.78540; ker(0)=-inf
Instead I get kei(0)=0
Can anyone help?
Thank you.
% Define a range of x values
x = linspace(0, 6, 100);
% Calculate ber and bei
[ker_vals, kei_vals] = kelvink(0, x);
% Plot the results
figure;
plot(x, ker_vals, ‘b-‘, x, kei_vals, ‘r–‘);
title(‘Kelvin KER and KEI Functions’);
xlabel(‘x’);
ylabel(‘Function Value’);
legend(‘ker(x)’, ‘kei(x)’);
function [ker, kei] = kelvink(n, x)
a = exp(pi*1i/4);
ke = besselk(n,a*x);
ker = real(ke);
kei = imag(ke);
end kelvin function, ker/kei MATLAB Answers — New Questions
Appdesigner uigetfile focus error
function DPlotButtonPushed(app, event)
if app.LoadButton == event.Source
[filenames2labels, FilePathState] = uigetfile({‘*.txt’; ‘*.mat’; ‘*.m’; ‘*.mlx’; ‘*.csv’}, ‘파일 선택’, ‘MultiSelect’,’on’);
if isequal(filenames2labels, 0)
disp(‘파일 선택이 취소되었습니다’);
return;
else
fullpath = fullfile(FilePathState, filenames2labels);
disp([‘선택한 파일 : ‘, filenames2labels]);
disp([‘전체 경로 : ‘, FilePathState]);
return;
end
elseif app.AboutButton == event.Source
web(‘https://www.mathworks.com/help/matlab/’, ‘-browser’);
elseif app.ExitButton == event.Source
delete(app);
elseif app.SaveButton == event.Source
axesHandle = app.UIAxes;
% Capture the plot as an image
frame = getframe(axesHandle);
img = frame.cdata;
% Open a dialog to select the file path to save the image
[filename, pathname] = uiputfile({‘*.png’;’*.jpg’;’*.bmp’;’*.tif’}, ‘Save As’);
% Check if the user canceled the operation
if isequal(filename,0) || isequal(pathname,0)
disp(‘User selected Cancel’);
return;
else
% Construct the full file path
fullFilePath = fullfile(pathname, filename);
% Save the captured plot as an image file
imwrite(img, fullFilePath);
disp([‘Image saved as: ‘ fullFilePath]);
return;
end
end
end
end
appdesigner에서 버튼을 누르면 파일 선택 창이 나오도록 uigetfile 함수로 gui를 구축하고 있습니다. 구축하는 과정 중 파일 선택 창에서 취소 버튼을 누르면 focus가 이상해져서 파일 선택기 취소 후 app 유지 상태가 아니라 , 파일 선택기에서 취소를 누르면 app 자체가 최소화 되는 문제가 발생하고 있습니다.
code 작성은 위와 같이 했는데 해결 방법이 뭔가요 ??? 잘 모르겠습니다 ㅜㅜfunction DPlotButtonPushed(app, event)
if app.LoadButton == event.Source
[filenames2labels, FilePathState] = uigetfile({‘*.txt’; ‘*.mat’; ‘*.m’; ‘*.mlx’; ‘*.csv’}, ‘파일 선택’, ‘MultiSelect’,’on’);
if isequal(filenames2labels, 0)
disp(‘파일 선택이 취소되었습니다’);
return;
else
fullpath = fullfile(FilePathState, filenames2labels);
disp([‘선택한 파일 : ‘, filenames2labels]);
disp([‘전체 경로 : ‘, FilePathState]);
return;
end
elseif app.AboutButton == event.Source
web(‘https://www.mathworks.com/help/matlab/’, ‘-browser’);
elseif app.ExitButton == event.Source
delete(app);
elseif app.SaveButton == event.Source
axesHandle = app.UIAxes;
% Capture the plot as an image
frame = getframe(axesHandle);
img = frame.cdata;
% Open a dialog to select the file path to save the image
[filename, pathname] = uiputfile({‘*.png’;’*.jpg’;’*.bmp’;’*.tif’}, ‘Save As’);
% Check if the user canceled the operation
if isequal(filename,0) || isequal(pathname,0)
disp(‘User selected Cancel’);
return;
else
% Construct the full file path
fullFilePath = fullfile(pathname, filename);
% Save the captured plot as an image file
imwrite(img, fullFilePath);
disp([‘Image saved as: ‘ fullFilePath]);
return;
end
end
end
end
appdesigner에서 버튼을 누르면 파일 선택 창이 나오도록 uigetfile 함수로 gui를 구축하고 있습니다. 구축하는 과정 중 파일 선택 창에서 취소 버튼을 누르면 focus가 이상해져서 파일 선택기 취소 후 app 유지 상태가 아니라 , 파일 선택기에서 취소를 누르면 app 자체가 최소화 되는 문제가 발생하고 있습니다.
code 작성은 위와 같이 했는데 해결 방법이 뭔가요 ??? 잘 모르겠습니다 ㅜㅜ function DPlotButtonPushed(app, event)
if app.LoadButton == event.Source
[filenames2labels, FilePathState] = uigetfile({‘*.txt’; ‘*.mat’; ‘*.m’; ‘*.mlx’; ‘*.csv’}, ‘파일 선택’, ‘MultiSelect’,’on’);
if isequal(filenames2labels, 0)
disp(‘파일 선택이 취소되었습니다’);
return;
else
fullpath = fullfile(FilePathState, filenames2labels);
disp([‘선택한 파일 : ‘, filenames2labels]);
disp([‘전체 경로 : ‘, FilePathState]);
return;
end
elseif app.AboutButton == event.Source
web(‘https://www.mathworks.com/help/matlab/’, ‘-browser’);
elseif app.ExitButton == event.Source
delete(app);
elseif app.SaveButton == event.Source
axesHandle = app.UIAxes;
% Capture the plot as an image
frame = getframe(axesHandle);
img = frame.cdata;
% Open a dialog to select the file path to save the image
[filename, pathname] = uiputfile({‘*.png’;’*.jpg’;’*.bmp’;’*.tif’}, ‘Save As’);
% Check if the user canceled the operation
if isequal(filename,0) || isequal(pathname,0)
disp(‘User selected Cancel’);
return;
else
% Construct the full file path
fullFilePath = fullfile(pathname, filename);
% Save the captured plot as an image file
imwrite(img, fullFilePath);
disp([‘Image saved as: ‘ fullFilePath]);
return;
end
end
end
end
appdesigner에서 버튼을 누르면 파일 선택 창이 나오도록 uigetfile 함수로 gui를 구축하고 있습니다. 구축하는 과정 중 파일 선택 창에서 취소 버튼을 누르면 focus가 이상해져서 파일 선택기 취소 후 app 유지 상태가 아니라 , 파일 선택기에서 취소를 누르면 app 자체가 최소화 되는 문제가 발생하고 있습니다.
code 작성은 위와 같이 했는데 해결 방법이 뭔가요 ??? 잘 모르겠습니다 ㅜㅜ appdesigner, uigetfile, focus, error, minimization MATLAB Answers — New Questions
Strange behaviour with uigetfile in APPDesigner (not observed in GUIDE)
Hello.
I am updating my code from GUIDE and have found a strange effect using uigetfile. It works fine in GUIDE.
what happens is when I run this, whilst it works, my app switches and makes the matlab command window come to the front. Althought I can just reselect my app, its not ideal. Thanks for any pointers.
Jason
This is my code.
[file,path,idx]=uigetfile({‘*.tif’;’*.tiff’;’*.RAW’;},’Load Image’,app.startfolder);
where startfolder is defined as a public property
properties (Access = public)
startfolder %starting generic save / load folder
and initiated in the StartupFCN:
function startupFcn(app)
app.startfolder=’C:’ ;%starting generic save / load folderHello.
I am updating my code from GUIDE and have found a strange effect using uigetfile. It works fine in GUIDE.
what happens is when I run this, whilst it works, my app switches and makes the matlab command window come to the front. Althought I can just reselect my app, its not ideal. Thanks for any pointers.
Jason
This is my code.
[file,path,idx]=uigetfile({‘*.tif’;’*.tiff’;’*.RAW’;},’Load Image’,app.startfolder);
where startfolder is defined as a public property
properties (Access = public)
startfolder %starting generic save / load folder
and initiated in the StartupFCN:
function startupFcn(app)
app.startfolder=’C:’ ;%starting generic save / load folder Hello.
I am updating my code from GUIDE and have found a strange effect using uigetfile. It works fine in GUIDE.
what happens is when I run this, whilst it works, my app switches and makes the matlab command window come to the front. Althought I can just reselect my app, its not ideal. Thanks for any pointers.
Jason
This is my code.
[file,path,idx]=uigetfile({‘*.tif’;’*.tiff’;’*.RAW’;},’Load Image’,app.startfolder);
where startfolder is defined as a public property
properties (Access = public)
startfolder %starting generic save / load folder
and initiated in the StartupFCN:
function startupFcn(app)
app.startfolder=’C:’ ;%starting generic save / load folder uigetfile, appdesigner MATLAB Answers — New Questions
Placing transparent rectangles on top of a plot
Hey all,
I am trying to place several rectanges over a plot (wavelet coherence) but am struggling to do so.
I have been using the following code below, which has been creating the plots successfully but the rectangles do not seem to appear on the plots.
I would be so grateful for a helping hand! 🙂
Please let me know if there’s anymore/example data I can provide.
wcoherence(data1,data2);
ax = gca;
final_onset = dataTable.onsetsWC(end);
final_duration = dataTable.durationsWC(end);
max_x_limit = final_onset + final_duration;
xlim([0, max_x_limit]);
for i = 1:height(dataTable)
onset = dataTable.onsetsWC(i);
duration = dataTable.durationsWC(i);
trialType = dataTable.Trialtype(i);
if strcmp(trialType, ‘Chase’)
barColor = [1, 0, 0, 1];
elseif strcmp(trialType, ‘Follow’)
barColor = [0, 1, 0, 1];
end
rectangle(ax, ‘Position’, [onset, 0, duration, 1], ‘FaceColor’, barColor, ‘EdgeColor’, ‘none’);
end
figure_title = sprintf(‘Dyad-%d-Channel-%d’, p, j);
set(gcf, ‘Name’, figure_title);
save_path = ‘C:Usersemre.yavuzDesktopDataGLMWaveletcoherence’;
save_name = sprintf(‘Dyad_%d_Channel_%d.fig’, p, j);
saveas(gcf, fullfile(save_path, save_name));Hey all,
I am trying to place several rectanges over a plot (wavelet coherence) but am struggling to do so.
I have been using the following code below, which has been creating the plots successfully but the rectangles do not seem to appear on the plots.
I would be so grateful for a helping hand! 🙂
Please let me know if there’s anymore/example data I can provide.
wcoherence(data1,data2);
ax = gca;
final_onset = dataTable.onsetsWC(end);
final_duration = dataTable.durationsWC(end);
max_x_limit = final_onset + final_duration;
xlim([0, max_x_limit]);
for i = 1:height(dataTable)
onset = dataTable.onsetsWC(i);
duration = dataTable.durationsWC(i);
trialType = dataTable.Trialtype(i);
if strcmp(trialType, ‘Chase’)
barColor = [1, 0, 0, 1];
elseif strcmp(trialType, ‘Follow’)
barColor = [0, 1, 0, 1];
end
rectangle(ax, ‘Position’, [onset, 0, duration, 1], ‘FaceColor’, barColor, ‘EdgeColor’, ‘none’);
end
figure_title = sprintf(‘Dyad-%d-Channel-%d’, p, j);
set(gcf, ‘Name’, figure_title);
save_path = ‘C:Usersemre.yavuzDesktopDataGLMWaveletcoherence’;
save_name = sprintf(‘Dyad_%d_Channel_%d.fig’, p, j);
saveas(gcf, fullfile(save_path, save_name)); Hey all,
I am trying to place several rectanges over a plot (wavelet coherence) but am struggling to do so.
I have been using the following code below, which has been creating the plots successfully but the rectangles do not seem to appear on the plots.
I would be so grateful for a helping hand! 🙂
Please let me know if there’s anymore/example data I can provide.
wcoherence(data1,data2);
ax = gca;
final_onset = dataTable.onsetsWC(end);
final_duration = dataTable.durationsWC(end);
max_x_limit = final_onset + final_duration;
xlim([0, max_x_limit]);
for i = 1:height(dataTable)
onset = dataTable.onsetsWC(i);
duration = dataTable.durationsWC(i);
trialType = dataTable.Trialtype(i);
if strcmp(trialType, ‘Chase’)
barColor = [1, 0, 0, 1];
elseif strcmp(trialType, ‘Follow’)
barColor = [0, 1, 0, 1];
end
rectangle(ax, ‘Position’, [onset, 0, duration, 1], ‘FaceColor’, barColor, ‘EdgeColor’, ‘none’);
end
figure_title = sprintf(‘Dyad-%d-Channel-%d’, p, j);
set(gcf, ‘Name’, figure_title);
save_path = ‘C:Usersemre.yavuzDesktopDataGLMWaveletcoherence’;
save_name = sprintf(‘Dyad_%d_Channel_%d.fig’, p, j);
saveas(gcf, fullfile(save_path, save_name)); plot, plotting, figure, matlab MATLAB Answers — New Questions