Month: March 2026
What do I need to know about upgrading from LTI 1.1 to LTI 1.3 in regards to MATLAB Grader?
What do I need to know about upgrading from LTI 1.1 to LTI 1.3 in regards to MATLAB Grader?What do I need to know about upgrading from LTI 1.1 to LTI 1.3 in regards to MATLAB Grader? What do I need to know about upgrading from LTI 1.1 to LTI 1.3 in regards to MATLAB Grader? MATLAB Answers — New Questions
Help exporting a geotiff with a transparent background
I am working on a project where I want to export two geotiffs, the first is basically a georeferenced screenshot of data in a geoaxes with the satellite base map. I have this one working fine. The second one that I want to export is just the data, I have three datasets im trying to export, lat/long points, depth data (im currently plotting this with geoscatter) and contour lines. No matter what I try all im exporting is a black square and no data. Below is my code at just exporting the data with a transparent background.
I thought no background would be easier but I guess not, im having a tough time with it. Also, just an FYI, this is a small part of a very large project im working on so all of the variable names are brought in through other functions.
res = 0.00005;
lat_v = min(lat):res:max(lat);
long_v = min(long):res:max(long);
[long_grid,lat_grid] = meshgrid(long_v,lat_v);
depth_grid = griddata(long,lat,depth,long_grid,lat_grid,’natural’);
% C = contourc(lonv,latv,depth_grid,5);
R = georefcells([min(lat_v) max(lat_v)], [min(long_v) max(long_v)], size(depth_grid));
R.ColumnsStartFrom = ‘north’;
geotiffwrite(output_file, depth_grid, R);I am working on a project where I want to export two geotiffs, the first is basically a georeferenced screenshot of data in a geoaxes with the satellite base map. I have this one working fine. The second one that I want to export is just the data, I have three datasets im trying to export, lat/long points, depth data (im currently plotting this with geoscatter) and contour lines. No matter what I try all im exporting is a black square and no data. Below is my code at just exporting the data with a transparent background.
I thought no background would be easier but I guess not, im having a tough time with it. Also, just an FYI, this is a small part of a very large project im working on so all of the variable names are brought in through other functions.
res = 0.00005;
lat_v = min(lat):res:max(lat);
long_v = min(long):res:max(long);
[long_grid,lat_grid] = meshgrid(long_v,lat_v);
depth_grid = griddata(long,lat,depth,long_grid,lat_grid,’natural’);
% C = contourc(lonv,latv,depth_grid,5);
R = georefcells([min(lat_v) max(lat_v)], [min(long_v) max(long_v)], size(depth_grid));
R.ColumnsStartFrom = ‘north’;
geotiffwrite(output_file, depth_grid, R); I am working on a project where I want to export two geotiffs, the first is basically a georeferenced screenshot of data in a geoaxes with the satellite base map. I have this one working fine. The second one that I want to export is just the data, I have three datasets im trying to export, lat/long points, depth data (im currently plotting this with geoscatter) and contour lines. No matter what I try all im exporting is a black square and no data. Below is my code at just exporting the data with a transparent background.
I thought no background would be easier but I guess not, im having a tough time with it. Also, just an FYI, this is a small part of a very large project im working on so all of the variable names are brought in through other functions.
res = 0.00005;
lat_v = min(lat):res:max(lat);
long_v = min(long):res:max(long);
[long_grid,lat_grid] = meshgrid(long_v,lat_v);
depth_grid = griddata(long,lat,depth,long_grid,lat_grid,’natural’);
% C = contourc(lonv,latv,depth_grid,5);
R = georefcells([min(lat_v) max(lat_v)], [min(long_v) max(long_v)], size(depth_grid));
R.ColumnsStartFrom = ‘north’;
geotiffwrite(output_file, depth_grid, R); geotiff MATLAB Answers — New Questions
SharePoint Online Drops One Time Passcodes for External Access
Entra B2B Collaboration (Guest Accounts) Becomes the Basis for Access to Shared Files and Folders
Microsoft 365 message center notification MC1243549 (4 Mar 2026) brings news of the final deprecation of One-Time Passcodes (OTP) within SharePoint Online and OneDrive for Business from July 2026.
The journey to remove OTP from SharePoint Online and OneDrive for Business started in 2021 on an opt-in basis. Microsoft took the next step by automatically enabling the integration for new tenants in 2023. In July 2025, SharePoint Online deprecated OTP for tenants that had previously opted to integrate with Entra B2B Collaboration. All that’s left are tenants created before mid-2023 that chose to keep on using OTP.
Retirement Timeline
Starting in May 2026, any external invitations to share files or folders will use Entra B2B Collaboration (guest accounts) instead of OTP. Links that use OTP created before the switchover will continue to work as before until the retirement happens in July 2026. At that point, the links fail because of a lack of authentication. To continue sharing, people will have to create new sharing links. Use of the new links will prompt the Entra Invitation Manager to automatically create guest accounts for the link recipients.
Microsoft expects the retirement to be effective across Microsoft 365 (commercial, government, and sovereign clouds) by August 31, 2026.
Leveraging Guest Accounts
The change makes a lot of sense. OTP is a one-time operation that works, but it doesn’t support tracking external access to information in the tenant in the same way that a guest account does. A governance framework is available to manage and control guest accounts in a way that just isn’t possible for OTP actions, including auditing, control over guest account connections by Entra conditional access policies, and a B2B Collaboration policy to govern which domains guest accounts can come from.
It can be argued that removing OTP simplifies external access to files and folders because a single method will now be used, but that’s not the real story here. In a nutshell, Microsoft is dumping SharePoint OTP to take advantage of the work done over the last few years to develop and enhance guest account management. The change will also rationalize engineering and support costs because a single sharing authentication method will be used instead of the two in use today.
A Proliferation of Guest Accounts to Manage
I’ve used Entra B2B Collaboration with SharePoint Online and OneDrive for Business since 2021 and have no problems with operation or features. Everything just works. Tenants that already support external guest accounts for Teams and Outlook groups probably already use B2B Collaboration to share SharePoint content and will see no difference.
The challenge will be for tenants that move from OTP and don’t currently manage guest accounts (or perhaps don’t manage guest accounts as well as they should). These tenants can expect to see more guest accounts show up in their Entra directory. The number depends on how much external sharing happens within the tenant.

Among the issues that should be addressed include:
- Create a framework to manage guest accounts. The Entra B2B Collaboration policy is an important part of the framework, which might also include assigning sponsors to guest accounts to track the responsibility for granting access to the tenant.
- Determine how long a guest account can remain in the tenant. Entra ID access reviews are a good way to ensure that guest accounts are checked and removed if they fail a review. Access Reviews need Entra P1 licenses. Microsoft created a Copilot agent designed to make access reviews easier for tenants to manage. However, the high consumption of AI resources and the resulting costs made the agent a very expensive proposition. This might be why Microsoft decided not to bring the agent forward to general availability and withdraw the preview on March 27, 2026.
- A cheaper approach is to create an inactive guest account report with PowerShell to identify accounts that are no longer in use and can be removed.
- Enable an Expiring Access Policy to remove guest access from sites after a set period .(Figure 1)
- Set up an Azure subscription to pay for guest account access to premium features. Entra ID includes 50,000 free monthly active users (MAU) for guest accounts.
Guest accounts aren’t bad. Like many other parts of Microsoft 365, they just need to be managed on an ongoing basis.
Learn about managing Entra ID guest accounts and the rest of the Microsoft 365 ecosystem by subscribing to the Office 365 for IT Pros eBook. Use our experience to understand what’s important and how best to protect your tenant.
How can I increase a count in the while iterator block?
I am trying to run a whilte iterator block for the convergence of a variable, but this variable is not decreasing at all.
The goal is to reach at Display3 a value higher than 7.94 (Psep) and Display1 to show a value lesser than 31.
Could you help with this matter?
Thanks in advance.I am trying to run a whilte iterator block for the convergence of a variable, but this variable is not decreasing at all.
The goal is to reach at Display3 a value higher than 7.94 (Psep) and Display1 to show a value lesser than 31.
Could you help with this matter?
Thanks in advance. I am trying to run a whilte iterator block for the convergence of a variable, but this variable is not decreasing at all.
The goal is to reach at Display3 a value higher than 7.94 (Psep) and Display1 to show a value lesser than 31.
Could you help with this matter?
Thanks in advance. use of a while iterator block, convergence, simulink MATLAB Answers — New Questions
How to find and utilize a “built-in method % static method or namespace function”
I have a piece of code that uses the MEX file tifflib.mexw64. Up through R2024a, this file could be found at $matlabroottoolboxmatlabmatlab_imagestiffprivatetifflib.mexw64.
However, beginning in R2024b, this file no longer ships with MATLAB, which causes my code to fail.
I think I have identified the source of the issue by examining the built-in class Tiff.m, which also utilizes tifflib.mexw64. In the 2024a version, this mex file is accessed using the command tifflib(<args>). But in the 2025a version, the call is to matlab.internal.imagesci.tifflib(<args>). I tried to determine where the function resides by typing
which("matlab.internal.imagesci.tifflib")
on the command line in R2025a. The output is
"tifflib is a built-in method % static method or namespace function"
I don’t understand this output. Does it mean that tifflib.mex no longer exists as a stand-alone file and is now bundled into the matlab code itself, somehow?
My main goal is to continue to use tifflib functions without modifying my code. I could, of course, change all of my tifflib calls to point to matlab.internal.imagesci.tifflib(<args>), but I suspect that would break backwards compatibility. The easiest solution might be to copy the tifflib that ships with R2025a (if I can locate it) to a /private folder where my code can access it. But I’m open to other approaches as well. Thanks for any alternative suggestions on how to deal with this.I have a piece of code that uses the MEX file tifflib.mexw64. Up through R2024a, this file could be found at $matlabroottoolboxmatlabmatlab_imagestiffprivatetifflib.mexw64.
However, beginning in R2024b, this file no longer ships with MATLAB, which causes my code to fail.
I think I have identified the source of the issue by examining the built-in class Tiff.m, which also utilizes tifflib.mexw64. In the 2024a version, this mex file is accessed using the command tifflib(<args>). But in the 2025a version, the call is to matlab.internal.imagesci.tifflib(<args>). I tried to determine where the function resides by typing
which("matlab.internal.imagesci.tifflib")
on the command line in R2025a. The output is
"tifflib is a built-in method % static method or namespace function"
I don’t understand this output. Does it mean that tifflib.mex no longer exists as a stand-alone file and is now bundled into the matlab code itself, somehow?
My main goal is to continue to use tifflib functions without modifying my code. I could, of course, change all of my tifflib calls to point to matlab.internal.imagesci.tifflib(<args>), but I suspect that would break backwards compatibility. The easiest solution might be to copy the tifflib that ships with R2025a (if I can locate it) to a /private folder where my code can access it. But I’m open to other approaches as well. Thanks for any alternative suggestions on how to deal with this. I have a piece of code that uses the MEX file tifflib.mexw64. Up through R2024a, this file could be found at $matlabroottoolboxmatlabmatlab_imagestiffprivatetifflib.mexw64.
However, beginning in R2024b, this file no longer ships with MATLAB, which causes my code to fail.
I think I have identified the source of the issue by examining the built-in class Tiff.m, which also utilizes tifflib.mexw64. In the 2024a version, this mex file is accessed using the command tifflib(<args>). But in the 2025a version, the call is to matlab.internal.imagesci.tifflib(<args>). I tried to determine where the function resides by typing
which("matlab.internal.imagesci.tifflib")
on the command line in R2025a. The output is
"tifflib is a built-in method % static method or namespace function"
I don’t understand this output. Does it mean that tifflib.mex no longer exists as a stand-alone file and is now bundled into the matlab code itself, somehow?
My main goal is to continue to use tifflib functions without modifying my code. I could, of course, change all of my tifflib calls to point to matlab.internal.imagesci.tifflib(<args>), but I suspect that would break backwards compatibility. The easiest solution might be to copy the tifflib that ships with R2025a (if I can locate it) to a /private folder where my code can access it. But I’m open to other approaches as well. Thanks for any alternative suggestions on how to deal with this. built-in functions, tiff, libtiff MATLAB Answers — New Questions
rename files using matlab
Hello all,
I have a folder on my desktop that has 10 text files as following:
A.txt
Abgd.txt
B.txt
Bbgd.txt
C.txt
Cbgd.txt
S.txt
Sbgd.txt
std.txt
stdbgd.txt
I want to write a code that the changes the names of the first 8 files. I want to rename these files and add an underline (i.e. ‘_’) after the first letterof each file. So my output should look like this:
A_.txt
A_bgd.txt
B_.txt
B_bgd.txt
C_.txt
C_bgd.txt
S_.txt
S_bgd.txt
Here is what I have done so far:
clear all; clc;
d = ‘C:UserskrrazDesktopDay13*.txt’;
oldnames = dir(d);
oldnames = {oldnames(~[oldnames.isdir]).name};
L = length(oldnames);
oldnames = oldnames(1:L-2);
points = oldnames(1:2:end);
points = cellfun(@(x) x(1:1), points, ‘UniformOutput’, false);
strr = ‘_.txt’; strr = string(strr);
for n = 1:numel(points)
formatSpec = ‘%1$s%2$s’;
points{n} = sprintf(formatSpec,points{n},strr);
end
bgds = oldnames(2:2:end);
bgds = cellfun(@(x) x(1:1), bgds, ‘UniformOutput’, false);
strr = ‘_bgd.txt’; strr = string(strr);
for n = 1:numel(bgds)
formatSpec = ‘%1$s%2$s’;
bgds{n} = sprintf(formatSpec,bgds{n},strr);
end
newnames = [points bgds];
newnames = sort(newnames);
for j=1:numel(oldnames)
movefile(d,newnames{j},’f’);
end
But when I run my code, It generates a new folder on my desktop and doesn’t change the names of the files. What am I doing wrong?
Any insight will be appreciated.Hello all,
I have a folder on my desktop that has 10 text files as following:
A.txt
Abgd.txt
B.txt
Bbgd.txt
C.txt
Cbgd.txt
S.txt
Sbgd.txt
std.txt
stdbgd.txt
I want to write a code that the changes the names of the first 8 files. I want to rename these files and add an underline (i.e. ‘_’) after the first letterof each file. So my output should look like this:
A_.txt
A_bgd.txt
B_.txt
B_bgd.txt
C_.txt
C_bgd.txt
S_.txt
S_bgd.txt
Here is what I have done so far:
clear all; clc;
d = ‘C:UserskrrazDesktopDay13*.txt’;
oldnames = dir(d);
oldnames = {oldnames(~[oldnames.isdir]).name};
L = length(oldnames);
oldnames = oldnames(1:L-2);
points = oldnames(1:2:end);
points = cellfun(@(x) x(1:1), points, ‘UniformOutput’, false);
strr = ‘_.txt’; strr = string(strr);
for n = 1:numel(points)
formatSpec = ‘%1$s%2$s’;
points{n} = sprintf(formatSpec,points{n},strr);
end
bgds = oldnames(2:2:end);
bgds = cellfun(@(x) x(1:1), bgds, ‘UniformOutput’, false);
strr = ‘_bgd.txt’; strr = string(strr);
for n = 1:numel(bgds)
formatSpec = ‘%1$s%2$s’;
bgds{n} = sprintf(formatSpec,bgds{n},strr);
end
newnames = [points bgds];
newnames = sort(newnames);
for j=1:numel(oldnames)
movefile(d,newnames{j},’f’);
end
But when I run my code, It generates a new folder on my desktop and doesn’t change the names of the files. What am I doing wrong?
Any insight will be appreciated. Hello all,
I have a folder on my desktop that has 10 text files as following:
A.txt
Abgd.txt
B.txt
Bbgd.txt
C.txt
Cbgd.txt
S.txt
Sbgd.txt
std.txt
stdbgd.txt
I want to write a code that the changes the names of the first 8 files. I want to rename these files and add an underline (i.e. ‘_’) after the first letterof each file. So my output should look like this:
A_.txt
A_bgd.txt
B_.txt
B_bgd.txt
C_.txt
C_bgd.txt
S_.txt
S_bgd.txt
Here is what I have done so far:
clear all; clc;
d = ‘C:UserskrrazDesktopDay13*.txt’;
oldnames = dir(d);
oldnames = {oldnames(~[oldnames.isdir]).name};
L = length(oldnames);
oldnames = oldnames(1:L-2);
points = oldnames(1:2:end);
points = cellfun(@(x) x(1:1), points, ‘UniformOutput’, false);
strr = ‘_.txt’; strr = string(strr);
for n = 1:numel(points)
formatSpec = ‘%1$s%2$s’;
points{n} = sprintf(formatSpec,points{n},strr);
end
bgds = oldnames(2:2:end);
bgds = cellfun(@(x) x(1:1), bgds, ‘UniformOutput’, false);
strr = ‘_bgd.txt’; strr = string(strr);
for n = 1:numel(bgds)
formatSpec = ‘%1$s%2$s’;
bgds{n} = sprintf(formatSpec,bgds{n},strr);
end
newnames = [points bgds];
newnames = sort(newnames);
for j=1:numel(oldnames)
movefile(d,newnames{j},’f’);
end
But when I run my code, It generates a new folder on my desktop and doesn’t change the names of the files. What am I doing wrong?
Any insight will be appreciated. file rename MATLAB Answers — New Questions
installation issues – license
tried to use my downloaded license and get this error
MathWorks Licensing Error 21
Unable to find a license for this release of MATLAB.
Activate your license to get a new license file.
For help with this issue, see this support article:
https://www.mathworks.com/support/lme/21
Details for Support
Feature: MATLAB
License: /Users/proca/Library/Application Support/MathWorks/MATLAB/R2025b_licenses/license_proca-mac2.roam.internal_970284_R2025b.lic:/Applications/MATLAB_R2025b.app/licenses/license.dat:/Applications/MATLAB_R2025b.app/licenses/*.lic
Error Code: -21.2tried to use my downloaded license and get this error
MathWorks Licensing Error 21
Unable to find a license for this release of MATLAB.
Activate your license to get a new license file.
For help with this issue, see this support article:
https://www.mathworks.com/support/lme/21
Details for Support
Feature: MATLAB
License: /Users/proca/Library/Application Support/MathWorks/MATLAB/R2025b_licenses/license_proca-mac2.roam.internal_970284_R2025b.lic:/Applications/MATLAB_R2025b.app/licenses/license.dat:/Applications/MATLAB_R2025b.app/licenses/*.lic
Error Code: -21.2 tried to use my downloaded license and get this error
MathWorks Licensing Error 21
Unable to find a license for this release of MATLAB.
Activate your license to get a new license file.
For help with this issue, see this support article:
https://www.mathworks.com/support/lme/21
Details for Support
Feature: MATLAB
License: /Users/proca/Library/Application Support/MathWorks/MATLAB/R2025b_licenses/license_proca-mac2.roam.internal_970284_R2025b.lic:/Applications/MATLAB_R2025b.app/licenses/license.dat:/Applications/MATLAB_R2025b.app/licenses/*.lic
Error Code: -21.2 license MATLAB Answers — New Questions
Wait for user to delete points in a plot and then continue with rest of code
I am trying to write a piece of code that plots points, lets a user delete certain points (right now I am doing it through brushing and clicking "Remove Brushed"), and then updates the source data to later be used for further execution (using linkdata). However, functions like uiwait and waitfor stall the whole execution and do not allow the user to use "Remove Brushed." Here, removing extraneous points is crucial for the transformation function in step 3.
It seems like "Removed Brushed" only works after code execution is totally complete. I could simply have users run two scripts/functions, or ask them to run steps 2 and 3 as different sections, but I want this to be as easy as possible for users.
Is there something I am missing? Are there other (visual) ways for users to delete points and update the data (or save as another variable)? Any help would be greatly appreciated.
% STEP 1: Import (example) data
exported_centers = [5,10; 5,7];
image_centers = [6,10; 6,7; 10,4];
% STEP 2: Clean up unpaired image_centers not associated with a exported_center
fig = figure; hold on
ax = gca;
ax.XLim(1) = 0; ax.XLim(2) = 15;
ax.YLim(1) = 0; ax.YLim(2) = 15;
% reference image in blue, exported particles red
scatter(image_centers(:,1),image_centers(:,2),40,’filled’,’o’,’MarkerFaceColor’,’b’)
scatter(exported_centers(:,1),exported_centers(:,2),40,’filled’,’o’,’MarkerFaceColor’,’r’)
message = sprintf(‘Drag left click around blue points that do not look to have a red dot associated with it. nThen, right click on the gray point and select Remove Brushed’);
msgbox(message)
linkdata on
b = brush;
b.Enable = ‘on’;
b.Color = [0.5 0.5 0.5]; % gray
% waitfor(msgbox(message)) nope
% waitfor(fig) nope
% uiwait(fig) nope
% uiwait(msgbox(message)) nope
% while ~waitforbuttonpress
% end nope
% input(‘Press Enter to continue…’) nope
% pause; nope
% return; yes, but defeats the purpose of continuing onto step 3
% STEP 3: Transform! – breaks if users not allowed to delete extraneous points
tform = fitgeotrans(exported_centers,image_centers,’affine’);
[tX,tY] = transformPointsForward(tform,exported_centers(:,1),exported_centers(:,2));
newPos = horzcat(tX,tY); % newPos is updated particle positionsI am trying to write a piece of code that plots points, lets a user delete certain points (right now I am doing it through brushing and clicking "Remove Brushed"), and then updates the source data to later be used for further execution (using linkdata). However, functions like uiwait and waitfor stall the whole execution and do not allow the user to use "Remove Brushed." Here, removing extraneous points is crucial for the transformation function in step 3.
It seems like "Removed Brushed" only works after code execution is totally complete. I could simply have users run two scripts/functions, or ask them to run steps 2 and 3 as different sections, but I want this to be as easy as possible for users.
Is there something I am missing? Are there other (visual) ways for users to delete points and update the data (or save as another variable)? Any help would be greatly appreciated.
% STEP 1: Import (example) data
exported_centers = [5,10; 5,7];
image_centers = [6,10; 6,7; 10,4];
% STEP 2: Clean up unpaired image_centers not associated with a exported_center
fig = figure; hold on
ax = gca;
ax.XLim(1) = 0; ax.XLim(2) = 15;
ax.YLim(1) = 0; ax.YLim(2) = 15;
% reference image in blue, exported particles red
scatter(image_centers(:,1),image_centers(:,2),40,’filled’,’o’,’MarkerFaceColor’,’b’)
scatter(exported_centers(:,1),exported_centers(:,2),40,’filled’,’o’,’MarkerFaceColor’,’r’)
message = sprintf(‘Drag left click around blue points that do not look to have a red dot associated with it. nThen, right click on the gray point and select Remove Brushed’);
msgbox(message)
linkdata on
b = brush;
b.Enable = ‘on’;
b.Color = [0.5 0.5 0.5]; % gray
% waitfor(msgbox(message)) nope
% waitfor(fig) nope
% uiwait(fig) nope
% uiwait(msgbox(message)) nope
% while ~waitforbuttonpress
% end nope
% input(‘Press Enter to continue…’) nope
% pause; nope
% return; yes, but defeats the purpose of continuing onto step 3
% STEP 3: Transform! – breaks if users not allowed to delete extraneous points
tform = fitgeotrans(exported_centers,image_centers,’affine’);
[tX,tY] = transformPointsForward(tform,exported_centers(:,1),exported_centers(:,2));
newPos = horzcat(tX,tY); % newPos is updated particle positions I am trying to write a piece of code that plots points, lets a user delete certain points (right now I am doing it through brushing and clicking "Remove Brushed"), and then updates the source data to later be used for further execution (using linkdata). However, functions like uiwait and waitfor stall the whole execution and do not allow the user to use "Remove Brushed." Here, removing extraneous points is crucial for the transformation function in step 3.
It seems like "Removed Brushed" only works after code execution is totally complete. I could simply have users run two scripts/functions, or ask them to run steps 2 and 3 as different sections, but I want this to be as easy as possible for users.
Is there something I am missing? Are there other (visual) ways for users to delete points and update the data (or save as another variable)? Any help would be greatly appreciated.
% STEP 1: Import (example) data
exported_centers = [5,10; 5,7];
image_centers = [6,10; 6,7; 10,4];
% STEP 2: Clean up unpaired image_centers not associated with a exported_center
fig = figure; hold on
ax = gca;
ax.XLim(1) = 0; ax.XLim(2) = 15;
ax.YLim(1) = 0; ax.YLim(2) = 15;
% reference image in blue, exported particles red
scatter(image_centers(:,1),image_centers(:,2),40,’filled’,’o’,’MarkerFaceColor’,’b’)
scatter(exported_centers(:,1),exported_centers(:,2),40,’filled’,’o’,’MarkerFaceColor’,’r’)
message = sprintf(‘Drag left click around blue points that do not look to have a red dot associated with it. nThen, right click on the gray point and select Remove Brushed’);
msgbox(message)
linkdata on
b = brush;
b.Enable = ‘on’;
b.Color = [0.5 0.5 0.5]; % gray
% waitfor(msgbox(message)) nope
% waitfor(fig) nope
% uiwait(fig) nope
% uiwait(msgbox(message)) nope
% while ~waitforbuttonpress
% end nope
% input(‘Press Enter to continue…’) nope
% pause; nope
% return; yes, but defeats the purpose of continuing onto step 3
% STEP 3: Transform! – breaks if users not allowed to delete extraneous points
tform = fitgeotrans(exported_centers,image_centers,’affine’);
[tX,tY] = transformPointsForward(tform,exported_centers(:,1),exported_centers(:,2));
newPos = horzcat(tX,tY); % newPos is updated particle positions image processing, image, graph MATLAB Answers — New Questions
Measuring KPIs like Response Times for Shared Mailboxes
Shared Mailboxes Are Not CRM Systems: Limited Measurements Are Possible
Although they’re not designed to act like a customer relationship management (CRM), many organizations use shared mailboxes to capture and respond to customer interactions. Shared mailboxes don’t consume Exchange Online licenses unless they use more than the standard 50 GB mailbox quota, have an archive. On the other hand, shared mailboxes might need Microsoft Defender for Office 365 (MDO) licenses if they handle external email. Either way, the cost of shared mailboxes is low compared to the available functionality.
Because shared mailboxes are used to handle customer interactions, questions like this arise (from the Microsoft Technical Community):
“I am looking to create report for management for our KPI. Management want to know how quick teams are replying to email once it’s landed to mailbox. Also, average reply time for the particular mailbox for a day or week or month.”
Here is a similar example from Microsoft Answers.
The easy response is to explain that a shared mailbox is a repository for email that can be shared by a team such as a set of customer agents but that the mailbox comes with none of the accompanying infrastructure needed to track aspects like responsiveness, agent activity, or customer satisfaction. This doesn’t mean that organizations or ISVs cannot design and implement structures around shared mailboxes to capture information that might be useful to measure productivity and to ensure that customer queries are dealt with efficiently. But you still run into the issue that shared mailboxes are simply not designed for this purpose.
Analyzing Inbox Traffic for Shared Mailboxes
The Office 365 for IT Pros eBook team has customers, and we use shared mailboxes to handle queries about book availability, duplicate purchases, lost download codes, and so on. We also receive a bunch of messages from people who would like to post articles on Office365itpros.com. Because we have shared mailboxes with real-life customer communications, it seemed like a good idea to test what information could be extracted using the Microsoft Graph and PowerShell to measure aspects like the response time for inbound messages.
There’s even a specific Graph permission (Mail.Read.Shared) to handle access to items in shared mailboxes. Signed-in users with full access to shared mailboxes can use the permission to read items with cmdlets like Get-MgUserMailFolderMessage to retrieve items from shared mailboxes.
It’s impossible to know how people use shared mailboxes or what they want to extract in terms of analysis, so the script I wrote to explore the principles of retrieving information from shared mailboxes focuses on measuring the speed of responses to inbound messages. Figure 1 shows the result with a list of queries arriving in the mailbox and the average time for a first response and time to final response. The time for the first response seems unacceptable at over six hours, but some of the queries came in from Australia and New Zealand when no one was monitoring the mailbox!

The script can be downloaded from the Office 365 for IT Pros GitHub repository. Feel free to amend the code to meet specific organizational requirements. The script can analyze one or multiple shared mailboxes over the last 180 days (configurable).
Conversations and Threads
When Exchange Online delivers a message to a mailbox, it assigns a conversation identifier to the message. If Exchange can match the message as a reply to an existing conversation, it takes the identifier for that conversation. Otherwise, Exchange creates a new identifier. The messages that share a conversation identifier form a thread composed of the original message and its replies.
Messages in a conversation can exist in several folders (Inbox, Sent Items, and Deleted Items are common), but the Get-MgUserMessage cmdlet can use a filter to find all messages sharing a conversation identifier. For example:
[array]$ThreadItems = Get-MgUserMessage -UserId $Mailbox -Filter "conversationID eq '$ConversationId'"
The script works by tracking conversations and measuring the elapsed between a message arriving, the first response, and the last message in the thread. We assume that the last message marks a successful conclusion to the conversation.
Tracking messages via conversation identifiers is not foolproof. New threads can be created by users adding or removing addresses from responses. However, conversation identifiers are probably the most effective out-of-the-box method to track messages from initial enquiry to final response.
Finding Messages in Other Ways
Outside of conversation identifiers, you could try to tie messages together in different ways. For example, you could add some form of unique identifier to the subject of replies generated. It’s possible to filter messages by subject, so this would find the items in a set except the initial message, which would have to be added through a separate search. Another approach might inject a unique identifier into the message body to enable searching message bodies for the identifier. For example:
Get-MgUserMessage -UserId $Mailbox -Search "Body:IdentifierXXX”
Inserting identifiers in message subjects or bodies is something that could be done manually. However, an add-in would do a more reliable job. I didn’t investigate this topic any further.
Determining Who Responds to a Query
The script attempts to extract the email addresses of agents who respond to messages. However, this is not easy. Multiple people might be involved in a conversation from inside and outside the organization. Knowing who are agents whose activity should be measured is highly specific to an organization.
Users with access to a shared mailbox can add one or more categories to items, so items can be tagged with categories to capture information about the assigned agent. However, the categories can be overwritten by anyone with full access to the mailbox, so depending on categories is not reliable.
It’s possible to know if someone other than the shared mailbox responds to a query if they use the Send on Behalf Of mailbox permission rather than the Send As permission. In the first case, Outlook captures the agent’s email address as the sender while in the second Outlook records the name of the shared mailbox as the sender. Outlook is working as designed here because the Send As permission essentially allows someone to impersonate the shared mailbox.
An Example, Not a Solution
I don’t pretend that the solution presented in the script will satisfy anyone seeking detailed statistics about agent performance in answering inbound client queries that arrive in a shared mailbox. That’s not what I set out to do. Instead. The script explores the principles involved in extracting items from shared mailboxes and using that data to answer questions. What you do with those principles is up to you.
Insight like this doesn’t come easily. You’ve got to know the technology and understand how to look behind the scenes. Benefit from the knowledge and experience of the Office 365 for IT Pros team by subscribing to the best eBook covering Office 365 and the wider Microsoft 365 ecosystem.
How to change drone mass and corresponding thrust configuration in UAV Package Delivery example?
Hi!
I am using the UAV Package Delivery example model with the high-fidelity plant model (shortcut 8).
In the data dictionary uavPackageDeliveryDataDict.sldd, I see the parameter Vehicle.Airframe.mass (default value = 0.063 kg) inside the Vehicle struct. With the default mass, the UAV can take off and hover properly. However, when I increase the mass to a higher value (e.g., 0.15 kg), the UAV can no longer take off.
From this behavior, I assume that in addition to changing the mass parameter, the thrust generation (motor model, thrust coefficient, maximum thrust, controller gains / trim thrust, rotor blade properties in the Vehicle struct, saturation limits, etc.) must also be updated accordingly.
Could you please advise:
Which parameters in this example control the maximum thrust / thrust-to-weight capability of the vehicle?
What is the recommended way to scale or retune the propulsion model and/or controller when changing the vehicle mass?
Are there specific blocks or parameters in the high-fidelity plant model (e.g., motor, propeller, or actuator models) that should be modified for this purpose?
Thank you very much for your support!Hi!
I am using the UAV Package Delivery example model with the high-fidelity plant model (shortcut 8).
In the data dictionary uavPackageDeliveryDataDict.sldd, I see the parameter Vehicle.Airframe.mass (default value = 0.063 kg) inside the Vehicle struct. With the default mass, the UAV can take off and hover properly. However, when I increase the mass to a higher value (e.g., 0.15 kg), the UAV can no longer take off.
From this behavior, I assume that in addition to changing the mass parameter, the thrust generation (motor model, thrust coefficient, maximum thrust, controller gains / trim thrust, rotor blade properties in the Vehicle struct, saturation limits, etc.) must also be updated accordingly.
Could you please advise:
Which parameters in this example control the maximum thrust / thrust-to-weight capability of the vehicle?
What is the recommended way to scale or retune the propulsion model and/or controller when changing the vehicle mass?
Are there specific blocks or parameters in the high-fidelity plant model (e.g., motor, propeller, or actuator models) that should be modified for this purpose?
Thank you very much for your support! Hi!
I am using the UAV Package Delivery example model with the high-fidelity plant model (shortcut 8).
In the data dictionary uavPackageDeliveryDataDict.sldd, I see the parameter Vehicle.Airframe.mass (default value = 0.063 kg) inside the Vehicle struct. With the default mass, the UAV can take off and hover properly. However, when I increase the mass to a higher value (e.g., 0.15 kg), the UAV can no longer take off.
From this behavior, I assume that in addition to changing the mass parameter, the thrust generation (motor model, thrust coefficient, maximum thrust, controller gains / trim thrust, rotor blade properties in the Vehicle struct, saturation limits, etc.) must also be updated accordingly.
Could you please advise:
Which parameters in this example control the maximum thrust / thrust-to-weight capability of the vehicle?
What is the recommended way to scale or retune the propulsion model and/or controller when changing the vehicle mass?
Are there specific blocks or parameters in the high-fidelity plant model (e.g., motor, propeller, or actuator models) that should be modified for this purpose?
Thank you very much for your support! uav, drone, simulink, simulation, visualization MATLAB Answers — New Questions
How can I simulate multiple UAVs (e.g., 2 vehicles) in the UAV Package Delivery example model, and what parts of the model need to be duplicated vs shared?
https://www.mathworks.com/help/uav/ug/uav-package-delivery.html
Hi!
I’m using the UAV Package Delivery example model (shortcut 8: photorealistic environment with high-fidelity plant model) and I want to simulate multiple UAVs in the same Simulink simulation (start with 2 UAVs).
My current assumption is that I need to duplicate some subsystems per UAV (plant, controller, sensors, etc.), but this model is large and complicated, so I’m not sure:
Which blocks/subsystems must be duplicated per UAV (plant + controller + estimator + guidance + sensors?)
Which blocks should be shared across all UAVs (scenario/world, environment, visualization, mission planner, etc.)
How the data flow should be organized so each UAV stays independent (namespaces, buses, variants, model references, data dictionaries, etc.)
How to correctly handle multiple instances of the Simulation 3D UAV Vehicle block / visualization, including transforms and coordinate frames, without conflicts
In addition, I eventually want each UAV to have its own mission plan coming from QGroundControl (QGC) (live mission feed). I found this related topic and plan to try it later, after I can run multiple UAVs first:
https://www.mathworks.com/matlabcentral/answers/1744715-how-to-get-multiple-mission-plan-from-q-ground-control-for-uav-package-delivery-example
Extra context:
I’m feeding a live predefined mission from QGC into the model.
I modified the Simulation 3D Scene Configuration block to use Cesium ion visualization instead of the default Unreal environment.
I’m currently working with the high-fidelity plant setup.
I’m using MATLAB R2025b
If possible, I’d appreciate guidance like “duplicate these subsystems, keep these shared,” and any best practices (Model Reference, For Each Subsystem, variant subsystems, buses, etc.).
Thanks a lot. I appreciate any help.https://www.mathworks.com/help/uav/ug/uav-package-delivery.html
Hi!
I’m using the UAV Package Delivery example model (shortcut 8: photorealistic environment with high-fidelity plant model) and I want to simulate multiple UAVs in the same Simulink simulation (start with 2 UAVs).
My current assumption is that I need to duplicate some subsystems per UAV (plant, controller, sensors, etc.), but this model is large and complicated, so I’m not sure:
Which blocks/subsystems must be duplicated per UAV (plant + controller + estimator + guidance + sensors?)
Which blocks should be shared across all UAVs (scenario/world, environment, visualization, mission planner, etc.)
How the data flow should be organized so each UAV stays independent (namespaces, buses, variants, model references, data dictionaries, etc.)
How to correctly handle multiple instances of the Simulation 3D UAV Vehicle block / visualization, including transforms and coordinate frames, without conflicts
In addition, I eventually want each UAV to have its own mission plan coming from QGroundControl (QGC) (live mission feed). I found this related topic and plan to try it later, after I can run multiple UAVs first:
https://www.mathworks.com/matlabcentral/answers/1744715-how-to-get-multiple-mission-plan-from-q-ground-control-for-uav-package-delivery-example
Extra context:
I’m feeding a live predefined mission from QGC into the model.
I modified the Simulation 3D Scene Configuration block to use Cesium ion visualization instead of the default Unreal environment.
I’m currently working with the high-fidelity plant setup.
I’m using MATLAB R2025b
If possible, I’d appreciate guidance like “duplicate these subsystems, keep these shared,” and any best practices (Model Reference, For Each Subsystem, variant subsystems, buses, etc.).
Thanks a lot. I appreciate any help. https://www.mathworks.com/help/uav/ug/uav-package-delivery.html
Hi!
I’m using the UAV Package Delivery example model (shortcut 8: photorealistic environment with high-fidelity plant model) and I want to simulate multiple UAVs in the same Simulink simulation (start with 2 UAVs).
My current assumption is that I need to duplicate some subsystems per UAV (plant, controller, sensors, etc.), but this model is large and complicated, so I’m not sure:
Which blocks/subsystems must be duplicated per UAV (plant + controller + estimator + guidance + sensors?)
Which blocks should be shared across all UAVs (scenario/world, environment, visualization, mission planner, etc.)
How the data flow should be organized so each UAV stays independent (namespaces, buses, variants, model references, data dictionaries, etc.)
How to correctly handle multiple instances of the Simulation 3D UAV Vehicle block / visualization, including transforms and coordinate frames, without conflicts
In addition, I eventually want each UAV to have its own mission plan coming from QGroundControl (QGC) (live mission feed). I found this related topic and plan to try it later, after I can run multiple UAVs first:
https://www.mathworks.com/matlabcentral/answers/1744715-how-to-get-multiple-mission-plan-from-q-ground-control-for-uav-package-delivery-example
Extra context:
I’m feeding a live predefined mission from QGC into the model.
I modified the Simulation 3D Scene Configuration block to use Cesium ion visualization instead of the default Unreal environment.
I’m currently working with the high-fidelity plant setup.
I’m using MATLAB R2025b
If possible, I’d appreciate guidance like “duplicate these subsystems, keep these shared,” and any best practices (Model Reference, For Each Subsystem, variant subsystems, buses, etc.).
Thanks a lot. I appreciate any help. uav, drone, simulink, simulation, visualization MATLAB Answers — New Questions
It seems that data is not recorded
Hello, since this morning (around 8h00 am, Paris time), data sent by my iots is not recorded. I have not changed any settings on my iots and my internet connection is OK. On the page with my channels, it seems that the channels are updated because I see that the "updated" times are evolving. Is there a problem today with Thingspeak?Hello, since this morning (around 8h00 am, Paris time), data sent by my iots is not recorded. I have not changed any settings on my iots and my internet connection is OK. On the page with my channels, it seems that the channels are updated because I see that the "updated" times are evolving. Is there a problem today with Thingspeak? Hello, since this morning (around 8h00 am, Paris time), data sent by my iots is not recorded. I have not changed any settings on my iots and my internet connection is OK. On the page with my channels, it seems that the channels are updated because I see that the "updated" times are evolving. Is there a problem today with Thingspeak? thingspeak, service down MATLAB Answers — New Questions
Does MATLAB run on (just announced) MacBook Neo
I do realize that Apple only just announced MacBook Neo, with an A-series chip. Given that MATLAB supports all M-series chips on current MacBooks, I’d like to know if MATLAB supports this new architecture?I do realize that Apple only just announced MacBook Neo, with an A-series chip. Given that MATLAB supports all M-series chips on current MacBooks, I’d like to know if MATLAB supports this new architecture? I do realize that Apple only just announced MacBook Neo, with an A-series chip. Given that MATLAB supports all M-series chips on current MacBooks, I’d like to know if MATLAB supports this new architecture? a-series chip MATLAB Answers — New Questions
Speed command spikes during host-controlled ramp on F28069M dual-motor dyno model
I’m using the mcb_pmsm_foc_qep_dyno_f28069m example with a TI F28069M LaunchPad and two DRV8305 booster packs in the motor-dyno configuration.
When I run the model with a constant RPM command from the host, both motors behave normally and the reference speed is stable.
However, when I switch to a ramp input from the host model (over the SCI TX/RX link), the target’s Speed_Ref_PU signal occasionally spikes to extreme values, causing the control loop to overflow and the motor to jerk or stall.
I’ve verified that:
The host model sends a continuous ramp through SCI without discontinuities.
The issue persists whether I send only “speed” or include the full SCI data vector (motor select, debug flags, enable bits).
The model works fine with single-step commands or static RPM inputs.
This makes me suspect that the serial communication framing or data synchronization in the receive path is being corrupted when streaming continuous values, possibly because the dyno model’s receive subsystem expects discrete “change-only” packets instead of continuous float updates.
Questions:
Is the dyno example’s SCI receive block designed for discrete or continuous data streaming?
What is the recommended way to send a smooth ramp command from the host without causing overflow?
Would it be more stable to generate the speed profile directly on the target model instead of streaming it over SCI?
Are there any updates or simplified single-motor examples for the F28069M that demonstrate host-controlled ramp inputs safely?
Any advice or updated example links would be greatly appreciated.I’m using the mcb_pmsm_foc_qep_dyno_f28069m example with a TI F28069M LaunchPad and two DRV8305 booster packs in the motor-dyno configuration.
When I run the model with a constant RPM command from the host, both motors behave normally and the reference speed is stable.
However, when I switch to a ramp input from the host model (over the SCI TX/RX link), the target’s Speed_Ref_PU signal occasionally spikes to extreme values, causing the control loop to overflow and the motor to jerk or stall.
I’ve verified that:
The host model sends a continuous ramp through SCI without discontinuities.
The issue persists whether I send only “speed” or include the full SCI data vector (motor select, debug flags, enable bits).
The model works fine with single-step commands or static RPM inputs.
This makes me suspect that the serial communication framing or data synchronization in the receive path is being corrupted when streaming continuous values, possibly because the dyno model’s receive subsystem expects discrete “change-only” packets instead of continuous float updates.
Questions:
Is the dyno example’s SCI receive block designed for discrete or continuous data streaming?
What is the recommended way to send a smooth ramp command from the host without causing overflow?
Would it be more stable to generate the speed profile directly on the target model instead of streaming it over SCI?
Are there any updates or simplified single-motor examples for the F28069M that demonstrate host-controlled ramp inputs safely?
Any advice or updated example links would be greatly appreciated. I’m using the mcb_pmsm_foc_qep_dyno_f28069m example with a TI F28069M LaunchPad and two DRV8305 booster packs in the motor-dyno configuration.
When I run the model with a constant RPM command from the host, both motors behave normally and the reference speed is stable.
However, when I switch to a ramp input from the host model (over the SCI TX/RX link), the target’s Speed_Ref_PU signal occasionally spikes to extreme values, causing the control loop to overflow and the motor to jerk or stall.
I’ve verified that:
The host model sends a continuous ramp through SCI without discontinuities.
The issue persists whether I send only “speed” or include the full SCI data vector (motor select, debug flags, enable bits).
The model works fine with single-step commands or static RPM inputs.
This makes me suspect that the serial communication framing or data synchronization in the receive path is being corrupted when streaming continuous values, possibly because the dyno model’s receive subsystem expects discrete “change-only” packets instead of continuous float updates.
Questions:
Is the dyno example’s SCI receive block designed for discrete or continuous data streaming?
What is the recommended way to send a smooth ramp command from the host without causing overflow?
Would it be more stable to generate the speed profile directly on the target model instead of streaming it over SCI?
Are there any updates or simplified single-motor examples for the F28069M that demonstrate host-controlled ramp inputs safely?
Any advice or updated example links would be greatly appreciated. c2000, sci, overflow, pmsm MATLAB Answers — New Questions
How to Test a File Against DLP Sensitive Information Types
New Option to Help Build Policies Based on Sensitive Information Types
Message Center notification MC1235742 (published 20 February 2026, Microsoft 365 roadmap item 557554) describes a new Microsoft Purview Data Loss Prevention (DLP) option designed to help administrators understand how the sensitive information types (SITs) used in DLP policies are picked up in files. The idea is that all organizations have examples of files that contain information they’d really prefer not to be shared externally. By testing these files against one or all SITs, they can discover which SITs they should use in rules in DLP policies to detect potential leakage violations.
The feature is already rolling out in public preview to targeted release Microsoft 365 tenants. Microsoft anticipates that general availability should follow in late March 2026 with full worldwide deployment complete in late April 2026.
Standard Sensitive Information Types
Microsoft 365 currently has more than 300 standard sensitive information type definitions. The standard SITs cover a very wide range of data types found across the world from passport numbers to bank account numbers. Credit card numbers are the classic example. Microsoft has refined the definitions used by SITs over the years to improve their reliability and address issues with mismatches that sometimes happened in the early days (like this example).
If necessary, individual tenants can create their own sensitive information type by defining patterns or through a process of document fingerprinting to allow Purview to detect occurrences.
Testing Files Against Sensitive Information Types
Test is a new option in the Sensitive Info Types section of the Purview Data Loss Prevention solution. It can be used to test a selected SIT or all available SITs against the content of a file that’s uploaded to Purview. The maximum file size for testing is 2.5 MB. A scan against all available SITs is a good way to identify what’s in a file. Once you have a list of SITs found in a file, you can perform more granular testing to determine the best SIT or SITs to check for in DLP rules.
In Figure 1, I uploaded the Word document for the DLP chapter from the Office 365 for IT Pros eBook for testing. After a couple of seconds, Purview responded with a set of match results. As you’d expect from a chapter covering DLP, Purview found many matches in the file, including the credit card numbers shown in Figure 1. From this result we can conclude that the file will match against a DLP rule that checks for credit card numbers.

Whether DLP reports and acts on a policy violation depends on the number of occurrences in the file and the thresholds defined for the rule. We can see that 4 low and 4 medium confidence matches exist, so a rule that looks for four or more matches will report a violation and invoke the actions defined by the policy.
Testing SITs Makes DLP Easier
DLP is a critical defense mechanism in the Purview portfolio. Not only can DLP policies stop inadvertent (or sometimes absolutely intentional) leakage of confidential information to external parties, the DLP policy for Copilot is an important method for stopping Microsoft 365 Copilot from reusing sensitive emails and files in AI-generated responses. If you have the necessary licenses (Office 365 E3 and above, or E5 for Teams and Copilot), DLP is a solution to pay attention to and deploy. Being able to test files against SITs makes that task a little easier.
Insight like this doesn’t come easily. You’ve got to know the technology and understand how to look behind the scenes. Benefit from the knowledge and experience of the Office 365 for IT Pros team by subscribing to the best eBook covering Office 365 and the wider Microsoft 365 ecosystem.
What is the correct way to save a large MATLAB structure?
I have a MATLAB structure which is just over 21GB in memory (from whos) and when I save this to a MAT file with the "-v7.3" and "-nocompression" flags it takes well over an hour (on a high performance workstation with an NVMe SSD) and I get a file which is 77GB on disk. I understand that there is some overhead in saving to a MAT file and that "-nocompression" will result in larger files that with compression (but I gave up after about 3 hours waiting for a compressed version to save), but how can 56GB of "overhead" be considered acceptable?
I only need to save this one structure and I won’t be adding any other data or modifying the MAT file, so all of the additional features of the v7.3 format are of no use to me, I just need support for >2Gb variables. I attempted to use the undocumented getByteStreamFromArray function to get a byte array I can just dump to a file but this just returned "Error during serialization".
Am I somehow missing a "correct" way to do this efficiently? Or are my only options to either split my data in to a bunch of <2Gb variables to save in a v7 format or write my own serializer? I appreciate that doing either of these isn’t exactly a massive job, I’m just very surprised there isn’t better native support for large files!I have a MATLAB structure which is just over 21GB in memory (from whos) and when I save this to a MAT file with the "-v7.3" and "-nocompression" flags it takes well over an hour (on a high performance workstation with an NVMe SSD) and I get a file which is 77GB on disk. I understand that there is some overhead in saving to a MAT file and that "-nocompression" will result in larger files that with compression (but I gave up after about 3 hours waiting for a compressed version to save), but how can 56GB of "overhead" be considered acceptable?
I only need to save this one structure and I won’t be adding any other data or modifying the MAT file, so all of the additional features of the v7.3 format are of no use to me, I just need support for >2Gb variables. I attempted to use the undocumented getByteStreamFromArray function to get a byte array I can just dump to a file but this just returned "Error during serialization".
Am I somehow missing a "correct" way to do this efficiently? Or are my only options to either split my data in to a bunch of <2Gb variables to save in a v7 format or write my own serializer? I appreciate that doing either of these isn’t exactly a massive job, I’m just very surprised there isn’t better native support for large files! I have a MATLAB structure which is just over 21GB in memory (from whos) and when I save this to a MAT file with the "-v7.3" and "-nocompression" flags it takes well over an hour (on a high performance workstation with an NVMe SSD) and I get a file which is 77GB on disk. I understand that there is some overhead in saving to a MAT file and that "-nocompression" will result in larger files that with compression (but I gave up after about 3 hours waiting for a compressed version to save), but how can 56GB of "overhead" be considered acceptable?
I only need to save this one structure and I won’t be adding any other data or modifying the MAT file, so all of the additional features of the v7.3 format are of no use to me, I just need support for >2Gb variables. I attempted to use the undocumented getByteStreamFromArray function to get a byte array I can just dump to a file but this just returned "Error during serialization".
Am I somehow missing a "correct" way to do this efficiently? Or are my only options to either split my data in to a bunch of <2Gb variables to save in a v7 format or write my own serializer? I appreciate that doing either of these isn’t exactly a massive job, I’m just very surprised there isn’t better native support for large files! save, big-data MATLAB Answers — New Questions
Create a Cartesian product with user-specified constraints
Hello,
I’m trying to figure out how to code a simple and flexible cartesian product function
To abstract how it works conceptually, let’s imagine we have a 4 X 10 matrix, with each column having ordered values 1 through 4, like this
1 1 1 1 1 1 etc
2 2 2 2 2 2 etc
3 3 3 3 3 3 etc
4 4 4 4 4 4 etc
The user specifies the number of rows and columns to be used to make the cartesian product. For example, if they specify 2 rows and 3 columns, the result should be (although the order doesn’t matter)
1 1 1
1 1 2
1 2 1
2 1 1
1 2 2
2 1 2
2 2 1
2 2 2
The closest function that I’ve found is
function C = cartesian(varargin)
% This function creates cartesian products from input arrays
args = varargin;
n = nargin;
[F{1:n}] = ndgrid(args{:});
for i=n:-1:1
G(:,i) = F{i}(:);
end
C = unique(G , ‘rows’);
end
However, it asks for a series of arrays as input. In my case, I need the input to be a matrix of variable dimensions. Thank you for any help!Hello,
I’m trying to figure out how to code a simple and flexible cartesian product function
To abstract how it works conceptually, let’s imagine we have a 4 X 10 matrix, with each column having ordered values 1 through 4, like this
1 1 1 1 1 1 etc
2 2 2 2 2 2 etc
3 3 3 3 3 3 etc
4 4 4 4 4 4 etc
The user specifies the number of rows and columns to be used to make the cartesian product. For example, if they specify 2 rows and 3 columns, the result should be (although the order doesn’t matter)
1 1 1
1 1 2
1 2 1
2 1 1
1 2 2
2 1 2
2 2 1
2 2 2
The closest function that I’ve found is
function C = cartesian(varargin)
% This function creates cartesian products from input arrays
args = varargin;
n = nargin;
[F{1:n}] = ndgrid(args{:});
for i=n:-1:1
G(:,i) = F{i}(:);
end
C = unique(G , ‘rows’);
end
However, it asks for a series of arrays as input. In my case, I need the input to be a matrix of variable dimensions. Thank you for any help! Hello,
I’m trying to figure out how to code a simple and flexible cartesian product function
To abstract how it works conceptually, let’s imagine we have a 4 X 10 matrix, with each column having ordered values 1 through 4, like this
1 1 1 1 1 1 etc
2 2 2 2 2 2 etc
3 3 3 3 3 3 etc
4 4 4 4 4 4 etc
The user specifies the number of rows and columns to be used to make the cartesian product. For example, if they specify 2 rows and 3 columns, the result should be (although the order doesn’t matter)
1 1 1
1 1 2
1 2 1
2 1 1
1 2 2
2 1 2
2 2 1
2 2 2
The closest function that I’ve found is
function C = cartesian(varargin)
% This function creates cartesian products from input arrays
args = varargin;
n = nargin;
[F{1:n}] = ndgrid(args{:});
for i=n:-1:1
G(:,i) = F{i}(:);
end
C = unique(G , ‘rows’);
end
However, it asks for a series of arrays as input. In my case, I need the input to be a matrix of variable dimensions. Thank you for any help! cartesian product MATLAB Answers — New Questions
Find model of a 2 to 4000 horsepower squirrel cage induction motor on a variable speed drive
Speed regulators are a poor choice for Mine Hoist control. Mine hoists consist of distributed masses connected with very long springy ropes tied to the conveyances. Thus the system can present varying natural frequencies. ALSO Double drum hoists present a mass to the speed regulator that varies by a factor or 4 or 5 times. Hoist clutched in (two drums full of rope) to clutched out (single drum no rope)
A much better choice: The speed torque characteristics of large synchronous and induction motors are well suited for this application. Mine Hoists are stand alone machines that do not require the speed and accuracy required in steel and paper mills.
I would like to validate these statments using Matlab simulation.Speed regulators are a poor choice for Mine Hoist control. Mine hoists consist of distributed masses connected with very long springy ropes tied to the conveyances. Thus the system can present varying natural frequencies. ALSO Double drum hoists present a mass to the speed regulator that varies by a factor or 4 or 5 times. Hoist clutched in (two drums full of rope) to clutched out (single drum no rope)
A much better choice: The speed torque characteristics of large synchronous and induction motors are well suited for this application. Mine Hoists are stand alone machines that do not require the speed and accuracy required in steel and paper mills.
I would like to validate these statments using Matlab simulation. Speed regulators are a poor choice for Mine Hoist control. Mine hoists consist of distributed masses connected with very long springy ropes tied to the conveyances. Thus the system can present varying natural frequencies. ALSO Double drum hoists present a mass to the speed regulator that varies by a factor or 4 or 5 times. Hoist clutched in (two drums full of rope) to clutched out (single drum no rope)
A much better choice: The speed torque characteristics of large synchronous and induction motors are well suited for this application. Mine Hoists are stand alone machines that do not require the speed and accuracy required in steel and paper mills.
I would like to validate these statments using Matlab simulation. asynchrous motor, sycronous motor, motor characteristics, variable speed drive, mine hoist MATLAB Answers — New Questions
How to make Crossed Dipole antenna with Cylindrical Dipoles
Hello, I am attempting to model an antenna array of crossed dipoles and realized that the dipole object returns a strip dipole element instead of a cylindrical dipole. The crossed dipole object does not seem able to accept the cylindrical dipole as an element input and would like to know how to make a crossed dipole element such that all contributions in all directions are accounted for. Thanks!Hello, I am attempting to model an antenna array of crossed dipoles and realized that the dipole object returns a strip dipole element instead of a cylindrical dipole. The crossed dipole object does not seem able to accept the cylindrical dipole as an element input and would like to know how to make a crossed dipole element such that all contributions in all directions are accounted for. Thanks! Hello, I am attempting to model an antenna array of crossed dipoles and realized that the dipole object returns a strip dipole element instead of a cylindrical dipole. The crossed dipole object does not seem able to accept the cylindrical dipole as an element input and would like to know how to make a crossed dipole element such that all contributions in all directions are accounted for. Thanks! antenna, dipole, crossed dipole, cylindrical dipole MATLAB Answers — New Questions
Microsoft Celebrates SharePoint 25th Anniversary with Announcements
Backup, Connections, and AI in SharePoint Feature
With the normal razzmatazz associated with SharePoint announcements, Microsoft marked SharePoint’s 25th anniversary with a bunch of announcements on Monday, March 2, 2026 (I discuss the anniversaries for Exchange (30th) and SharePoint (25th) here). If you prefer to read a version of the announcement in full marketing mode, you can read Jeff Teper’s note.
Like a lot of Microsoft announcements in the recent past, the text is liberally sprinkled with references to artificial intelligence, agents, and Microsoft 365 Copilot. Adam Harmetz mentions AI 34 times and Copilot 11 times in his description of the announcements. Given that less than 3.5% of the Microsoft 365 paid seats have licensed Microsoft 365 Copilot, I guess Microsoft must be hoping that more customers will be persuaded to use AI soon.
With that thought in mind, here are my highlights of the announcements, only one of which needs a Microsoft 365 Copilot license.
AI in SharePoint
Last year, Microsoft introduced the Knowledge Agent in preview. Customers with Microsoft 365 Copilot licenses will be able to use AI in SharePoint, which Microsoft says is natively integrated into the platform instead of being a separate agent. AI in SharePoint is designed to work across all of SharePoint Online instead of just sites or “AI in SharePoint lets teams plan, build, and evolve SharePoint solutions using natural language.”
Microsoft says that tenants that opted into the Knowledge Agent preview will automatically have access to the preview of AI in SharePoint. Opt-in is still available here. Microsoft has started to deploy AI in SharePoint to customer tenants and expect to have the deployment complete in the next few weeks. It seems like AI in SharePoint will use Anthrophic rather than OpenAI models, but we’ll have to see the final shape of the solution, particularly in respect of the ability of European Union and other non-US tenants to use Anthrophic. After everything is resolved, I’ll look forward to testing AI in SharePoint when it shows up in my tenant,
The Connections App Will Soon Be the SharePoint App
Microsoft is renaming the Viva Connections app in Microsoft Teams to be the SharePoint app, The change seems to be reasonable because the Teams app is simply a way of displaying home sites. Figure 1 shows the default home site for my tenant (configured through the Microsoft 365 admin center – soon to be configurable through the SharePoint admin center).

Microsoft says that customers who haven’t customized the Teams app will see the renamed app show up automatically. The change is covered by Microsoft 365 roadmap item 557983.
Departmental Billing for Microsoft 365 Backup
Microsoft 365 Backup has been available for a couple of years. Microsoft’s unique selling point for its backup solutions is that the data stays within their datacenter environment and removes the need to transfer data over internet links to external datacenters. When the time comes to restore data, the advantage of co-location is even more pronounced.
Until now, Microsoft 365 Backup has operated on a tenant-wide basis. In other words, configuration is done for sites selected from across the tenant and the costs of the backup are paid for through a single Azure subscription. The big change is that Microsoft is introducing department-level billing for Microsoft 365 backup. According to Microsoft, this update is generally available. However, it hasn’t yet turned up in my tenant – it takes time to distribute new software across an infrastructure the size of Microsoft 365.
Administrators can configure policies to cover different sites based on whatever organizational delimitations make sense, such as a department, operating company, or country. The point is that payment to backup a selected set of sites belonging to a part of the overall tenant is configured through pay-as-you-go in the Microsoft 365 admin center rather than an Azure subscription. The responsible body provides a credit card to fund the pay-as-you-go charges.
Billions and Billions of Files
Some of the statistics offered by Microsoft seemed off. Microsoft 365 has “over 450 million paid seats,” so it’s hard to know how SharePoint can serve more than 1 billion users each year. Maybe these are Gmail or other external accounts that Microsoft 365 users share files with. Microsoft also said that “over 2 billion files (are) uploaded every day” to SharePoint Online. I’ve heard that number (and some variations including higher values) over the past few years. The one billion users don’t seem to be very productive, but I do my best to meet my daily file upload quota.
So much change, all the time. It’s a challenge to stay abreast of all the updates Microsoft makes across the Microsoft 365 ecosystem. Subscribe to the Office 365 for IT Pros eBook to receive insights updated monthly into what happens within Microsoft 365, why it happens, and what new features and capabilities mean for your tenant.









