Category: News
Generate Graph Nodes and add buttondown callbacks for interactivity
I’m trying to create a graph that brings up a dialogue box when one of the nodes is clicked. I use
NodeTable = table(‘Size’,[0 4],’VariableTypes’,{‘double’,’string’,’double’,’double’}, …
‘VariableNames’,{‘Code’,’Name’,’Latitude’,’Longitude’});
EdgeTable = table(‘Size’,[0 2],’VariableTypes’,{‘cell’, ‘double’}, …
‘VariableNames’,{‘EndNodes’,’Distance’});
nodetemp = inputdlg(["Node Name", "Latitude", "Longitude"], "Node Details");
%check input present
if isempty(nodetemp)== 0
%check node not present in table
if any(matches(app.NodeTable.Name,nodetemp(1),IgnoreCase=true))==false
%format table and add code in column 1
nodeinp = addvars(cell2table(transpose(nodetemp),’VariableNames’,{‘Name’,’Latitude’,’Longitude’}), app.index, ‘before’, 1,’NewVariableNames’,{‘Code’});
%update graph with node data
app.NodeTable=[app.NodeTable; nodeinp];
app.G=addnode(app.G,nodeinp);
app.map = plot(app.UIAxes,app.G,’NodeLabel’,app.G.Nodes.Name,’EdgeLabel’,app.G.Edges.Distance);%plot graph
%set node coordinates
app.map.XData = str2double(app.NodeTable.Longitude);
app.map.YData = str2double(app.NodeTable.Latitude);
app.index = app.index + 1; %increment node counter
end
end
to create the graph, add nodes and plot it. I then am attempting to use
nodes=findobj(app.map,’Marker’,’o’);
nodesLength = length(nodes);
for count=1:nodesLength
nodes(count).ButtonDownFcn=@(src,event)nodeButtonDown(app,count);
end
to get a hold of the node graphical objects and assign callbacks as advised here but the plot doesn’t seem to generate the nodes as children/separate objects like it says in all the documentation. The nodes variable just becomes a copy of the graphplot object. You’ll notice I’m using the app designer.I’m trying to create a graph that brings up a dialogue box when one of the nodes is clicked. I use
NodeTable = table(‘Size’,[0 4],’VariableTypes’,{‘double’,’string’,’double’,’double’}, …
‘VariableNames’,{‘Code’,’Name’,’Latitude’,’Longitude’});
EdgeTable = table(‘Size’,[0 2],’VariableTypes’,{‘cell’, ‘double’}, …
‘VariableNames’,{‘EndNodes’,’Distance’});
nodetemp = inputdlg(["Node Name", "Latitude", "Longitude"], "Node Details");
%check input present
if isempty(nodetemp)== 0
%check node not present in table
if any(matches(app.NodeTable.Name,nodetemp(1),IgnoreCase=true))==false
%format table and add code in column 1
nodeinp = addvars(cell2table(transpose(nodetemp),’VariableNames’,{‘Name’,’Latitude’,’Longitude’}), app.index, ‘before’, 1,’NewVariableNames’,{‘Code’});
%update graph with node data
app.NodeTable=[app.NodeTable; nodeinp];
app.G=addnode(app.G,nodeinp);
app.map = plot(app.UIAxes,app.G,’NodeLabel’,app.G.Nodes.Name,’EdgeLabel’,app.G.Edges.Distance);%plot graph
%set node coordinates
app.map.XData = str2double(app.NodeTable.Longitude);
app.map.YData = str2double(app.NodeTable.Latitude);
app.index = app.index + 1; %increment node counter
end
end
to create the graph, add nodes and plot it. I then am attempting to use
nodes=findobj(app.map,’Marker’,’o’);
nodesLength = length(nodes);
for count=1:nodesLength
nodes(count).ButtonDownFcn=@(src,event)nodeButtonDown(app,count);
end
to get a hold of the node graphical objects and assign callbacks as advised here but the plot doesn’t seem to generate the nodes as children/separate objects like it says in all the documentation. The nodes variable just becomes a copy of the graphplot object. You’ll notice I’m using the app designer. I’m trying to create a graph that brings up a dialogue box when one of the nodes is clicked. I use
NodeTable = table(‘Size’,[0 4],’VariableTypes’,{‘double’,’string’,’double’,’double’}, …
‘VariableNames’,{‘Code’,’Name’,’Latitude’,’Longitude’});
EdgeTable = table(‘Size’,[0 2],’VariableTypes’,{‘cell’, ‘double’}, …
‘VariableNames’,{‘EndNodes’,’Distance’});
nodetemp = inputdlg(["Node Name", "Latitude", "Longitude"], "Node Details");
%check input present
if isempty(nodetemp)== 0
%check node not present in table
if any(matches(app.NodeTable.Name,nodetemp(1),IgnoreCase=true))==false
%format table and add code in column 1
nodeinp = addvars(cell2table(transpose(nodetemp),’VariableNames’,{‘Name’,’Latitude’,’Longitude’}), app.index, ‘before’, 1,’NewVariableNames’,{‘Code’});
%update graph with node data
app.NodeTable=[app.NodeTable; nodeinp];
app.G=addnode(app.G,nodeinp);
app.map = plot(app.UIAxes,app.G,’NodeLabel’,app.G.Nodes.Name,’EdgeLabel’,app.G.Edges.Distance);%plot graph
%set node coordinates
app.map.XData = str2double(app.NodeTable.Longitude);
app.map.YData = str2double(app.NodeTable.Latitude);
app.index = app.index + 1; %increment node counter
end
end
to create the graph, add nodes and plot it. I then am attempting to use
nodes=findobj(app.map,’Marker’,’o’);
nodesLength = length(nodes);
for count=1:nodesLength
nodes(count).ButtonDownFcn=@(src,event)nodeButtonDown(app,count);
end
to get a hold of the node graphical objects and assign callbacks as advised here but the plot doesn’t seem to generate the nodes as children/separate objects like it says in all the documentation. The nodes variable just becomes a copy of the graphplot object. You’ll notice I’m using the app designer. axes, appdesigner, app designer, callback, graph, graphics, plot, plotting, gui, objects, find, nodes, children, interactivity, programmatic, class, assign MATLAB Answers — New Questions
I am unable to make the new vesion of spectrumAnalyzer show distortion measurements.
I have a Matlab script that has worked fine in R2021b and earlier which I still use today. It simply reads my audio on a Macbook Pro running MacOS 12 and presents a spectrum on the analyzer. Moving that script to the new R2025b and modifying the script to call the new spectrum analyzer seems to work to present the spectrum but when I select "Measurements" and "Distortion" the distortion data appears but does not seem to find the main tone and in-turn the harmonics. I am stuck using the old version of Matlab since that works. I think I may be missing a configuration command on the new analyzer that wasn’t required on the old one. The tone below is on CH1 and CH2 identically. CH2 appears in front of CH1.I have a Matlab script that has worked fine in R2021b and earlier which I still use today. It simply reads my audio on a Macbook Pro running MacOS 12 and presents a spectrum on the analyzer. Moving that script to the new R2025b and modifying the script to call the new spectrum analyzer seems to work to present the spectrum but when I select "Measurements" and "Distortion" the distortion data appears but does not seem to find the main tone and in-turn the harmonics. I am stuck using the old version of Matlab since that works. I think I may be missing a configuration command on the new analyzer that wasn’t required on the old one. The tone below is on CH1 and CH2 identically. CH2 appears in front of CH1. I have a Matlab script that has worked fine in R2021b and earlier which I still use today. It simply reads my audio on a Macbook Pro running MacOS 12 and presents a spectrum on the analyzer. Moving that script to the new R2025b and modifying the script to call the new spectrum analyzer seems to work to present the spectrum but when I select "Measurements" and "Distortion" the distortion data appears but does not seem to find the main tone and in-turn the harmonics. I am stuck using the old version of Matlab since that works. I think I may be missing a configuration command on the new analyzer that wasn’t required on the old one. The tone below is on CH1 and CH2 identically. CH2 appears in front of CH1. spectrumanalyzer MATLAB Answers — New Questions
The single function is not behaving as expected
I’m trying to use single to save disk space because my files are very large. I know it could affect the precision if my numbers have many places after the decimal point. However, it is altering my integers as well.
>> single(340580097)
ans =
340580096.00
Is this a bug?I’m trying to use single to save disk space because my files are very large. I know it could affect the precision if my numbers have many places after the decimal point. However, it is altering my integers as well.
>> single(340580097)
ans =
340580096.00
Is this a bug? I’m trying to use single to save disk space because my files are very large. I know it could affect the precision if my numbers have many places after the decimal point. However, it is altering my integers as well.
>> single(340580097)
ans =
340580096.00
Is this a bug? single MATLAB Answers — New Questions
How can I view the Speedgoat target screen and system log on my host computer?
Can I view the display connected to my Speedgoat target on my host computer to monitor the Simulink Real-Time (SLRT) simulation and take screenshots?Can I view the display connected to my Speedgoat target on my host computer to monitor the Simulink Real-Time (SLRT) simulation and take screenshots? Can I view the display connected to my Speedgoat target on my host computer to monitor the Simulink Real-Time (SLRT) simulation and take screenshots? slrt, targetscreen, statusmonitor, systemlog, console, log MATLAB Answers — New Questions
Automating Microsoft 365 with PowerShell December 2025 Update
Update #18 for Our PowerShell eBook

As we normally do to free time to build the monthly update for the Office 365 for IT Pros eBook, we have released the monthly update (version 18) of the Automating Microsoft 365 with PowerShell eBook. This eBook is available separately or as part of the Office 365 for IT Pros package. The version number is clearly indicated on the inside front cover and in the footer of each page.
Subscribers can download the updated PDF and EPUB files using the link in the receipt emailed to them after their purchase. The link always fetches the latest book files.
We’ve also updated the paperback edition of Automating Microsoft 365 with PowerShell. The revised paperback should now be available. No updates are offered for this edition, so what’s printed on the pages is what you get. Even so, we still reckon that the printed content is well worth the price. 400 pages of PowerShell goodness, including hundreds of examples of how to use PowerShell and the Microsoft Graph APIs to automate Microsoft 365 processes.
Monthly Updates in Automating Microsoft 365 with PowerShell
Just like the main book, the monthly update for the PowerShell eBook includes a mix of minor changes, corrections, and new features. Probably the biggest new feature is the ability to restore soft-deleted security groups, just like it’s been possible to do for Microsoft 365 Groups since 2016. Given the widespread use of security groups (including dynamic security groups) to control other Entra policies, like group-based license assignment, it’s very welcome to have the ability to rescue a deleted group after an error resulted in its removal.
Another change is that the default app management policy can now be updated through the Entra admin center. This is important because the policy controls details such as whether apps can use app secrets for authentication (a horrible idea in production). Custom app management policies, which override the default tenant policy, can still only be managed through PowerShell.
Updated PowerShell Modules
During November Microsoft issued updates for the Microsoft Teams module (to V7.5) and the Microsoft Graph PowerShell SDK (V2.32). Apart from some cmdlet changes that might lead to being able to change the ownership of a meeting recording from the current default (the meeting organizer), there’s not much to say about the new Teams module. The assembly clash with the Microsoft Graph PowerShell SDK still exists.
Speaking of the SDK, it’s good to see that Microsoft has started to burn down the Microsoft Graph PowerShell SDK open issues list, which had got to a rather alarming level of well over 200 known problems. Some issues go back to the bad old days when SDK releases were bedevilled with poor quality, but that’s no reason not to investigate, fix (if necessary), and close the problems.
In any case, I believe that V2.31 and V2.32 are stable releases. Many of the issues reported for earlier releases are fixed and I haven’t encountered any big issues since I installed V2.32. When updating the SDK, make sure to consider the SDK modules loaded as resources into Azure Automation runtime environments too, and remember that the version of the Microsoft.Graph.Authentication module dictates the required version for all the other SDK in that runtime environment.
On to Version 19
The evidence that Microsoft 365 is in a state of constant flux is evident to anyone who looks through the message center in the Microsoft 365 admin center. The same is true for PowerShell even if the change is different nature and it’s spread across multiple modules and PowerShell itself. More importantly, change comes through acquired knowledge, which we hope to capture some of in Automating Microsoft 365 with PowerShell. Enjoy the book!









