Month: August 2024
textprogress bar in parfor
this used to work in Matlab 2019b and before, to show a progressbar in parfor loop:
%% par pool
[~, output] = system(‘free -b | awk ”/Mem/{print $2}”’);
total_memory = str2double(output);
myCluster = min(ceil(total_memory / 1024^2 / 2 / 1000), round(maxNumCompThreads));
if isempty(gcp(‘nocreate’))
pool=parpool(myCluster,’IdleTimeout’, 604800);%1 week
end
nsim = 50
%% ———————————–
global P;
P = 1;
DataQueue = parallel.pool.DataQueue;
textprogressbar(‘start: ‘);
afterEach(DataQueue, @(ss) textprogressbar(P/nsim*100));
afterEach(DataQueue, @updateP);
parfor i = 1:nsim
send(DataQueue,i);
%someprocess
pause(0.1)
end
textprogressbar(‘ done’)
Now I updated to 2024a Update 4 (24.1.0.2628055). And even though the parloop run just fine, the progressbar is never updated.
Here the code of textprorgessbar I take somewhere from around here:
function textprogressbar(c)
% This function creates a text progress bar. It should be called with a
% STRING argument to initialize and terminate. Otherwise the number correspoding
% to progress in % should be supplied.
% INPUTS: C Either: Text string to initialize or terminate
% Percentage number to show progress
% OUTPUTS: N/A
% Example: Please refer to demo_textprogressbar.m
% Author: Paul Proteus (e-mail: proteus.paul (at) yahoo (dot) com)
% Version: 1.0
% Changes tracker: 29.06.2010 – First version
% Inspired by: http://blogs.mathworks.com/loren/2007/08/01/monitoring-progress-of-a-calculation/
%% Initialization
persistent strCR; % Carriage return pesistent variable
% Vizualization parameters
strPercentageLength = 6; % Length of percentage string (must be >5)
strDotsMaximum = 10; % The total number of dots in a progress bar
%% Main
if isempty(strCR) && ~ischar(c),
% Progress bar must be initialized with a string
error(‘The text progress must be initialized with a string’);
elseif isempty(strCR) && ischar(c),
% Progress bar – initialization
% fprintf(‘%s’,c);
tcprintf(‘green’,c);
strCR = -1;
elseif ~isempty(strCR) && ischar(c),
% Progress bar – termination
strCR = [];
% fprintf([c ‘n’]);
tcprintf(‘red’,[c ‘n’]);
elseif isnumeric(c)
% Progress bar – normal progress
c = floor(c);
percentageOut = [num2str(c) ‘%%’];
percentageOut = [percentageOut repmat(‘ ‘,1,strPercentageLength-length(percentageOut)-1)];
nDots = floor(c/100*strDotsMaximum);
dotOut = [‘[‘ repmat(‘.’,1,nDots) repmat(‘ ‘,1,strDotsMaximum-nDots) ‘]’];
strOut = [percentageOut dotOut];
% Print it on the screen BAR!!!!
if strCR == -1,
% Don’t do carriage return during first run
fprintf(strOut);
% tcprintf(‘yellow’,strOut);
else
% Do it during all the other runs
fprintf([strCR strOut]);
% tcprintf(‘yellow’,[strCR strOut]);
end
% Update carriage return
strCR = repmat(‘b’,1,length(strOut)-1);
else
% Any other unexpected input
error(‘Unsupported argument type’);
end
%%—————————————————
function tcprintf(style, fmatString, varargin)
% Uses ANSI escape codes to print colored output when using MATLAB
% from a terminal. If not running in a terminal, or if called by MATLAB’s
% datatipinfo function, tcprintf reverts to standard printf. The latter is
% desirable if tcprintf is used within an object’s disp() method to avoid
% seeing the ANSI characters here.
%
% The first argument is an style description that consists of space-separated
% words. These words may include:
%
% one of the following colors:
% black, red, green, yellow, blue, purple, cyan, darkGray, lightGray, white
%
% one of the following background colors:
% onBlack, onRed, onGreen, onYellow, onBlue, onPurple, onCyan, onWhite
%
% and any of the following modifiers:
% bright : use the bright (or bold) form of the color, not applicable for
% black, darkGray, lightGray, or white
% underline : draw an underline under each character
% blink : This is a mistake. Please don’t use this ever.
%
% Example:
% tcprintf(‘lightGray onRed underline’, ‘Message: %20sn’, msg);
%
% Author: Dan O’Shea dan at djoshea.com (c) 2012
%
% Released under the open source BSD license
% opensource.org/licenses/bsd-license.php
if nargin < 2 || ~ischar(style) || ~ischar(fmatString)
error(‘Usage: tcprintf(style, fmatString, …)’);
end
% determine if we’re using
usingTerminal = ~usejava(‘desktop’);
% determine if datatipinfo is higher on the stack. If tcprintf
% is used within an object’s disp() method, we don’t want to
% use color in the hover datatip or all you’ll see are ANSI codes.
stack = dbstack;
inDataTip = ismember(‘datatipinfo’, {stack.name});
if ~usingTerminal || inDataTip
% print the message without color and return
fprintf(fmatString, varargin{:});
return;
end
bright = 1;
[colorName backColorName bright underline blink] = parseStyle(style);
colorCodes = getColorCode(colorName, bright);
backColorCodes = getBackColorCode(backColorName);
codes = [colorCodes; backColorCodes];
if underline
codes = [codes; 4];
end
if blink
codes = [codes; 5];
end
codeStr = strjoin(codes, ‘;’);
% evaluate the printf style message
contents = sprintf(fmatString, varargin{:});
% if the message ends with a newline, we should turn off
% formatting before the newline to avoid issues with
% background colors
if ~isempty(contents) && contents(end) == char(10)
contents = contents(1:end-1);
endOfLine = char(10);
else
endOfLine = ”;
end
str = [’33[‘ codeStr ‘m’ contents ’33[0m’ endOfLine];
fprintf(str);
end
function [colorName backColorName bright underline blink] = parseStyle(style)
defaultColor = ‘white’;
defaultBackColor = ‘onDefault’;
tokens = regexp(style, ‘(?<value>S+)[s]?’, ‘names’);
values = {tokens.value};
if ismember(‘bright’, values)
bright = true;
else
bright = false;
end
if ismember(‘underline’, values)
underline = true;
else
underline = false;
end
if ismember(‘blink’, values)
blink = true;
else
blink = false;
end
% find foreground color
colorList = {‘black’, ‘darkGray’, ‘lightGray’, ‘red’, ‘green’, ‘yellow’, …
‘blue’, ‘purple’, ‘cyan’, ‘lightGray’, ‘white’, ‘default’};
idxColor = find(ismember(colorList, values), 1);
if ~isempty(idxColor)
colorName = colorList{idxColor};
else
colorName = defaultColor;
end
% find background color
backColorList = {‘onBlack’, ‘onRed’, ‘onGreen’, ‘onYellow’, ‘onBlue’, …
‘onPurple’, ‘onCyan’, ‘onWhite’, ‘onDefault’};
idxBackColor = find(ismember(backColorList, values), 1);
if ~isempty(idxBackColor)
backColorName = backColorList{idxBackColor};
else
backColorName = defaultBackColor;
end
end
function colorCodes = getColorCode(colorName, bright)
switch colorName
case ‘black’
code = 30;
bright = 0;
case ‘darkGray’;
code = 30;
bright = 1;
case ‘red’
code = 31;
case ‘green’
code = 32;
case ‘yellow’
code = 33;
case ‘blue’
code = 34;
case ‘purple’
code = 35;
case ‘cyan’
code = 36;
case ‘lightGray’
code = 37;
bright = 0;
case ‘white’
code = 37;
bright = 1;
case ‘default’
code = 39;
end
if bright
colorCodes = [1; code];
else
colorCodes = [code];
end
end
function colorCodes = getBackColorCode(colorName)
switch colorName
case ‘onBlack’
code = 40;
case ‘onRed’
code = 41;
case ‘onGreen’
code = 42;
case ‘onYellow’
code = 43;
case ‘onBlue’
code = 44;
case ‘onPurple’
code = 45;
case ‘onCyan’
code = 46;
case ‘onWhite’
code = 47;
case ‘onDefault’
code = 49;
end
colorCodes = code;
end
function str = strjoin(strCell, join)
% str = strjoin(strCell, join)
% creates a string by concatenating the elements of strCell, separated by the string
% in join (default = ‘, ‘)
%
% e.g. strCell = {‘a’,’b’}, join = ‘, ‘ [ default ] –> str = ‘a, b’
if nargin < 2
join = ‘, ‘;
end
if isempty(strCell)
str = ”;
else
if isnumeric(strCell) || islogical(strCell)
% convert numeric vectors to strings
strCell = arrayfun(@num2str, strCell, ‘UniformOutput’, false);
end
str = cellfun(@(str) [str join], strCell, …
‘UniformOutput’, false);
str = [str{:}];
str = str(1:end-length(join));
end
endthis used to work in Matlab 2019b and before, to show a progressbar in parfor loop:
%% par pool
[~, output] = system(‘free -b | awk ”/Mem/{print $2}”’);
total_memory = str2double(output);
myCluster = min(ceil(total_memory / 1024^2 / 2 / 1000), round(maxNumCompThreads));
if isempty(gcp(‘nocreate’))
pool=parpool(myCluster,’IdleTimeout’, 604800);%1 week
end
nsim = 50
%% ———————————–
global P;
P = 1;
DataQueue = parallel.pool.DataQueue;
textprogressbar(‘start: ‘);
afterEach(DataQueue, @(ss) textprogressbar(P/nsim*100));
afterEach(DataQueue, @updateP);
parfor i = 1:nsim
send(DataQueue,i);
%someprocess
pause(0.1)
end
textprogressbar(‘ done’)
Now I updated to 2024a Update 4 (24.1.0.2628055). And even though the parloop run just fine, the progressbar is never updated.
Here the code of textprorgessbar I take somewhere from around here:
function textprogressbar(c)
% This function creates a text progress bar. It should be called with a
% STRING argument to initialize and terminate. Otherwise the number correspoding
% to progress in % should be supplied.
% INPUTS: C Either: Text string to initialize or terminate
% Percentage number to show progress
% OUTPUTS: N/A
% Example: Please refer to demo_textprogressbar.m
% Author: Paul Proteus (e-mail: proteus.paul (at) yahoo (dot) com)
% Version: 1.0
% Changes tracker: 29.06.2010 – First version
% Inspired by: http://blogs.mathworks.com/loren/2007/08/01/monitoring-progress-of-a-calculation/
%% Initialization
persistent strCR; % Carriage return pesistent variable
% Vizualization parameters
strPercentageLength = 6; % Length of percentage string (must be >5)
strDotsMaximum = 10; % The total number of dots in a progress bar
%% Main
if isempty(strCR) && ~ischar(c),
% Progress bar must be initialized with a string
error(‘The text progress must be initialized with a string’);
elseif isempty(strCR) && ischar(c),
% Progress bar – initialization
% fprintf(‘%s’,c);
tcprintf(‘green’,c);
strCR = -1;
elseif ~isempty(strCR) && ischar(c),
% Progress bar – termination
strCR = [];
% fprintf([c ‘n’]);
tcprintf(‘red’,[c ‘n’]);
elseif isnumeric(c)
% Progress bar – normal progress
c = floor(c);
percentageOut = [num2str(c) ‘%%’];
percentageOut = [percentageOut repmat(‘ ‘,1,strPercentageLength-length(percentageOut)-1)];
nDots = floor(c/100*strDotsMaximum);
dotOut = [‘[‘ repmat(‘.’,1,nDots) repmat(‘ ‘,1,strDotsMaximum-nDots) ‘]’];
strOut = [percentageOut dotOut];
% Print it on the screen BAR!!!!
if strCR == -1,
% Don’t do carriage return during first run
fprintf(strOut);
% tcprintf(‘yellow’,strOut);
else
% Do it during all the other runs
fprintf([strCR strOut]);
% tcprintf(‘yellow’,[strCR strOut]);
end
% Update carriage return
strCR = repmat(‘b’,1,length(strOut)-1);
else
% Any other unexpected input
error(‘Unsupported argument type’);
end
%%—————————————————
function tcprintf(style, fmatString, varargin)
% Uses ANSI escape codes to print colored output when using MATLAB
% from a terminal. If not running in a terminal, or if called by MATLAB’s
% datatipinfo function, tcprintf reverts to standard printf. The latter is
% desirable if tcprintf is used within an object’s disp() method to avoid
% seeing the ANSI characters here.
%
% The first argument is an style description that consists of space-separated
% words. These words may include:
%
% one of the following colors:
% black, red, green, yellow, blue, purple, cyan, darkGray, lightGray, white
%
% one of the following background colors:
% onBlack, onRed, onGreen, onYellow, onBlue, onPurple, onCyan, onWhite
%
% and any of the following modifiers:
% bright : use the bright (or bold) form of the color, not applicable for
% black, darkGray, lightGray, or white
% underline : draw an underline under each character
% blink : This is a mistake. Please don’t use this ever.
%
% Example:
% tcprintf(‘lightGray onRed underline’, ‘Message: %20sn’, msg);
%
% Author: Dan O’Shea dan at djoshea.com (c) 2012
%
% Released under the open source BSD license
% opensource.org/licenses/bsd-license.php
if nargin < 2 || ~ischar(style) || ~ischar(fmatString)
error(‘Usage: tcprintf(style, fmatString, …)’);
end
% determine if we’re using
usingTerminal = ~usejava(‘desktop’);
% determine if datatipinfo is higher on the stack. If tcprintf
% is used within an object’s disp() method, we don’t want to
% use color in the hover datatip or all you’ll see are ANSI codes.
stack = dbstack;
inDataTip = ismember(‘datatipinfo’, {stack.name});
if ~usingTerminal || inDataTip
% print the message without color and return
fprintf(fmatString, varargin{:});
return;
end
bright = 1;
[colorName backColorName bright underline blink] = parseStyle(style);
colorCodes = getColorCode(colorName, bright);
backColorCodes = getBackColorCode(backColorName);
codes = [colorCodes; backColorCodes];
if underline
codes = [codes; 4];
end
if blink
codes = [codes; 5];
end
codeStr = strjoin(codes, ‘;’);
% evaluate the printf style message
contents = sprintf(fmatString, varargin{:});
% if the message ends with a newline, we should turn off
% formatting before the newline to avoid issues with
% background colors
if ~isempty(contents) && contents(end) == char(10)
contents = contents(1:end-1);
endOfLine = char(10);
else
endOfLine = ”;
end
str = [’33[‘ codeStr ‘m’ contents ’33[0m’ endOfLine];
fprintf(str);
end
function [colorName backColorName bright underline blink] = parseStyle(style)
defaultColor = ‘white’;
defaultBackColor = ‘onDefault’;
tokens = regexp(style, ‘(?<value>S+)[s]?’, ‘names’);
values = {tokens.value};
if ismember(‘bright’, values)
bright = true;
else
bright = false;
end
if ismember(‘underline’, values)
underline = true;
else
underline = false;
end
if ismember(‘blink’, values)
blink = true;
else
blink = false;
end
% find foreground color
colorList = {‘black’, ‘darkGray’, ‘lightGray’, ‘red’, ‘green’, ‘yellow’, …
‘blue’, ‘purple’, ‘cyan’, ‘lightGray’, ‘white’, ‘default’};
idxColor = find(ismember(colorList, values), 1);
if ~isempty(idxColor)
colorName = colorList{idxColor};
else
colorName = defaultColor;
end
% find background color
backColorList = {‘onBlack’, ‘onRed’, ‘onGreen’, ‘onYellow’, ‘onBlue’, …
‘onPurple’, ‘onCyan’, ‘onWhite’, ‘onDefault’};
idxBackColor = find(ismember(backColorList, values), 1);
if ~isempty(idxBackColor)
backColorName = backColorList{idxBackColor};
else
backColorName = defaultBackColor;
end
end
function colorCodes = getColorCode(colorName, bright)
switch colorName
case ‘black’
code = 30;
bright = 0;
case ‘darkGray’;
code = 30;
bright = 1;
case ‘red’
code = 31;
case ‘green’
code = 32;
case ‘yellow’
code = 33;
case ‘blue’
code = 34;
case ‘purple’
code = 35;
case ‘cyan’
code = 36;
case ‘lightGray’
code = 37;
bright = 0;
case ‘white’
code = 37;
bright = 1;
case ‘default’
code = 39;
end
if bright
colorCodes = [1; code];
else
colorCodes = [code];
end
end
function colorCodes = getBackColorCode(colorName)
switch colorName
case ‘onBlack’
code = 40;
case ‘onRed’
code = 41;
case ‘onGreen’
code = 42;
case ‘onYellow’
code = 43;
case ‘onBlue’
code = 44;
case ‘onPurple’
code = 45;
case ‘onCyan’
code = 46;
case ‘onWhite’
code = 47;
case ‘onDefault’
code = 49;
end
colorCodes = code;
end
function str = strjoin(strCell, join)
% str = strjoin(strCell, join)
% creates a string by concatenating the elements of strCell, separated by the string
% in join (default = ‘, ‘)
%
% e.g. strCell = {‘a’,’b’}, join = ‘, ‘ [ default ] –> str = ‘a, b’
if nargin < 2
join = ‘, ‘;
end
if isempty(strCell)
str = ”;
else
if isnumeric(strCell) || islogical(strCell)
% convert numeric vectors to strings
strCell = arrayfun(@num2str, strCell, ‘UniformOutput’, false);
end
str = cellfun(@(str) [str join], strCell, …
‘UniformOutput’, false);
str = [str{:}];
str = str(1:end-length(join));
end
end this used to work in Matlab 2019b and before, to show a progressbar in parfor loop:
%% par pool
[~, output] = system(‘free -b | awk ”/Mem/{print $2}”’);
total_memory = str2double(output);
myCluster = min(ceil(total_memory / 1024^2 / 2 / 1000), round(maxNumCompThreads));
if isempty(gcp(‘nocreate’))
pool=parpool(myCluster,’IdleTimeout’, 604800);%1 week
end
nsim = 50
%% ———————————–
global P;
P = 1;
DataQueue = parallel.pool.DataQueue;
textprogressbar(‘start: ‘);
afterEach(DataQueue, @(ss) textprogressbar(P/nsim*100));
afterEach(DataQueue, @updateP);
parfor i = 1:nsim
send(DataQueue,i);
%someprocess
pause(0.1)
end
textprogressbar(‘ done’)
Now I updated to 2024a Update 4 (24.1.0.2628055). And even though the parloop run just fine, the progressbar is never updated.
Here the code of textprorgessbar I take somewhere from around here:
function textprogressbar(c)
% This function creates a text progress bar. It should be called with a
% STRING argument to initialize and terminate. Otherwise the number correspoding
% to progress in % should be supplied.
% INPUTS: C Either: Text string to initialize or terminate
% Percentage number to show progress
% OUTPUTS: N/A
% Example: Please refer to demo_textprogressbar.m
% Author: Paul Proteus (e-mail: proteus.paul (at) yahoo (dot) com)
% Version: 1.0
% Changes tracker: 29.06.2010 – First version
% Inspired by: http://blogs.mathworks.com/loren/2007/08/01/monitoring-progress-of-a-calculation/
%% Initialization
persistent strCR; % Carriage return pesistent variable
% Vizualization parameters
strPercentageLength = 6; % Length of percentage string (must be >5)
strDotsMaximum = 10; % The total number of dots in a progress bar
%% Main
if isempty(strCR) && ~ischar(c),
% Progress bar must be initialized with a string
error(‘The text progress must be initialized with a string’);
elseif isempty(strCR) && ischar(c),
% Progress bar – initialization
% fprintf(‘%s’,c);
tcprintf(‘green’,c);
strCR = -1;
elseif ~isempty(strCR) && ischar(c),
% Progress bar – termination
strCR = [];
% fprintf([c ‘n’]);
tcprintf(‘red’,[c ‘n’]);
elseif isnumeric(c)
% Progress bar – normal progress
c = floor(c);
percentageOut = [num2str(c) ‘%%’];
percentageOut = [percentageOut repmat(‘ ‘,1,strPercentageLength-length(percentageOut)-1)];
nDots = floor(c/100*strDotsMaximum);
dotOut = [‘[‘ repmat(‘.’,1,nDots) repmat(‘ ‘,1,strDotsMaximum-nDots) ‘]’];
strOut = [percentageOut dotOut];
% Print it on the screen BAR!!!!
if strCR == -1,
% Don’t do carriage return during first run
fprintf(strOut);
% tcprintf(‘yellow’,strOut);
else
% Do it during all the other runs
fprintf([strCR strOut]);
% tcprintf(‘yellow’,[strCR strOut]);
end
% Update carriage return
strCR = repmat(‘b’,1,length(strOut)-1);
else
% Any other unexpected input
error(‘Unsupported argument type’);
end
%%—————————————————
function tcprintf(style, fmatString, varargin)
% Uses ANSI escape codes to print colored output when using MATLAB
% from a terminal. If not running in a terminal, or if called by MATLAB’s
% datatipinfo function, tcprintf reverts to standard printf. The latter is
% desirable if tcprintf is used within an object’s disp() method to avoid
% seeing the ANSI characters here.
%
% The first argument is an style description that consists of space-separated
% words. These words may include:
%
% one of the following colors:
% black, red, green, yellow, blue, purple, cyan, darkGray, lightGray, white
%
% one of the following background colors:
% onBlack, onRed, onGreen, onYellow, onBlue, onPurple, onCyan, onWhite
%
% and any of the following modifiers:
% bright : use the bright (or bold) form of the color, not applicable for
% black, darkGray, lightGray, or white
% underline : draw an underline under each character
% blink : This is a mistake. Please don’t use this ever.
%
% Example:
% tcprintf(‘lightGray onRed underline’, ‘Message: %20sn’, msg);
%
% Author: Dan O’Shea dan at djoshea.com (c) 2012
%
% Released under the open source BSD license
% opensource.org/licenses/bsd-license.php
if nargin < 2 || ~ischar(style) || ~ischar(fmatString)
error(‘Usage: tcprintf(style, fmatString, …)’);
end
% determine if we’re using
usingTerminal = ~usejava(‘desktop’);
% determine if datatipinfo is higher on the stack. If tcprintf
% is used within an object’s disp() method, we don’t want to
% use color in the hover datatip or all you’ll see are ANSI codes.
stack = dbstack;
inDataTip = ismember(‘datatipinfo’, {stack.name});
if ~usingTerminal || inDataTip
% print the message without color and return
fprintf(fmatString, varargin{:});
return;
end
bright = 1;
[colorName backColorName bright underline blink] = parseStyle(style);
colorCodes = getColorCode(colorName, bright);
backColorCodes = getBackColorCode(backColorName);
codes = [colorCodes; backColorCodes];
if underline
codes = [codes; 4];
end
if blink
codes = [codes; 5];
end
codeStr = strjoin(codes, ‘;’);
% evaluate the printf style message
contents = sprintf(fmatString, varargin{:});
% if the message ends with a newline, we should turn off
% formatting before the newline to avoid issues with
% background colors
if ~isempty(contents) && contents(end) == char(10)
contents = contents(1:end-1);
endOfLine = char(10);
else
endOfLine = ”;
end
str = [’33[‘ codeStr ‘m’ contents ’33[0m’ endOfLine];
fprintf(str);
end
function [colorName backColorName bright underline blink] = parseStyle(style)
defaultColor = ‘white’;
defaultBackColor = ‘onDefault’;
tokens = regexp(style, ‘(?<value>S+)[s]?’, ‘names’);
values = {tokens.value};
if ismember(‘bright’, values)
bright = true;
else
bright = false;
end
if ismember(‘underline’, values)
underline = true;
else
underline = false;
end
if ismember(‘blink’, values)
blink = true;
else
blink = false;
end
% find foreground color
colorList = {‘black’, ‘darkGray’, ‘lightGray’, ‘red’, ‘green’, ‘yellow’, …
‘blue’, ‘purple’, ‘cyan’, ‘lightGray’, ‘white’, ‘default’};
idxColor = find(ismember(colorList, values), 1);
if ~isempty(idxColor)
colorName = colorList{idxColor};
else
colorName = defaultColor;
end
% find background color
backColorList = {‘onBlack’, ‘onRed’, ‘onGreen’, ‘onYellow’, ‘onBlue’, …
‘onPurple’, ‘onCyan’, ‘onWhite’, ‘onDefault’};
idxBackColor = find(ismember(backColorList, values), 1);
if ~isempty(idxBackColor)
backColorName = backColorList{idxBackColor};
else
backColorName = defaultBackColor;
end
end
function colorCodes = getColorCode(colorName, bright)
switch colorName
case ‘black’
code = 30;
bright = 0;
case ‘darkGray’;
code = 30;
bright = 1;
case ‘red’
code = 31;
case ‘green’
code = 32;
case ‘yellow’
code = 33;
case ‘blue’
code = 34;
case ‘purple’
code = 35;
case ‘cyan’
code = 36;
case ‘lightGray’
code = 37;
bright = 0;
case ‘white’
code = 37;
bright = 1;
case ‘default’
code = 39;
end
if bright
colorCodes = [1; code];
else
colorCodes = [code];
end
end
function colorCodes = getBackColorCode(colorName)
switch colorName
case ‘onBlack’
code = 40;
case ‘onRed’
code = 41;
case ‘onGreen’
code = 42;
case ‘onYellow’
code = 43;
case ‘onBlue’
code = 44;
case ‘onPurple’
code = 45;
case ‘onCyan’
code = 46;
case ‘onWhite’
code = 47;
case ‘onDefault’
code = 49;
end
colorCodes = code;
end
function str = strjoin(strCell, join)
% str = strjoin(strCell, join)
% creates a string by concatenating the elements of strCell, separated by the string
% in join (default = ‘, ‘)
%
% e.g. strCell = {‘a’,’b’}, join = ‘, ‘ [ default ] –> str = ‘a, b’
if nargin < 2
join = ‘, ‘;
end
if isempty(strCell)
str = ”;
else
if isnumeric(strCell) || islogical(strCell)
% convert numeric vectors to strings
strCell = arrayfun(@num2str, strCell, ‘UniformOutput’, false);
end
str = cellfun(@(str) [str join], strCell, …
‘UniformOutput’, false);
str = [str{:}];
str = str(1:end-length(join));
end
end parfor, textprogressbar, 2024a MATLAB Answers — New Questions
Best way to merge non-profit onmicrosoft.com domain into existing Primary domain
We have an existing Entra tenant (ABCoriginal.net) configured and secured with 100 users. Our NFP was approved with domain AlaskaBCoriginal.onmicrosoft.com. Want to combine the 2 so I can buy NFP lic for ABCoriginal.net and keep all of the users and configurations.
What steps are needed to get this done, and once complete will the Partner relationship with Tech Soup transfer into existing domain?
We have an existing Entra tenant (ABCoriginal.net) configured and secured with 100 users. Our NFP was approved with domain AlaskaBCoriginal.onmicrosoft.com. Want to combine the 2 so I can buy NFP lic for ABCoriginal.net and keep all of the users and configurations.What steps are needed to get this done, and once complete will the Partner relationship with Tech Soup transfer into existing domain? Read More
Logic APP connecting to AOAG Readonly
Hi Everyone,
I have an Always on availability group with the secondary read-only server configured for read only intent.
I noticed that there is no where in logic app where the readonly application intent can be configured as additional parameter.
Am I missing something or it is just the way logic APP works. I have been able to connect ADF successfully. Please, can someone advise.
Hi Everyone, I have an Always on availability group with the secondary read-only server configured for read only intent.I noticed that there is no where in logic app where the readonly application intent can be configured as additional parameter. Am I missing something or it is just the way logic APP works. I have been able to connect ADF successfully. Please, can someone advise. Read More
=IF formula to fill a referenced cell
Hello All,
I am trying to make a fillable worksheet for internal use within our office. I have a cell (B3) that I want to hold placeholder text that tells the user what to put into it. I’m hoping I can make a formula to fill the cell with a text prompt when left blank. In essence this is the “If/Then” statement:
IF REFERENCED CELL IS BLANK THEN FILL REFERENCED CELL WITH “NAME”
My thinking was to write an =IF combined with =ISBLANK formula in a separate cell (i.e. G30) that references B3, and then fills B3 with “Name” if it is blank. The formula works but it understandable is filling G30) with “Name”. Does anyone have any ideas of how I can have the formula fill the cell it is referencing?
Additionally, I’m also anticipating a logic error with this. If I have a formula checking to see if a cell is blank, and then filling that cell, it won’t be blank. Is that a problem?
Hello All, I am trying to make a fillable worksheet for internal use within our office. I have a cell (B3) that I want to hold placeholder text that tells the user what to put into it. I’m hoping I can make a formula to fill the cell with a text prompt when left blank. In essence this is the “If/Then” statement: IF REFERENCED CELL IS BLANK THEN FILL REFERENCED CELL WITH “NAME” My thinking was to write an =IF combined with =ISBLANK formula in a separate cell (i.e. G30) that references B3, and then fills B3 with “Name” if it is blank. The formula works but it understandable is filling G30) with “Name”. Does anyone have any ideas of how I can have the formula fill the cell it is referencing? Additionally, I’m also anticipating a logic error with this. If I have a formula checking to see if a cell is blank, and then filling that cell, it won’t be blank. Is that a problem? Read More
New Outlook not adhering to PersonalAccountsEnabled unless I revert to Classic outlook
We implemented the PersonalAccountsEnabled = $false in out OwaMailboxPolicy, as below
Set-OwaMailboxPolicy -PersonalAccountsEnabled $false -identity OwaMailboxPolicy-Default
I waited overnight and accessed a computer using my account and continue to be able to add Gmail and other personal accounts to my corporate New Outlook. I also removed my corporate account and readded it to New Outlook , restarted and same behavior of being able to add Gmail and other personal accounts.
I reverted back to Classic Outlook and restarted Classic Outlook and enable New Outlook and the policy worked and prevented me from adding Gmail and other personal accounts.
Is this the correct behaviors as I would expect the setting to take affect without having to revert to the Classic Outlook. It seems as if New Outlook is not reading the policy except on the initial movement from Class to New.
We implemented the PersonalAccountsEnabled = $false in out OwaMailboxPolicy, as below Set-OwaMailboxPolicy -PersonalAccountsEnabled $false -identity OwaMailboxPolicy-Default I waited overnight and accessed a computer using my account and continue to be able to add Gmail and other personal accounts to my corporate New Outlook. I also removed my corporate account and readded it to New Outlook , restarted and same behavior of being able to add Gmail and other personal accounts. I reverted back to Classic Outlook and restarted Classic Outlook and enable New Outlook and the policy worked and prevented me from adding Gmail and other personal accounts. Is this the correct behaviors as I would expect the setting to take affect without having to revert to the Classic Outlook. It seems as if New Outlook is not reading the policy except on the initial movement from Class to New. Read More
Session controlled Microsoft apps very slow response
Hello
For the past 2 months we have been receiving complaints regarding D365 slowness off and on. D365 was included in my session controlled policy. I disabled the policy and the complaints have stopped. Is there part of the policy setup that was missed. I really need the benefits of MCAS without impacting the business. Thanks
Hello For the past 2 months we have been receiving complaints regarding D365 slowness off and on. D365 was included in my session controlled policy. I disabled the policy and the complaints have stopped. Is there part of the policy setup that was missed. I really need the benefits of MCAS without impacting the business. Thanks Read More
Prevent error: “Unable to communicate with required MathWorks services (error 5001)”
I am encountering the error described in https://es.mathworks.com/matlabcentral/answers/1814080-why-do-i-receive-error-5001-unable-to-access-services-required-to-run-matlab#answer_1062795.
In my opinion this is not a good resolution. It is a very annoying error that is NOT properly addressed. In my case, I am running neuroimaging pipelines constantly and this bug continually breaks my runs. Is there any way to prevent this error from suddenly popping up that doesn’t involve having to kill processes? Ideally I would like to prevent it.
Im running R2024a.I am encountering the error described in https://es.mathworks.com/matlabcentral/answers/1814080-why-do-i-receive-error-5001-unable-to-access-services-required-to-run-matlab#answer_1062795.
In my opinion this is not a good resolution. It is a very annoying error that is NOT properly addressed. In my case, I am running neuroimaging pipelines constantly and this bug continually breaks my runs. Is there any way to prevent this error from suddenly popping up that doesn’t involve having to kill processes? Ideally I would like to prevent it.
Im running R2024a. I am encountering the error described in https://es.mathworks.com/matlabcentral/answers/1814080-why-do-i-receive-error-5001-unable-to-access-services-required-to-run-matlab#answer_1062795.
In my opinion this is not a good resolution. It is a very annoying error that is NOT properly addressed. In my case, I am running neuroimaging pipelines constantly and this bug continually breaks my runs. Is there any way to prevent this error from suddenly popping up that doesn’t involve having to kill processes? Ideally I would like to prevent it.
Im running R2024a. error 5001 MATLAB Answers — New Questions
ARIMA in Econometric Modeler
Hi,
I apologize for the simple question, but I’m very new to econometric analysis in MATLAB and not so experienced in Stata. Essentially, I have a database (attached Excel file) that I’m using to estimate an ARIMA(1,1,4) model for the variable "wpi". I’ve followed standard procedures in both Stata and MATLAB based on educational videos, but I’m receiving different coefficient estimates. I’ve made sure that both Stata and MATLAB use the first difference in the dependent variable, but I’m unsure what I’m doing wrong to get different estimates.
In fact, Stata Corp has a video on this exercise (https://www.youtube.com/watch?v=8xt4q7KHfBs), where the author [mistakenly used "wpi" instead of "log(wpi)"] and reports the results at minute 7:26. You can see the coefficient values there. When I fit the exact same model in MATLAB Econometric Modeller, my coefficient estimates are different. For example, the MATLAB constant estimate is 0.15, whereas in Stata it’s 0.74, and so on.
Could you please help me diagnose the problem? I’m attaching the dataset here. Thank you very much.Hi,
I apologize for the simple question, but I’m very new to econometric analysis in MATLAB and not so experienced in Stata. Essentially, I have a database (attached Excel file) that I’m using to estimate an ARIMA(1,1,4) model for the variable "wpi". I’ve followed standard procedures in both Stata and MATLAB based on educational videos, but I’m receiving different coefficient estimates. I’ve made sure that both Stata and MATLAB use the first difference in the dependent variable, but I’m unsure what I’m doing wrong to get different estimates.
In fact, Stata Corp has a video on this exercise (https://www.youtube.com/watch?v=8xt4q7KHfBs), where the author [mistakenly used "wpi" instead of "log(wpi)"] and reports the results at minute 7:26. You can see the coefficient values there. When I fit the exact same model in MATLAB Econometric Modeller, my coefficient estimates are different. For example, the MATLAB constant estimate is 0.15, whereas in Stata it’s 0.74, and so on.
Could you please help me diagnose the problem? I’m attaching the dataset here. Thank you very much. Hi,
I apologize for the simple question, but I’m very new to econometric analysis in MATLAB and not so experienced in Stata. Essentially, I have a database (attached Excel file) that I’m using to estimate an ARIMA(1,1,4) model for the variable "wpi". I’ve followed standard procedures in both Stata and MATLAB based on educational videos, but I’m receiving different coefficient estimates. I’ve made sure that both Stata and MATLAB use the first difference in the dependent variable, but I’m unsure what I’m doing wrong to get different estimates.
In fact, Stata Corp has a video on this exercise (https://www.youtube.com/watch?v=8xt4q7KHfBs), where the author [mistakenly used "wpi" instead of "log(wpi)"] and reports the results at minute 7:26. You can see the coefficient values there. When I fit the exact same model in MATLAB Econometric Modeller, my coefficient estimates are different. For example, the MATLAB constant estimate is 0.15, whereas in Stata it’s 0.74, and so on.
Could you please help me diagnose the problem? I’m attaching the dataset here. Thank you very much. econometric modeler, arima, stata MATLAB Answers — New Questions
2024a seems to have a graphics bug
A fresh install, on a macbook with the Apple M1 chip, and a total deletion of the ~/Library/Application Support/MathWorks files on Macos 14.6.1, when the first command is
close all
I get the following worring error:
>> close all
Warning: Initializing MATLAB Graphics failed.
This indicates a potentially serious problem in your MATLAB
setup, which should be resolved as soon as possible. Error
detected was:
MATLAB:minrhs
Not enough input arguments.
> In hgrc (line 154)
In matlab.graphics.internal.initialize (line 15)
>> plot(rand(1,10),rand(1,10))
>> close all
>> close all
>>
However, as can be seen, everything is fine once a plot has been made.
Best, JonA fresh install, on a macbook with the Apple M1 chip, and a total deletion of the ~/Library/Application Support/MathWorks files on Macos 14.6.1, when the first command is
close all
I get the following worring error:
>> close all
Warning: Initializing MATLAB Graphics failed.
This indicates a potentially serious problem in your MATLAB
setup, which should be resolved as soon as possible. Error
detected was:
MATLAB:minrhs
Not enough input arguments.
> In hgrc (line 154)
In matlab.graphics.internal.initialize (line 15)
>> plot(rand(1,10),rand(1,10))
>> close all
>> close all
>>
However, as can be seen, everything is fine once a plot has been made.
Best, Jon A fresh install, on a macbook with the Apple M1 chip, and a total deletion of the ~/Library/Application Support/MathWorks files on Macos 14.6.1, when the first command is
close all
I get the following worring error:
>> close all
Warning: Initializing MATLAB Graphics failed.
This indicates a potentially serious problem in your MATLAB
setup, which should be resolved as soon as possible. Error
detected was:
MATLAB:minrhs
Not enough input arguments.
> In hgrc (line 154)
In matlab.graphics.internal.initialize (line 15)
>> plot(rand(1,10),rand(1,10))
>> close all
>> close all
>>
However, as can be seen, everything is fine once a plot has been made.
Best, Jon initialization, graphics, failed, close MATLAB Answers — New Questions
ZAP/Post-delivery reporting for Teams, Sharepoint & OneDrive
It seems that the email & collaboration report for ‘post-delivery activities’ only covers ZAP activity for emails. While in other E&C reports, a pivot by workload is supported, this doesn’t seem to be the case.
Are there ZAP/Post-delivery reports available for Teams, SPO & ODB?
It seems that the email & collaboration report for ‘post-delivery activities’ only covers ZAP activity for emails. While in other E&C reports, a pivot by workload is supported, this doesn’t seem to be the case. Are there ZAP/Post-delivery reports available for Teams, SPO & ODB? Read More
simplexseed.com and Outlook junk rules
I’ve tried to create rules to send all messages from @simplexseed.com to the deleted folder and while it seems to work when I run the rule, it doesn’t catch items and send them directly to trash before I sort through my junk mail. There are numerous versions of whatever they are “selling” so I can’t simply exclude things like “gutter guard” or “metal roofing.”
What am I missing?
This is in Outlook desktop – the classic version.
Thanks for the help.
I’ve tried to create rules to send all messages from @simplexseed.com to the deleted folder and while it seems to work when I run the rule, it doesn’t catch items and send them directly to trash before I sort through my junk mail. There are numerous versions of whatever they are “selling” so I can’t simply exclude things like “gutter guard” or “metal roofing.” What am I missing?This is in Outlook desktop – the classic version. Thanks for the help. Read More
Recover Tech Community Account
Is it possible to recover an account that I previously had, which is likely associated to my previous work?
Is it possible to recover an account that I previously had, which is likely associated to my previous work? Read More
Outlook proofing tools not working in French
hello
I’m trying to setup French language check in my emails and for some reason in outlook i add the French language restart outlook but when i type email it doesn’t check my French language
Thanks
hello I’m trying to setup French language check in my emails and for some reason in outlook i add the French language restart outlook but when i type email it doesn’t check my French language Thanks Read More
Step by Step: Integrate Advanced CSV RAG Service with your own data into Copilot Studio
This post is going to explain how to use Advanced RAG Service easily verify proper RAG tech performance for your own data, and integrate it as a service endpoint into Copilot Studio.
This time we use CSV as a sample. CSV is text structure data, when we use basic RAG to process a multiple pages CSV file as Vector Index and perform similarity search using Nature Language on it, the grounded data is always chunked and hardly make LLM to understand the whole data picture.
For example, if we have 10,000 rows in a CSV file, when we ask “how many rows does the data contain and what’s the mean value of the visits column”, usually general semantic search service cannot give exact right answers if it just handles the data as unstructured. We need to use different advanced RAG method to handle the CSV data here.
Thanks to LLamaIndex Pandas Query Engine, which provides a good idea of understanding data frame data through natural language way. However to verify its performance among others and integrate to existing Enterprise environment, such as Copilot Studio or other user facing services, it definitely needs AI service developing experience and takes certain learning curve and time efforts from POC to Production.
Advanced RAG Service supports 6 latest advanced indexing techs including CSV Query Eninge, with it developers can leverage it to shorten development POC stage, and achieve Production purpose. Here is detail step to step guideline:
text-embedding-3-small
a. In Docker environment, run this command to clone the dockerfile and related config sample:
b. In the AdvancedRAG folder, rename .env.sample to .env
mv .env.sample .env
c. In the .env file, configure necessary environment variables. In this tutorial, let’s configure:
AZURE_OPENAI_API_KEY=
AZURE_OPENAI_Deployment=gpt-4o-mini
AZURE_OPENAI_EMBEDDING_Deployment=text-embedding-3-small
AZURE_OPENAI_ENDPOINT=https://[name].openai.azure.com/
# Azure Document Intellenigence
DOC_AI_BASE=https://[name].cognitiveservices.azure.com/
DOC_AI_KEY=
NOTE:
d. Build your own docker image:
e. Run this docker:
f. Access http://localhost:8000/
a. Click the CSV Query Engine tab, upload a test CSV file, click Submit
b. Click the Chat Mode tab, now we can use Natural Language to test how good the CSV Query Engine at understanding CSV content:
The Advanced RAG Service is built with Gradio and FAST API. It opens necessary API Endpoints by default. We can turn off any of them in the .env settings.
The Chat endpoint can be used for different index types query/search. Since we are using “CSV Query Engine”, now it is:
content-type: application/json
{
“data”: [
“how many records does it have”,
“”,
“CSV Query Engine”,
“/tmp/gradio/86262b8036b56db1a2ed40087bbc772f619d0df4/titanic_train.csv”,
“You are a friendly AI Assistant” ,
false
]
}
The response is:
“data”: [
“The dataset contains a total of 891 records. If you have any more questions about the data, feel free to ask!”,
null
],
“is_generating”: true,
“duration”: 3.148253917694092,
“average_duration”: 3.148253917694092,
“render_config”: null,
“changed_state_ids”: []
}
Using this method, we can easily integrate the specific RAG capability to our own service, such as Copilot Studio. Before that, let’s publish the service first.
We have different methods to release docker as an app service. Here are the generate steps when we use Azure Contain Registry and Azure Container App.
a. Create Azure Container Registry resource [ACRNAME], upload your tested docker image to it. The command is:
az account set -s [your subscription]
az acr login -n [ACRNAME]
docker push [ACRNAME].azurecr.io/dockerimage:tag
b. Create an Azure Container App, deploy this docker image, and deploy it. Don’t forget enable Session Affinity for the Container App.
To automate the Azure Container App deployment, I provided deploy_acr_app.sh in the repo.
set -e
if [ $# -eq 0 ]
then
echo “No SUF_FIX supplied, it should be an integer or a short string”
docker image list
exit 1
fi
SUF_FIX=$1
RESOURCE_GROUP=”rg-demo-${SUF_FIX}”
LOCATION=”eastus”
ENVIRONMENT=”env-demo-containerapps”
API_NAME=”advrag-demo-${SUF_FIX}”
FRONTEND_NAME=”advrag-ui-${SUF_FIX}”
TARGET_PORT=8000
ACR_NAME=”advragdemo${SUF_FIX}”
az group create –name $RESOURCE_GROUP –location “$LOCATION”
az acr create –resource-group $RESOURCE_GROUP –name $ACR_NAME –sku Basic –admin-enabled true
az acr build –registry $ACR_NAME –image $API_NAME .
az containerapp env create –name $ENVIRONMENT –resource-group $RESOURCE_GROUP –location “$LOCATION”
az containerapp create –name $API_NAME –resource-group $RESOURCE_GROUP –environment $ENVIRONMENT –image $ACR_NAME.azurecr.io/$API_NAME –target-port $TARGET_PORT –ingress external –registry-server $ACR_NAME.azurecr.io –query properties.configuration.ingress.fqdn
az containerapp ingress sticky-sessions set -n $API_NAME -g $RESOURCE_GROUP –affinity sticky
To use it:
./deploy_acr_azure.sh [suffix number]
Note: for more details about this sh, can refer to this guideline.
After around 7~8 minutes, the Azure Container App will be ready. You can check the output and access it directly:
To protect your container app, can follow this guide to enable authentication on it.
Enable authentication and authorization in Azure Container Apps with Microsoft Entra ID
By default, we need to upload a CSV to the AdvRAG service before analysis. The service always saves the uploaded file to its local temp folder on server side. And then we can use temp file path to start the analysis query.
To skip this step, we can save common files in subfolder rules of the AdvancedRAG folder, and then build your docker image. The files will be copy to the docker itself. As a demo, I can put a CSV file in AdvancedRAG/rules/files, and then pubish the docker to Azure.
a. Open Copilot Studio, create a new Topic, use “CSV Query” to trigger it.
b. For demo purpose, I upload a test CSV file and got its path, then put it into a variable:
c. Now let’s add a Question step to ask what question the user want to ask:
d. Click “+”, “Add an Action”, “Create a flow”. We will use this new flow to call AdvancedRAG service endpoint.
e. We need Query, File_Path, System_Message as input variables.
e. In the flow Editor, let’s add an HTTP step. In the step, post the request to the AdvancedRAG endpoint as below:
Save the flow as ADVRAGSVC_CSV, and publish it.
f. Back to Copilot Studio topic, we will add the action as below, and set input variables as need:
g. Publish and open this Custom Copilot in Teams Channel based on this guide.
h. Now we can test this topic lit this, as we see, even I used gpt-4o-mini here, the response accuracy is very good:
From above, it shows how to quickly verify potential useful RAG techs (Pandas Query Engine) in the AdvancedRAG service studio, expose and publish it as REST API endpoint which can be used by other service, such as Copilot Studio.
The overall process can be applied to Knowledge Graph, GraphRAG, Tree Mode Summary and other type indexes with this AdvnacedRAG service. In this way developers can efficiently move from proof of concept to production, leveraging advanced RAG capabilities in their own services.
The AdvancedRAG service focuses on key logic and stability of different important index types, the efficiency to be landed into M365 AI use cases. For any feature improvement ideas, feel free to visit below repos to create issues, fork projects and create PRs.
Docker Deploy Repo: https://github.com/freistli/AdvancedRAG
Source Code Repo: https://github.com/freistli/AdvancedRAG_SVC
Exploring the Advanced RAG (Retrieval Augmented Generation) Service
Microsoft Tech Community – Latest Blogs –Read More
MVP’s Favorite Content: Microsoft Teams and DevOps
In this blog series dedicated to Microsoft’s technical articles, we’ll highlight our MVPs’ favorite article along with their personal insights.
Onyinye Madubuko, M365 MVP, Ireland
Clear Teams cache – Microsoft Teams | Microsoft Learn
“This was helpful in solving new Teams application for users experiencing issues.”
*Relevant Blog: Teams Window keeps flickering and not launching (techiejournals.com)
Laurent Carlier, M365 MVP, France
Overview of meetings, webinars, and town halls – Microsoft Teams | Microsoft Learn
“Teams meetings have evolved significantly over the past few years, with the end of live Team events, the introduction of Town Halls, and the strengthening of Teams Premium features. It’s not always easy to understand what is and isn’t included in Teams Premium licences, or to explain the benefits of purchasing this new plan. This documentation and its comparison tables make my job a lot easier today.”
Edward Kuo, Microsoft Azure MVP, Taiwan
Introduction to Azure DevOps – Training | Microsoft Learn
“I am a DevOps expert and an Azure specialist, primarily responsible for guiding enterprises in using Azure DevOps and establishing DevOps teams.”
*Relevant Blog: DevOps – EK.Technology Learn (edwardkuo.dev)
Kazushi Kamegawa, Developer Technologies MVP, Japan
Managed DevOps Pools – The Origin Story – Engineering@Microsoft
“Using Azure Pipelines for CI/CD in a closed network environment requires the use of self-hosted agents, and managing these images was a very labor-intensive task. Even with automation, updates took 5-6 hours and had to be done once or twice a month. It was probably a challenge for everyone.
In this context, the announcement of the Managed DevOps Pools on this blog was very welcome news. It’s not just me; it’s likely the solution everyone was hoping for, and I am very much looking forward to it.”
(In Japanese: Azure Pipelinesを使って閉域環境でのCI/CDはセルフホストエージェントを使わなければならない上に、イメージの管理は非常に大変な作業でした。更新作業には自動化していても5-6時間かかる上に、月に1-2度は行わなくてはなりません。おそらく皆さん大変だったでしょう。
そんな中、Managed DevOps Poolのアナウンスが本ブログで行われました。私だけではなく、おそらく皆さんが望んだソリューションであり、大変期待しています。)
*Relevant event: Azure DevOpsオンライン Vol.11 ~ Managed DevOps Pool解説 – connpass
Microsoft Tech Community – Latest Blogs –Read More
Signal Processing Onramp (Preprocessing Signals — Extract Interesting Regions)
You can extract the data from the surface waves by removing extra points before and after. You can find the Extract Signals option in the Region of Interest section.
TASK
Extract the selected region from the harp, pax, and wanc signals. Make sure that the extracted signals are named harp_ROI, pax_ROI, and wanc_ROI respectively and display them.
Error I’m getting:
Have all three signals been cropped?You can extract the data from the surface waves by removing extra points before and after. You can find the Extract Signals option in the Region of Interest section.
TASK
Extract the selected region from the harp, pax, and wanc signals. Make sure that the extracted signals are named harp_ROI, pax_ROI, and wanc_ROI respectively and display them.
Error I’m getting:
Have all three signals been cropped? You can extract the data from the surface waves by removing extra points before and after. You can find the Extract Signals option in the Region of Interest section.
TASK
Extract the selected region from the harp, pax, and wanc signals. Make sure that the extracted signals are named harp_ROI, pax_ROI, and wanc_ROI respectively and display them.
Error I’m getting:
Have all three signals been cropped? signal processing, matlab MATLAB Answers — New Questions
Error: Index exceeds the number of array elements. Index must not exceed 2 (SIMULINK)
Hi there,
I have been running this simulation for months now but only suddenly is this giving this error. I have not changed it one bit (I think) and it suddenly can’t run. Please help!
run(‘PMDCcontrol.slx’)Hi there,
I have been running this simulation for months now but only suddenly is this giving this error. I have not changed it one bit (I think) and it suddenly can’t run. Please help!
run(‘PMDCcontrol.slx’) Hi there,
I have been running this simulation for months now but only suddenly is this giving this error. I have not changed it one bit (I think) and it suddenly can’t run. Please help!
run(‘PMDCcontrol.slx’) simulink, error MATLAB Answers — New Questions
Email users of devices in Dynamic group with MS 365 group email address
So we have got a Dynamic group that contains devices (based on brand and OS -> all Apple iOS devices) . We have got another Microsoft 365 group with group email address like email address removed for privacy reasons. Now I would like to email all users of the iOS devices using this email address.
As before the situation was that we had groups with assigned members (users) and in the Dynamic Rule of the MS 365 Dynamic group with the email address I just created a rule like: user.memberof -any (group.objectId -in [‘b35f7ce7-f0ba-45b8-a066-e273e6816774’]) (I can add as much other groups as well.
But now it is different. I only have a Dynamic group with all Apple devices. So no members (users) but devices…
Any way to set this up ending up being able to email all device users using the group email address email address removed for privacy reasons ?
So we have got a Dynamic group that contains devices (based on brand and OS -> all Apple iOS devices) . We have got another Microsoft 365 group with group email address like email address removed for privacy reasons. Now I would like to email all users of the iOS devices using this email address. As before the situation was that we had groups with assigned members (users) and in the Dynamic Rule of the MS 365 Dynamic group with the email address I just created a rule like: user.memberof -any (group.objectId -in [‘b35f7ce7-f0ba-45b8-a066-e273e6816774’]) (I can add as much other groups as well. But now it is different. I only have a Dynamic group with all Apple devices. So no members (users) but devices… Any way to set this up ending up being able to email all device users using the group email address email address removed for privacy reasons ? Read More
Microsoft Edge Management Cloud Policy missing “RelatedMatchesCloudServiceEnabled”
Hi,
I can’t locate the policy RelatedMatchesCloudServiceEnabled within the Cloud Management.
Microsoft-edge-policies #relatedmatchescloudserviceenabled
Thanks,
Matt
Hi,I can’t locate the policy RelatedMatchesCloudServiceEnabled within the Cloud Management.Microsoft-edge-policies #relatedmatchescloudserviceenabled Thanks,Matt Read More
Power Shell Script to move mail between mailboxes (ON PREM)
Hi,
I have a mailbox with about 1.3M messages I need moved to a different mailbox. I tried using Outlook rules, but it was too much volume and kept crashing.
If anybody can help me with this script I would appreciate it.
Thanks,
Jeffrey
Hi,I have a mailbox with about 1.3M messages I need moved to a different mailbox. I tried using Outlook rules, but it was too much volume and kept crashing.If anybody can help me with this script I would appreciate it.Thanks,Jeffrey Read More