Category: News
Introducing Semantic Workbench: Your Gateway to Agentic AI Development
Introducing Semantic Workbench: Your Gateway to Agentic AI Development
In the rapidly evolving landscape of artificial intelligence (AI), the ability to quickly prototype and integrate intelligent assistants is becoming increasingly crucial. Whether you’re developing a new agent from scratch or integrating an existing one, having a versatile and user-friendly tool can make all the difference. Enter Semantic Workbench — a powerful tool designed to streamline the creation and management of intelligent agents.
The Semantic Workbench comes from our own efforts inside Microsoft to explore these ideas, it is a platform in active use. We decided to make this available as multiple teams inside Microsoft are finding value in it and we believe the broader community will as well. Separating it out as an independent project will enable teams that want to use this to add capabilities for their scenarios which will benefit everyone using it.
What is Semantic Workbench?
Semantic Workbench is a versatile tool designed to help you prototype intelligent agents quickly and efficiently. It supports the creation of new assistants or the integration of existing ones, all within a cohesive and intuitive interface. The workbench provides a user-friendly UI for creating conversations with one or more assistants, configuring settings, and exposing various behaviors.
Semantic Workbench is composed of three main components, each playing a crucial role in its functionality:
Workbench Service: The backend service that handles core functionalities, such as agents’ interaction, conversations, file uploads, authentication, and more.
Workbench App: The frontend web user interface that allows users to interact with the workbench and assistants seamlessly.
Agent Services: Any number of agent services that implement the workbench service protocol API, developed using any framework and programming language of your choice.
Why Use Semantic Workbench?
Simplified AI Agents Development
Writing a new agent and multi-agent solutions with Semantic Workbench is very simple. Developers can focus on the most important aspects, such as messaging, handling events, and executing commands. The integration with the workbench is a non-intrusive thin layer that can be removed when agents are ready for production, ensuring a smooth transition from development to deployment.
Versatility and Flexibility
Designed to be agnostic of any agent framework, language, or platform, Semantic Workbench facilitates experimentation, development, testing, and measurement of agent behaviors and workflows. This flexibility allows developers to integrate agents via a RESTful API, making it broadly applicable in various development environments. Agents can be written in any programming language and can interact with the user and each other via the Semantic Workbench web service.
User-Friendly Interface with Real-Time Insights and Debugging
Semantic Workbench provides a cohesive and intuitive interface for creating and managing conversations with intelligent assistants. This user-friendly UI simplifies the process of configuring settings and exposing various behaviors, making it accessible even to those who may not have extensive technical expertise. The interface allows users to chat with agents and offers other utilities to aid development, such as attaching debugging information to each message, including details about agent behavior, costs, and performance.
Agents can publish insights, called “states”, that are visible on side panels. These insights can be HTML/Markdown pages, allowing for the publication of complex information. Agents can update these insights in real-time, providing continuous feedback and debugging information. This feature is invaluable for developers looking to fine-tune agent behaviors and performance.
Customizable Configuration
Agents can have custom configuration settings, which are completely customizable. This includes text areas, radio buttons, checkboxes, and more, providing developers with the flexibility to tailor the settings to their specific needs. Agents can also expose configuration options such as prompts and temperature into assistant options making end user customization possible to improve iteration without having to update code.
File Management, Persistence and Cloning
The workbench also supports file management, allowing both users and agents to upload and manage files. This means AI agents can generate output as files that can be downloaded or shared with other agents, facilitating a more integrated and collaborative development environment.
Conversations and agents persist on disk, so you can develop an agent, restart it, and continue without losing state. Conversations can also be downloaded, making it easy to share demos and test results. Additionally, agents can be cloned to work with different configurations, allowing for parallel development and testing.
Conversation management
There are options within the conversation interface to delete messages from the conversation, as well as the option to rewind the conversation to a specific point which removes all the messages past that. You also have the option to add files to the conversation via a side panel or as part of a message. The side panel also provides you the option to export a conversation as markdown. There is an option to import past conversations from the dashboard screen as well.
The chat interface also informs you as to how many tokens your message is going to use.
Responses from generative assistants provide an info button which allows you to access the underlying messages that were sent to generate that response and examine details such as how many tokens were used.
Support for Multiple Users
The workbench supports multiple users. Conversations with assistants support multiple participants. Links to a conversation can be shared with other users to join. The workbench is configured by default to work with Microsoft organization or personal accounts.
Getting Started with Semantic Workbench
To get started with Semantic Workbench, you can follow these steps:
Clone the Repository: start by cloning the Semantic Workbench repository from GitHub at https://github.com/microsoft/semanticworkbench
Set Up the Workbench Service: Install and configure the backend service to handle core functionalities.
Launch the Workbench App: Use the frontend web interface to interact with the workbench and assistants.
Integrate your Agent Services: Develop and integrate agent services using any framework and programming language of your choice, following the service protocols/APIs. Agents can be developed with any editor, from VS Code and Visual Studio, to Rider, PyCharm, and any IDE.
You can get started even more quickly by opening the repository locally in VS Code, and letting it open the project as a dev container. In this mode all the required dependencies are provided automatically and there are launch configurations provided to start the Workbench Service and App. You can also open the repository directly in GitHub Codespaces for editing, please see this readme on an additional required step for running it in Codespaces.
Using the Semantic Workbench
On your first run of the Semantic Workbench, you’ll need to agree to the terms and sign in. This step is necessary even for local use because the workbench supports multiple users. Once signed in, you’ll be greeted by the Semantic Workbench dashboard.
The dashboard allows you to manage assistants. You can select an assistant from a dropdown menu if you’ve already created one or start a new one. Creating a new assistant involves selecting it from the dropdown and providing a name. The repository includes a Canonical Assistant that echoes input, which can be used as a starting point for your projects.
After saving your assistant you can select it and change any of its default setting if you like. Assistants can surface settings such as prompts, temperature, etc. here which makes it very convenient to iterate ideas without having to go back to code. This allows users who are not developers to experiment and provide feedback at earlier stages of development of generative assistants.
You can start a new conversation from either the assistant screen or the main dashboard. Opening a conversation lets you interact with your agent using a basic chat interface. You can see a response from the Echo assistant here:
If multiple assistants are involved, you can direct messages to a specific one using the “Directed to” box. The message box also reports how many tokens the message you are sending will use.
The side panel lets you see which participants across users and assistants are in the conversation. You can also download a transcript of the conversation to use it in other contexts. If there are files in the conversation they will be displayed here, and more can be added.
Explore the GitHub Repository
Semantic Workbench is publicly available on GitHub at https://github.com/microsoft/semanticworkbench. The repository contains some examples in Python and .NET, demonstrating how agents can be written in different languages. These examples also show how to leverage Azure AI Content Safety for responsible AI bots, how to render complex content types such as Mermaid graphs, Markdown, HTML, and more.
Semantic Workbench is a game-changer for anyone looking to prototype and integrate Agentic AI solutions quickly and efficiently. Its versatility, user-friendly interface, real-time insights, and seamless integration capabilities make it an invaluable tool in the AI development toolkit. Whether you’re a seasoned developer or just starting, Semantic Workbench provides the flexibility and functionality you need to bring your intelligent assistant projects to life.
Microsoft Tech Community – Latest Blogs –Read More
Solving with ode45 with a solution dependant variable in the ode
Hi,
Let’s say I want to solve :
with , with all following the same ode as y(z).
I can theoretically solve each ode with RK4 at step z+dz and then calculate N(z+dz). But how do I do it using the already implemented RK4 function implemented in Matlab? Would something like this work or is there a way better solution?
while(z<zLim)%%This is just an idea of the algorithm I would use
zspan=[0 dz];%Solving the ODE for a very small zspan
if(z~=0)
y0=y(length(y));
else
y0=0;
end
[z,y] = ode45(@(z,y) N*y, zspan, y0);
%Calculate c(z),g(z),….
%Calculate N at step dz
z=z+dz;
end
ThanksHi,
Let’s say I want to solve :
with , with all following the same ode as y(z).
I can theoretically solve each ode with RK4 at step z+dz and then calculate N(z+dz). But how do I do it using the already implemented RK4 function implemented in Matlab? Would something like this work or is there a way better solution?
while(z<zLim)%%This is just an idea of the algorithm I would use
zspan=[0 dz];%Solving the ODE for a very small zspan
if(z~=0)
y0=y(length(y));
else
y0=0;
end
[z,y] = ode45(@(z,y) N*y, zspan, y0);
%Calculate c(z),g(z),….
%Calculate N at step dz
z=z+dz;
end
Thanks Hi,
Let’s say I want to solve :
with , with all following the same ode as y(z).
I can theoretically solve each ode with RK4 at step z+dz and then calculate N(z+dz). But how do I do it using the already implemented RK4 function implemented in Matlab? Would something like this work or is there a way better solution?
while(z<zLim)%%This is just an idea of the algorithm I would use
zspan=[0 dz];%Solving the ODE for a very small zspan
if(z~=0)
y0=y(length(y));
else
y0=0;
end
[z,y] = ode45(@(z,y) N*y, zspan, y0);
%Calculate c(z),g(z),….
%Calculate N at step dz
z=z+dz;
end
Thanks ode45, ode MATLAB Answers — New Questions
How to use fitnlm
Hello I am trying to fit acurve to my data but I don’t know where to begin or what to do? Any help will be appretiated!
This is the graph and code of my data. I have attached the excel file of my data.
A=xlsread(‘Plague_data.xlsx’);
t=A(:,12);
c=A(:,13);
figure (1)
Number.of.cases=plot(t,c,’.’,’color’,’b’)Hello I am trying to fit acurve to my data but I don’t know where to begin or what to do? Any help will be appretiated!
This is the graph and code of my data. I have attached the excel file of my data.
A=xlsread(‘Plague_data.xlsx’);
t=A(:,12);
c=A(:,13);
figure (1)
Number.of.cases=plot(t,c,’.’,’color’,’b’) Hello I am trying to fit acurve to my data but I don’t know where to begin or what to do? Any help will be appretiated!
This is the graph and code of my data. I have attached the excel file of my data.
A=xlsread(‘Plague_data.xlsx’);
t=A(:,12);
c=A(:,13);
figure (1)
Number.of.cases=plot(t,c,’.’,’color’,’b’) nonlinear fit, nonlinear regression, covid-19, covid19 MATLAB Answers — New Questions
Help me generate better spectrogram data using Matlab?
Hi everyone
I am trying to generate spectrograms for .mat EEG files to show the breakdown of frequencies over time. I have got a series of spectrograms that look like this but I am not sure how to alter the code so they are more useful. My code currently is this:
% Set the directory containing .mat files
dataDir = ‘C:UsersclloyDownloadsspectrogram_data_to_use’;
% Get a list of all .mat files in the directory
matFiles = dir(fullfile(dataDir, ‘*.mat’));
% Electrode information (modify as per your electrode configuration)
electrodes = 1:32; % Assuming electrodes are labeled from 1 to 32
% Loop through each file and generate spectrograms for each electrode
for k = 1:length(matFiles)
% Load the .mat file
matFilePath = fullfile(dataDir, matFiles(k).name);
dataStruct = load(matFilePath);
% Extract the Clean_data variable
if isfield(dataStruct, ‘Clean_data’)
Clean_data = dataStruct.Clean_data;
% Sampling frequency (Hz)
fs = 128; % Sampling rate is 128 Hz
% Size of Clean_data
[numElectrodes, numSamples] = size(Clean_data);
% Loop through each electrode and generate spectrogram
for elecIdx = 1:numElectrodes
% Get data for current electrode
electrodeData = Clean_data(elecIdx, :);
% Generate spectrogram
figure;
spectrogram(electrodeData, 256, [], [], fs, ‘yaxis’);
% Add title and labels
title([‘Spectrogram of Electrode ‘, num2str(elecIdx), ‘ – File: ‘, matFiles(k).name]);
xlabel(‘Time (s)’);
ylabel(‘Frequency (Hz)’);
% Customize y-axis labels for electrodes
ax = gca;
ax.YTickLabel = compose(‘%.1f’, ax.YTick);
% Save the figure as an image file
saveas(gcf, fullfile(dataDir, [matFiles(k).name, ‘_electrode_’, num2str(elecIdx), ‘_spectrogram.png’]));
% Close the figure to avoid excessive memory usage
close(gcf);
end
else
warning(‘File %s does not contain the variable "Clean_data". Skipping…’, matFiles(k).name);
continue;
end
end
Please let me know if theres anything I can do to alter it and make the spectrograms better!Hi everyone
I am trying to generate spectrograms for .mat EEG files to show the breakdown of frequencies over time. I have got a series of spectrograms that look like this but I am not sure how to alter the code so they are more useful. My code currently is this:
% Set the directory containing .mat files
dataDir = ‘C:UsersclloyDownloadsspectrogram_data_to_use’;
% Get a list of all .mat files in the directory
matFiles = dir(fullfile(dataDir, ‘*.mat’));
% Electrode information (modify as per your electrode configuration)
electrodes = 1:32; % Assuming electrodes are labeled from 1 to 32
% Loop through each file and generate spectrograms for each electrode
for k = 1:length(matFiles)
% Load the .mat file
matFilePath = fullfile(dataDir, matFiles(k).name);
dataStruct = load(matFilePath);
% Extract the Clean_data variable
if isfield(dataStruct, ‘Clean_data’)
Clean_data = dataStruct.Clean_data;
% Sampling frequency (Hz)
fs = 128; % Sampling rate is 128 Hz
% Size of Clean_data
[numElectrodes, numSamples] = size(Clean_data);
% Loop through each electrode and generate spectrogram
for elecIdx = 1:numElectrodes
% Get data for current electrode
electrodeData = Clean_data(elecIdx, :);
% Generate spectrogram
figure;
spectrogram(electrodeData, 256, [], [], fs, ‘yaxis’);
% Add title and labels
title([‘Spectrogram of Electrode ‘, num2str(elecIdx), ‘ – File: ‘, matFiles(k).name]);
xlabel(‘Time (s)’);
ylabel(‘Frequency (Hz)’);
% Customize y-axis labels for electrodes
ax = gca;
ax.YTickLabel = compose(‘%.1f’, ax.YTick);
% Save the figure as an image file
saveas(gcf, fullfile(dataDir, [matFiles(k).name, ‘_electrode_’, num2str(elecIdx), ‘_spectrogram.png’]));
% Close the figure to avoid excessive memory usage
close(gcf);
end
else
warning(‘File %s does not contain the variable "Clean_data". Skipping…’, matFiles(k).name);
continue;
end
end
Please let me know if theres anything I can do to alter it and make the spectrograms better! Hi everyone
I am trying to generate spectrograms for .mat EEG files to show the breakdown of frequencies over time. I have got a series of spectrograms that look like this but I am not sure how to alter the code so they are more useful. My code currently is this:
% Set the directory containing .mat files
dataDir = ‘C:UsersclloyDownloadsspectrogram_data_to_use’;
% Get a list of all .mat files in the directory
matFiles = dir(fullfile(dataDir, ‘*.mat’));
% Electrode information (modify as per your electrode configuration)
electrodes = 1:32; % Assuming electrodes are labeled from 1 to 32
% Loop through each file and generate spectrograms for each electrode
for k = 1:length(matFiles)
% Load the .mat file
matFilePath = fullfile(dataDir, matFiles(k).name);
dataStruct = load(matFilePath);
% Extract the Clean_data variable
if isfield(dataStruct, ‘Clean_data’)
Clean_data = dataStruct.Clean_data;
% Sampling frequency (Hz)
fs = 128; % Sampling rate is 128 Hz
% Size of Clean_data
[numElectrodes, numSamples] = size(Clean_data);
% Loop through each electrode and generate spectrogram
for elecIdx = 1:numElectrodes
% Get data for current electrode
electrodeData = Clean_data(elecIdx, :);
% Generate spectrogram
figure;
spectrogram(electrodeData, 256, [], [], fs, ‘yaxis’);
% Add title and labels
title([‘Spectrogram of Electrode ‘, num2str(elecIdx), ‘ – File: ‘, matFiles(k).name]);
xlabel(‘Time (s)’);
ylabel(‘Frequency (Hz)’);
% Customize y-axis labels for electrodes
ax = gca;
ax.YTickLabel = compose(‘%.1f’, ax.YTick);
% Save the figure as an image file
saveas(gcf, fullfile(dataDir, [matFiles(k).name, ‘_electrode_’, num2str(elecIdx), ‘_spectrogram.png’]));
% Close the figure to avoid excessive memory usage
close(gcf);
end
else
warning(‘File %s does not contain the variable "Clean_data". Skipping…’, matFiles(k).name);
continue;
end
end
Please let me know if theres anything I can do to alter it and make the spectrograms better! spectrograms eeg MATLAB Answers — New Questions
HOW DO I MAKE A FUNCTION THAT CHANGES MY FORCE VS. TIME GRAPH TO FORCE VS. POSITION
Hello, I plotted a graph that gave me force vs. position but I need to make it so it gives me force vs. time but I am not sure on how to convert the time. I am given the sample rate which is 20 samples per second and the crosspeed is 15 inches per minute. but if the sample rate fluctuates, how can I obtain the actual distance ? I hope this makes sense, anything helps
files = [
"Test 22 Sensor.txt" "Test 22 Instron.TXT";
%%"Test 17 Sensor.txt" "Test 17 Instron.TXT";
];
Valueshift=12.53-6.18;
% value that is adjusted in case the final cross value is not
% correct and the graphs do not match up
SampleRate=10;
% sample rate of the Instron machine
NamedGraphTitle=["2022.03.16 Test 22, .012in Uncoated, 7000lbs, 15in per min"];
TimeendX=20;
%the last value for the axis
% Import the data
for k=1:size(files)
TestSensor = readtable(files(k,1),opts);
TestInstron = readtable(files(k,2),opts_instron);
% transfer the table data to the array
sensor_data = table2array(TestSensor(2:height(TestSensor)-2,:));
instron_data = table2array(TestInstron(2:height(TestInstron),:));
% Plotting
%Pulling Force
plot(sensor_data_shift.*mask,sensor_data(:,3).*mask,’LineWidth’,1.5,’Color’,[0.267, 0.447, 0.769])% RGB Blue 68, 114, 196
hold on
%Normal Force
plot(instron_data(:,1)/SampleRate+gap,instron_data(:,3),’LineWidth’,1.5,’Color’,[0.929, 0.490, 0.192])% RGB Orange 237, 125, 49
%Friction
% RGB Grey 165, 165, 165
legend(‘Normal Force’,’Pulling Force’,’Friction*1000′)
grid on
title(NamedGraphTitle)
xlabel(‘Time(s)’)
ylabel(‘Force (lbs)’)
axis([16.5,TimeendX,0,7500])
hold off
endHello, I plotted a graph that gave me force vs. position but I need to make it so it gives me force vs. time but I am not sure on how to convert the time. I am given the sample rate which is 20 samples per second and the crosspeed is 15 inches per minute. but if the sample rate fluctuates, how can I obtain the actual distance ? I hope this makes sense, anything helps
files = [
"Test 22 Sensor.txt" "Test 22 Instron.TXT";
%%"Test 17 Sensor.txt" "Test 17 Instron.TXT";
];
Valueshift=12.53-6.18;
% value that is adjusted in case the final cross value is not
% correct and the graphs do not match up
SampleRate=10;
% sample rate of the Instron machine
NamedGraphTitle=["2022.03.16 Test 22, .012in Uncoated, 7000lbs, 15in per min"];
TimeendX=20;
%the last value for the axis
% Import the data
for k=1:size(files)
TestSensor = readtable(files(k,1),opts);
TestInstron = readtable(files(k,2),opts_instron);
% transfer the table data to the array
sensor_data = table2array(TestSensor(2:height(TestSensor)-2,:));
instron_data = table2array(TestInstron(2:height(TestInstron),:));
% Plotting
%Pulling Force
plot(sensor_data_shift.*mask,sensor_data(:,3).*mask,’LineWidth’,1.5,’Color’,[0.267, 0.447, 0.769])% RGB Blue 68, 114, 196
hold on
%Normal Force
plot(instron_data(:,1)/SampleRate+gap,instron_data(:,3),’LineWidth’,1.5,’Color’,[0.929, 0.490, 0.192])% RGB Orange 237, 125, 49
%Friction
% RGB Grey 165, 165, 165
legend(‘Normal Force’,’Pulling Force’,’Friction*1000′)
grid on
title(NamedGraphTitle)
xlabel(‘Time(s)’)
ylabel(‘Force (lbs)’)
axis([16.5,TimeendX,0,7500])
hold off
end Hello, I plotted a graph that gave me force vs. position but I need to make it so it gives me force vs. time but I am not sure on how to convert the time. I am given the sample rate which is 20 samples per second and the crosspeed is 15 inches per minute. but if the sample rate fluctuates, how can I obtain the actual distance ? I hope this makes sense, anything helps
files = [
"Test 22 Sensor.txt" "Test 22 Instron.TXT";
%%"Test 17 Sensor.txt" "Test 17 Instron.TXT";
];
Valueshift=12.53-6.18;
% value that is adjusted in case the final cross value is not
% correct and the graphs do not match up
SampleRate=10;
% sample rate of the Instron machine
NamedGraphTitle=["2022.03.16 Test 22, .012in Uncoated, 7000lbs, 15in per min"];
TimeendX=20;
%the last value for the axis
% Import the data
for k=1:size(files)
TestSensor = readtable(files(k,1),opts);
TestInstron = readtable(files(k,2),opts_instron);
% transfer the table data to the array
sensor_data = table2array(TestSensor(2:height(TestSensor)-2,:));
instron_data = table2array(TestInstron(2:height(TestInstron),:));
% Plotting
%Pulling Force
plot(sensor_data_shift.*mask,sensor_data(:,3).*mask,’LineWidth’,1.5,’Color’,[0.267, 0.447, 0.769])% RGB Blue 68, 114, 196
hold on
%Normal Force
plot(instron_data(:,1)/SampleRate+gap,instron_data(:,3),’LineWidth’,1.5,’Color’,[0.929, 0.490, 0.192])% RGB Orange 237, 125, 49
%Friction
% RGB Grey 165, 165, 165
legend(‘Normal Force’,’Pulling Force’,’Friction*1000′)
grid on
title(NamedGraphTitle)
xlabel(‘Time(s)’)
ylabel(‘Force (lbs)’)
axis([16.5,TimeendX,0,7500])
hold off
end plotting, convert, speed, time MATLAB Answers — New Questions
I want to segment an apple fruit image and i’m using histogram’s method but when i’m using the function: n=hist(reshape(double(rgb(:,:,i)),[480*640 1]),0.5:256); i have this error: To RESHAPE the number of elements must not change.
% load image (colorful fabric acquired with frame grabber and camera)
rgb = imread(‘7.png’); % Matrox frame grabber + Pulnix camera
imshow(rgb)
% explore color content using image viewer
imshow(rgb)
% smooth image (reduce noise/color variation)
rgb = imfilter(rgb,ones(3,3)/9);
imshow(rgb)
% view image and RGB layers (nonuniform illumination)
figure(1), set(1,’position’,[99 79 826 589])
subplot(2,2,1), subimage(rgb), title(‘fabric image’), axis off
subplot(2,2,2), map=gray(256); map(:,2:3)=0; subimage(rgb(:,:,1),map), title(‘red layer’), axis off
subplot(2,2,3), map=gray(256); map(:,[1 3])=0; subimage(rgb(:,:,2),map), title(‘green layer’), axis off
subplot(2,2,4), map=gray(256); map(:,1:2)=0; subimage(rgb(:,:,3),map), title(‘blue layer’), axis off
% RGB histograms (poor separability)
figure(1), set(1,’position’,[452 68 560 420])
figure(2), set(2,’position’,[16 269 560 420])
c=’rgb’;
for i=1:3
n=hist(reshape(double(rgb(:,:,i)),[480*640 1]),0.5:256);
line(0:255,n,’color’,c(i))
end% load image (colorful fabric acquired with frame grabber and camera)
rgb = imread(‘7.png’); % Matrox frame grabber + Pulnix camera
imshow(rgb)
% explore color content using image viewer
imshow(rgb)
% smooth image (reduce noise/color variation)
rgb = imfilter(rgb,ones(3,3)/9);
imshow(rgb)
% view image and RGB layers (nonuniform illumination)
figure(1), set(1,’position’,[99 79 826 589])
subplot(2,2,1), subimage(rgb), title(‘fabric image’), axis off
subplot(2,2,2), map=gray(256); map(:,2:3)=0; subimage(rgb(:,:,1),map), title(‘red layer’), axis off
subplot(2,2,3), map=gray(256); map(:,[1 3])=0; subimage(rgb(:,:,2),map), title(‘green layer’), axis off
subplot(2,2,4), map=gray(256); map(:,1:2)=0; subimage(rgb(:,:,3),map), title(‘blue layer’), axis off
% RGB histograms (poor separability)
figure(1), set(1,’position’,[452 68 560 420])
figure(2), set(2,’position’,[16 269 560 420])
c=’rgb’;
for i=1:3
n=hist(reshape(double(rgb(:,:,i)),[480*640 1]),0.5:256);
line(0:255,n,’color’,c(i))
end % load image (colorful fabric acquired with frame grabber and camera)
rgb = imread(‘7.png’); % Matrox frame grabber + Pulnix camera
imshow(rgb)
% explore color content using image viewer
imshow(rgb)
% smooth image (reduce noise/color variation)
rgb = imfilter(rgb,ones(3,3)/9);
imshow(rgb)
% view image and RGB layers (nonuniform illumination)
figure(1), set(1,’position’,[99 79 826 589])
subplot(2,2,1), subimage(rgb), title(‘fabric image’), axis off
subplot(2,2,2), map=gray(256); map(:,2:3)=0; subimage(rgb(:,:,1),map), title(‘red layer’), axis off
subplot(2,2,3), map=gray(256); map(:,[1 3])=0; subimage(rgb(:,:,2),map), title(‘green layer’), axis off
subplot(2,2,4), map=gray(256); map(:,1:2)=0; subimage(rgb(:,:,3),map), title(‘blue layer’), axis off
% RGB histograms (poor separability)
figure(1), set(1,’position’,[452 68 560 420])
figure(2), set(2,’position’,[16 269 560 420])
c=’rgb’;
for i=1:3
n=hist(reshape(double(rgb(:,:,i)),[480*640 1]),0.5:256);
line(0:255,n,’color’,c(i))
end color image segmentation for apple fruit MATLAB Answers — New Questions
How to Automate KB5040434 Installation on Multiple VMs?
Hey everyone,
I need to install the KB5040434 update on a bunch of VMs. This update is super important because it fixes several vulnerabilities. Doing this one by one is a huge hassle, and each VM also needs a restart after the update.
Is there a way to automate this process? Maybe using Azure Cloud Shell, an automation account, or some other Azure feature? Any tips or guides would be really helpful.
Thanks in advance!
Hey everyone,I need to install the KB5040434 update on a bunch of VMs. This update is super important because it fixes several vulnerabilities. Doing this one by one is a huge hassle, and each VM also needs a restart after the update.Is there a way to automate this process? Maybe using Azure Cloud Shell, an automation account, or some other Azure feature? Any tips or guides would be really helpful.Thanks in advance! Read More
Error message when archiving a Project
Hello,
When I save and publish my Project, I have a recurrent message saying that the project “could not be archived”.
With the following Error ID : 9000(0x2328)
The Project is well published but I still have this message.
Can you help me please ?
Kind regards
Camille
Hello, When I save and publish my Project, I have a recurrent message saying that the project “could not be archived”. With the following Error ID : 9000(0x2328) The Project is well published but I still have this message. Can you help me please ? Kind regards Camille Read More
dynamic groups with direct reports are no longer updating
Hello,
Is anyone using the Direct reports for dynamic rule in their organization without issues? Recently, we noticed a lot of our groups being outdated and the workaround is to change to static and then back to dynamic with the same rule. We had this exact issue 6months ago and Microsoft suggested that it was related to the fact we were using ” instead of “” although the same workaround worked for ”. All groups were updated to “” and worked until recently when we started getting a lot of reports of groups being outdated.
Thanks
Hello, Is anyone using the Direct reports for dynamic rule in their organization without issues? Recently, we noticed a lot of our groups being outdated and the workaround is to change to static and then back to dynamic with the same rule. We had this exact issue 6months ago and Microsoft suggested that it was related to the fact we were using ” instead of “” although the same workaround worked for ”. All groups were updated to “” and worked until recently when we started getting a lot of reports of groups being outdated. Thanks Read More
Checkbox in Excel showing True or False
When i share an Excel document created with the Excel app that has a checkbox with other users. Some users see it as True or false instead of a check box.
Please help
When i share an Excel document created with the Excel app that has a checkbox with other users. Some users see it as True or false instead of a check box.Please help Read More
Does Intune support expanding categories for mobile apps in the Graph API?
Hello everyone,
I’m using the Graph API to list mobile apps. I successfully use the $expand parameter with assignments, and I receive the mobile apps along with their assignments. However, when I try to use $expand with categories, I receive a 503 status response.
Here are the details:
This request works:
deviceAppManagement/mobileApps?$filter=(isof(‘microsoft.graph.win32LobApp‘) and isAssigned eq true)&$expand=assignments
This request does not work:
deviceAppManagement/mobileApps?$filter=(isof(‘microsoft.graph.win32LobApp‘) and isAssigned eq true)&$expand=categories
Is there support for expanding categories in Microsoft Intune using the Graph API?
Thank you!
Hello everyone,I’m using the Graph API to list mobile apps. I successfully use the $expand parameter with assignments, and I receive the mobile apps along with their assignments. However, when I try to use $expand with categories, I receive a 503 status response.Here are the details:This request works:deviceAppManagement/mobileApps?$filter=(isof(‘microsoft.graph.win32LobApp’) and isAssigned eq true)&$expand=assignmentsThis request does not work:deviceAppManagement/mobileApps?$filter=(isof(‘microsoft.graph.win32LobApp’) and isAssigned eq true)&$expand=categoriesIs there support for expanding categories in Microsoft Intune using the Graph API?Thank you! Read More
How to Recover Deleted Files from USB Drive for Free?
I accidentally deleted important files from my USB drive. These files are crucial for an ongoing project, and I’m hoping to recover them as soon as possible. I’ve tried a few basic recovery steps, but I’m not having any luck, and I’m uncertain about the best methods to use on a Windows PC. If anyone has experience or tips on how to recover deleted files from USB drive, I would greatly appreciate your help!
I’ve heard of various USB data recovery software options, but I’m not sure which ones are reliable or if I should try any built-in Windows features first. Additionally, I’m concerned about overwriting the deleted files, so I want to make sure I approach this correctly. I’m eager to recover my files and get back on track with my work.
I accidentally deleted important files from my USB drive. These files are crucial for an ongoing project, and I’m hoping to recover them as soon as possible. I’ve tried a few basic recovery steps, but I’m not having any luck, and I’m uncertain about the best methods to use on a Windows PC. If anyone has experience or tips on how to recover deleted files from USB drive, I would greatly appreciate your help! I’ve heard of various USB data recovery software options, but I’m not sure which ones are reliable or if I should try any built-in Windows features first. Additionally, I’m concerned about overwriting the deleted files, so I want to make sure I approach this correctly. I’m eager to recover my files and get back on track with my work. Read More
Merging subsidiaries under a single MPN
Wandered if anyone had any experience (and found any pitfalls!) of merging subsidiaries with separate MPN’s under a primary.
Obvious one is where the coop/rebate funding gets paid – can it remain at the subsidiary level or will it have to be paid at the top level?
Any other hints and tips?
I did find this Merge your partner account with another partner account | Microsoft Learn
Wandered if anyone had any experience (and found any pitfalls!) of merging subsidiaries with separate MPN’s under a primary. Obvious one is where the coop/rebate funding gets paid – can it remain at the subsidiary level or will it have to be paid at the top level? Any other hints and tips? I did find this Merge your partner account with another partner account | Microsoft Learn Read More
Dynamics 365 CRM version 9.1
Hi! I am reaching out to confirm some technical details regarding Dynamics 365 CRM version 9.1. Specifically, I would like to verify the following:
Maximum Number of Fields per Entity: what is the maximum number of fields allowed per entity in Dynamics 365 CRM version 9.1, including both system and custom fields?Maximum Size of a Single Record: what is the maximum size (in bytes) permitted for a single record within an entity?
I am currently managing an upgrade from version 8.1 to 9.1 and need to ensure our data and customizations are compliant with these limits to avoid any issues during the migration process.
If it’s better to ask this question in a different section, please redirect me. Unfortunately, I couldn’t find technical support, mayby you know where is it?
Thank you in advance for your help.
Hi! I am reaching out to confirm some technical details regarding Dynamics 365 CRM version 9.1. Specifically, I would like to verify the following:Maximum Number of Fields per Entity: what is the maximum number of fields allowed per entity in Dynamics 365 CRM version 9.1, including both system and custom fields?Maximum Size of a Single Record: what is the maximum size (in bytes) permitted for a single record within an entity?I am currently managing an upgrade from version 8.1 to 9.1 and need to ensure our data and customizations are compliant with these limits to avoid any issues during the migration process. If it’s better to ask this question in a different section, please redirect me. Unfortunately, I couldn’t find technical support, mayby you know where is it? Thank you in advance for your help. Read More
Dealing with Teams Chat Messages When People Leave
Tenant administrators know that they need to deal with mailboxes and OneDrive accounts when people leave, but what about Teams chat messages? Or rather, the information stored in the compliance records captured in Exchange Online mailboxes? Reviewing chat messages can be an ardous task, so perhaps the solution might be to export the compliance records to a PST for long-term retention.
https://office365itpros.com/2024/08/07/teams-chat-messages-leavers/
Tenant administrators know that they need to deal with mailboxes and OneDrive accounts when people leave, but what about Teams chat messages? Or rather, the information stored in the compliance records captured in Exchange Online mailboxes? Reviewing chat messages can be an ardous task, so perhaps the solution might be to export the compliance records to a PST for long-term retention.
https://office365itpros.com/2024/08/07/teams-chat-messages-leavers/ Read More
Bulk import of members
Hi,
Is it possible to bulk import members/users to a SharePoint site?
A project site must be created with 30 members. Is it possible to bulk import these members or do I have to manually type in each members e-mail?
These 30 members might also be added to other sites, therefor it would be beneficial with a list.
Best regards
Anne
Hi, Is it possible to bulk import members/users to a SharePoint site?A project site must be created with 30 members. Is it possible to bulk import these members or do I have to manually type in each members e-mail?These 30 members might also be added to other sites, therefor it would be beneficial with a list. Best regardsAnne Read More
Updated content missing in MS-102 study guide
Are you able to help get this resolved, please?
The MS-102 course had a major update at the end of June (with a minor correction on 4th July). But not all of the updated content was uploaded to the Study Guide on Microsoft Learn: https://learn.microsoft.com/en-us/training/courses/ms-102t00
There are several issues, but in particular, one updated module hasn’t been uploaded to the study guide at all. It contains some new content, and although the PPT slides have been updated, the study guide the students are seeing is out of date and missing the new content.
I reported all the issues on 12th July in the Microsoft Training Support forum, in the Microsoft Certified Trainer / Courses/Course Content / Course Content Problem section.
I was later told my report had been forwarded “to our Support Team” and I was given a case number, 2407120040010963.
But several weeks later, the content still hasn’t been updated. It’s not clear whether my report has actually been sent to the Content team, who would be the people who will correct this.
Are you able to find out whether the Content team have the report, and when they will upload the new content to the Microsoft Learn study guide?
This isn’t fair on our customers, who are paying for a course but are not seeing all of the course material in their study guide.
Are you able to help get this resolved, please? The MS-102 course had a major update at the end of June (with a minor correction on 4th July). But not all of the updated content was uploaded to the Study Guide on Microsoft Learn: https://learn.microsoft.com/en-us/training/courses/ms-102t00 There are several issues, but in particular, one updated module hasn’t been uploaded to the study guide at all. It contains some new content, and although the PPT slides have been updated, the study guide the students are seeing is out of date and missing the new content. I reported all the issues on 12th July in the Microsoft Training Support forum, in the Microsoft Certified Trainer / Courses/Course Content / Course Content Problem section. https://trainingsupport.microsoft.com/en-us/tcmct/forum/all/ms-102-some-content-not-updated-in-study-guide/1002be6d-384b-440a-8ff7-0b99f5bd9c43 I was later told my report had been forwarded “to our Support Team” and I was given a case number, 2407120040010963. But several weeks later, the content still hasn’t been updated. It’s not clear whether my report has actually been sent to the Content team, who would be the people who will correct this. Are you able to find out whether the Content team have the report, and when they will upload the new content to the Microsoft Learn study guide? This isn’t fair on our customers, who are paying for a course but are not seeing all of the course material in their study guide. Read More
parallel timers not executing as expected
I am trying to run two parallel timers. Below is a minimal example.
I would expect (or wish) that timerCallback2 is executed when timerCallback1 is in pause mode. But the function seems to be blocking. I also tried to add some drawnow calls.
Is there any way to execute multiple timer callbacks while another is still running, or is this intended behavior? Does MATLAB not process the event queue while another event is still running? Or are there different event queues for timer events and GUI events?
Thank you for your help!
timer1 = timer(Name="timer1", ExecutionMode="fixedSpacing", BusyMode="queue", TimerFcn=@timerCallback1, TasksToExecute=3, Period=1);
start(timer1)
timer2 = timer(Name="timer2", ExecutionMode="fixedSpacing", BusyMode="queue", TimerFcn=@timerCallback2, TasksToExecute=30, Period=0.1);
start(timer2)
function timerCallback1(~,~)
disp("start T1…")
pause(2)
disp("end T1…")
end
function timerCallback2(~, ~)
disp(" start T2…")
pause(0.05)
disp(" end T2…")
end
%% Output is:
% start T1…
% end T1…
% start T2…
% end T2…
% start T2…
% end T2…
% start T2…
% end T2…
% start T2…
% end T2…
% start T2…
% end T2…
% start T2…
% end T2…
% start T2…
% end T2…
% start T1…
% end T1…
% start T2…
% end T2…
% start T2…
% and so on….I am trying to run two parallel timers. Below is a minimal example.
I would expect (or wish) that timerCallback2 is executed when timerCallback1 is in pause mode. But the function seems to be blocking. I also tried to add some drawnow calls.
Is there any way to execute multiple timer callbacks while another is still running, or is this intended behavior? Does MATLAB not process the event queue while another event is still running? Or are there different event queues for timer events and GUI events?
Thank you for your help!
timer1 = timer(Name="timer1", ExecutionMode="fixedSpacing", BusyMode="queue", TimerFcn=@timerCallback1, TasksToExecute=3, Period=1);
start(timer1)
timer2 = timer(Name="timer2", ExecutionMode="fixedSpacing", BusyMode="queue", TimerFcn=@timerCallback2, TasksToExecute=30, Period=0.1);
start(timer2)
function timerCallback1(~,~)
disp("start T1…")
pause(2)
disp("end T1…")
end
function timerCallback2(~, ~)
disp(" start T2…")
pause(0.05)
disp(" end T2…")
end
%% Output is:
% start T1…
% end T1…
% start T2…
% end T2…
% start T2…
% end T2…
% start T2…
% end T2…
% start T2…
% end T2…
% start T2…
% end T2…
% start T2…
% end T2…
% start T2…
% end T2…
% start T1…
% end T1…
% start T2…
% end T2…
% start T2…
% and so on…. I am trying to run two parallel timers. Below is a minimal example.
I would expect (or wish) that timerCallback2 is executed when timerCallback1 is in pause mode. But the function seems to be blocking. I also tried to add some drawnow calls.
Is there any way to execute multiple timer callbacks while another is still running, or is this intended behavior? Does MATLAB not process the event queue while another event is still running? Or are there different event queues for timer events and GUI events?
Thank you for your help!
timer1 = timer(Name="timer1", ExecutionMode="fixedSpacing", BusyMode="queue", TimerFcn=@timerCallback1, TasksToExecute=3, Period=1);
start(timer1)
timer2 = timer(Name="timer2", ExecutionMode="fixedSpacing", BusyMode="queue", TimerFcn=@timerCallback2, TasksToExecute=30, Period=0.1);
start(timer2)
function timerCallback1(~,~)
disp("start T1…")
pause(2)
disp("end T1…")
end
function timerCallback2(~, ~)
disp(" start T2…")
pause(0.05)
disp(" end T2…")
end
%% Output is:
% start T1…
% end T1…
% start T2…
% end T2…
% start T2…
% end T2…
% start T2…
% end T2…
% start T2…
% end T2…
% start T2…
% end T2…
% start T2…
% end T2…
% start T2…
% end T2…
% start T1…
% end T1…
% start T2…
% end T2…
% start T2…
% and so on…. timer, event, callback MATLAB Answers — New Questions
How to find MATLAB function blocks??
Dear Community, can i get the answer to this question?
S = sfroot();
% Get block
handlesB = find(sfroot, ‘-isa’,’Stateflow.EMChart’);
This is the instruction I have used to find out the MATLAB Function blocks. But, this instruction also considers the MATLAB Function block present the the Simulink library. I would like to know whether there is any other command to find out MATLAB Function blocks which are just present in my created Model.Dear Community, can i get the answer to this question?
S = sfroot();
% Get block
handlesB = find(sfroot, ‘-isa’,’Stateflow.EMChart’);
This is the instruction I have used to find out the MATLAB Function blocks. But, this instruction also considers the MATLAB Function block present the the Simulink library. I would like to know whether there is any other command to find out MATLAB Function blocks which are just present in my created Model. Dear Community, can i get the answer to this question?
S = sfroot();
% Get block
handlesB = find(sfroot, ‘-isa’,’Stateflow.EMChart’);
This is the instruction I have used to find out the MATLAB Function blocks. But, this instruction also considers the MATLAB Function block present the the Simulink library. I would like to know whether there is any other command to find out MATLAB Function blocks which are just present in my created Model. matlab, matlab function block MATLAB Answers — New Questions
Servo Motor Control Issues
I’ve connected a servo motor to my arduino boad, (Elegoo 2560), and have been trying to cuse simulink to run the motor. Ideally I would like it to spin when an input is recieved, but I can’t make it spin at all for some reason. Attached are the simple set ups I’ve been trying to run, but I keep getting the error ‘error building’ with no details. Is there a visible reason for this error, or something I should change?I’ve connected a servo motor to my arduino boad, (Elegoo 2560), and have been trying to cuse simulink to run the motor. Ideally I would like it to spin when an input is recieved, but I can’t make it spin at all for some reason. Attached are the simple set ups I’ve been trying to run, but I keep getting the error ‘error building’ with no details. Is there a visible reason for this error, or something I should change? I’ve connected a servo motor to my arduino boad, (Elegoo 2560), and have been trying to cuse simulink to run the motor. Ideally I would like it to spin when an input is recieved, but I can’t make it spin at all for some reason. Attached are the simple set ups I’ve been trying to run, but I keep getting the error ‘error building’ with no details. Is there a visible reason for this error, or something I should change? arduino, servo motor, simulink, error MATLAB Answers — New Questions