Month: July 2024
Q-B Error Code 9000: Troubleshooting and Support Guide
Encountering Q-B Error Code 9000 can disrupt your accounting tasks, causing delays and potential inaccuracies in your financial management. This error typically occurs during pay_roll updates or direct deposit transactions.
Encountering Q-B Error Code 9000 can disrupt your accounting tasks, causing delays and potential inaccuracies in your financial management. This error typically occurs during pay_roll updates or direct deposit transactions. Read More
Need help with macro
I have the following macro that someone made for me a few years ago. In it, it is tied to a certain page. I need to be able to run the macro on the page that I am working on without having to change the page name every time.
Sub Macro1()
‘
‘ Macro1 Macro
‘
‘
Range(“A8”).Select
Range(Selection, Selection.End(xlDown)).Select
Range(“A8:I41”).Select
ActiveWorkbook.Worksheets(“June 2024”).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(“June 2024”).Sort.SortFields.Add2 Key:=Range( _
“E7:E41”), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets(“June 2024”).Sort.SortFields.Add2 Key:=Range( _
“A8:A41”), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets(“June 2024”).Sort
.SetRange Range(“A8:I41”)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
Dim i As Integer
For i = 2 To 5000
If Cells(i, 5).Value <> Cells(i + 1, 5).Value Then
Cells(i + 1, 5).Rows(“1:1”).EntireRow.Insert
i = i + 1
Else
End If
Next i
End With
End Sub
I have the following macro that someone made for me a few years ago. In it, it is tied to a certain page. I need to be able to run the macro on the page that I am working on without having to change the page name every time. Sub Macro1()” Macro1 Macro”Range(“A8”).SelectRange(Selection, Selection.End(xlDown)).SelectRange(“A8:I41”).SelectActiveWorkbook.Worksheets(“June 2024”).Sort.SortFields.ClearActiveWorkbook.Worksheets(“June 2024″).Sort.SortFields.Add2 Key:=Range( _”E7:E41”), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _xlSortNormalActiveWorkbook.Worksheets(“June 2024″).Sort.SortFields.Add2 Key:=Range( _”A8:A41”), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _xlSortNormalWith ActiveWorkbook.Worksheets(“June 2024”).Sort.SetRange Range(“A8:I41”).Header = xlGuess.MatchCase = False.Orientation = xlTopToBottom.SortMethod = xlPinYin.Apply Dim i As IntegerFor i = 2 To 5000If Cells(i, 5).Value <> Cells(i + 1, 5).Value ThenCells(i + 1, 5).Rows(“1:1”).EntireRow.Inserti = i + 1ElseEnd IfNext iEnd WithEnd Sub Read More
SharePoint roadmap pitstop: June 2024
It’s official – summer is here (in the Northern Hemisphere), happy Wintering Southern Hemi. No matter the latitude or the attitude, the altitude of tech delivery continued with verve and zest.
June 2024 brought some great new offerings: Viva Amplify supports SharePoint audience targeting, SharePoint Premium: Autofill columns, SharePoint: Apply shapes to images, updated CLI for Microsoft 365 v7.10, Teams: File previews in messages, SharePoint: Text web part updates, OneDrive: Shortened URLs, Microsoft Designer updates + new icon, planner.cloud.microsoft, and more. Details and screenshots below, including our audible companion: The Intrazone Roadmap Pitstop: June 2024 podcast episode – all to help answer, “What’s rolling out now for SharePoint and related technologies into Microsoft 365?”
In the podcast episode, we also hear from Dave Cohen (Principal GPM at Microsoft) about how the SharePoint team plans, designs, and delivers ongoing value to your intranet of today and tomorrow. He provides a lot of great insights about how sites, pages, web parts, and more will evolve – applicable to some of the updates from this month – and certainly in the coming months.
All features listed below began rolling out to Targeted Release customers in Microsoft 365 as of June 2024 (possibly early July 2024).
Inform and engage with dynamic employee experiences.
Build your intelligent intranet on SharePoint in Microsoft 365 and get the benefits of investing in business outcomes – reducing IT and development costs, increasing business speed and agility, and up-leveling the dynamic, personalized, and welcoming nature of your intranet.
Microsoft Viva Amplify supports SharePoint audience targeting.
When publishing to one or more SharePoint sites from within Viva Amplify, you can now promote the news post to specific audiences by indicating security groups, Microsoft 365 groups, or Entra ID (previously Azure Active Directory) dynamic groups.
This new default feature will allow more targeted communications as desired by the authors and publishers, which equals more engagement with your Viva Amplify publications. When creating your Amplify campaigns, you’re able to use audience targeting in the publishing pane within Amplify.
Scope your reach for the greatest impact.
Roadmap ID 398975
SharePoint Premium: New autofill columns
Autofill columns allow an AI prompt to be set on a document library column that processes the file’s contents and saves the response to the associated column. The prompt can be configured to extract information from the file or to generate a response based on the analysis of its contents. That’s both existing, specific metadata, or generated metadata based on your specific criteria – which in the end, all make content mean more and your content become more discoverable, easier to enhance business processes, and takes the manual processing and automates it.
This is one of those when you see it in action, you first drop jaw, wonder how, and then quickly move into a simple gratitude statement: “thanks AI” and get on to other higher priority tasks.
Learn more.
Roadmap ID 389375.
SharePoint: Apply shapes to images.
Our eyes and brain love variance – especially when we can enhance the story of a communication, visually. To help bring more interest to a page, you can now apply a shape over an Image web part or inline image in a Text web part. The shapes include square, circle, triangle, hexagon, pebble, and teardrop.
Roadmap ID 395210.
CLI (command-line interface tool) for Microsoft 365 v7.10
This update brings new management capabilities for a variety of apps and services. Here, we’ll focus on the SharePoint’y IT updates. In full, the CLI for Microsoft 365 is a cross-platform command-line tool that allows you to manage your Microsoft 365 tenant and SharePoint Framework projects.
First, a primer on Microsoft 365 Archive; this is cost-effective storage for inactive SharePoint sites. Many organizations want to retain inactive data but may also wrestle with rising storage costs. Microsoft 365 Archive allows you to retain this inactive data by moving it into cold storage within SharePoint.
The CLI for Microsoft 365 now has new commands to archive and unarchive sites.
To archive a SharePoint site, run: m365 spo tenant site archive –url “https://contoso.sharepoint.com/sites/Marketing“
To unarchive a SharePoint site, run: m365 spo tenant site unarchive –url “https://contoso.sharepoint.com/sites/Marketing“
In this release we’re also adding the ability to list site administrators. To list all admins of a SharePoint site, run: m365 spo site admin list –siteUrl https://contoso.sharepoint.com
Read the full v7.10 article on the Microsoft 365 and Power Platform Community Blog.
Teamwork updates across SharePoint team sites, OneDrive, and Microsoft Teams
Microsoft 365 is designed to be a universal toolkit for teamwork – to give you the right tools for the right task, along with common services to help you seamlessly work across applications. SharePoint is the intelligent content service that powers teamwork – to better collaborate on proposals, projects, and campaigns throughout your organization – with integration across Microsoft Teams, OneDrive, Yammer, Stream, Planner and much more.
Microsoft Teams: New file image previews in messages
The Teams team is working on a series of features to help you to identify, consume, and act on content such as files, lists, and SharePoint pages/posts. In this first release, they bring file image previews to chats and channels, to help us better identify a file in the conversation stream.
When a file — such as a JPG or PNG image file, a PowerPoint file, or a PDF — is attached to a message in chat or a channel, you’ll see a small image of the file without opening the file.
The benefits are being able to:
Quickly scan for and find the file you need.
To preview part of the file content before opening it.
Save time and bandwidth by avoiding unnecessary file downloads and file opens.
This builds off the years of work to generate and provide file previews in OneDrive and SharePoint, and now – like much innovation – brings it directly into where you’re working with others – for your collective.
Message ID: MC790792
SharePoint: Enhancements to Text web part (Part 1)
The Text web part is one of the most used web parts in all of SharePoint – both in default templates and from organic use. Need to add text to a SharePoint page? That’s the main role of the Text web part. And we’re working to make it better, to give you more options to make the text on your pages appear how you prefer them to.
In this update, you’ll find:
Expanded support for font sizes 8-250 with the capability to manually enter custom value.
More bullet list styles – like Disc, Circle, and Square
More numbered list styles – Using numbers, the alphabet, and Roman numerals.
And the ability to start new lists and set custom numbered lists.
These small improvements bring a lot of choice to your text blocks. Alongside this and improved image support, you have great control to type out and visualize better for your viewers’ reception.
Learn more.
Roadmap ID 394278
OneDrive: Shortened URLs in OneDrive web
This makes it easier to navigate to and around OneDrive. When you visit OneDrive on the web, you will see that the previous, longer URL had the format “tenant-my.sharepoint.com/personal/alias/_layouts/15/onedrive.aspx?view=1”. The new, shortened URL will have the format “tenant-my.sharepoint.com.”
We will also replace the name of the pivot in the URL when the user browses to a different part of OneDrive, e.g., “tenant-my.sharepoint.com/my” for My Files or “tenant-my.sharepoint.com/favorites” to go to your favorites view.
Note: If you book marked or linked to the previous URL, the service will be redirected to the new URL. All sharing links, bookmarks, and custom redirectors; like typing tenant.onedrive.com – the shortest of all OneDrive URLs – still takes you to OneDrive for the Web. Browsing content within another user’s OneDrive will also continue to work and will display the old URL format. There will be no changes to SharePoint Web URLs.
Message ID: MC796476
Related technology
Microsoft Designer gets a refresh + a new icon
First, you’ll notice the new Designer icon within the Microsoft 365 app launcher if you’re signed in with your Microsoft account ID. It’s simple and clean.
Beyond the updated logo, some of the fun , new features…
Aspect ratios: Designer now supports landscape and portrait images, along with square.
The app also brings Greeting Cards, a new tool in Designer that helps you create highly personalized greeting cards for any occasion.
Transform your photos effortlessly with the new Restyle Image feature. This allows you to turn your photos into stunning, stylized images with just a few clicks. (check it out)
Learn more about Microsoft Designer at: https://designer.microsoft.com/, plus a recent video: “Using Microsoft Designer “Restyle Image” Tool” from community member, Rob Quickenden.
The new Planner transitions to the cloud.microsoft domain
Initially, the cloud.microsoft domain, provisioned in early 2023, provides a unified, trusted, and dedicated DNS domain space to host Microsoft’s first-party authenticated SaaS products and experiences.
And now, welcome Microsoft Planner to the cloud.microsoft domain: that’s https://planner.cloud.microsoft. Type it into a browser and taken straight to the new Planner – with trust and dedication.
We know this quells IT Pro heartache, and we appreciate the feedback about what we can do to make rolling out and adopting tech and tech services more known and trusted.
Public | Upcoming Microsoft 365 Champions call.
The upcoming July 2024 has as its primary topic the SharePoint Web UI Kit – used to design engaging sites and pages in Figma. The call is on July 24th, 2024. To join the call, head over to https://aka.ms/M365Champions and register to join for free. The webinar is presented twice on the same day: At 9am and 6pm PT for coverage across time zones.
This month, the guest speakers are Nicole Woon and Farhan Mian from the SharePoint team – both working on the Web UI Kit. While building a page in SharePoint is easy, the team wants to provide the ability to explore different design options for your site without the limitation of admin privileges and tenant restrictions, and without exposing organization data.
And you can find the SharePoint Web UI Kit within the Figma community: https://aka.ms/SPWebUIKit
Learn more about the Microsoft 365 Champions program.
We will be retiring the SharePoint News connector from Microsoft Teams starting July 22, 2024, and ending August 31, 2024. To continue receiving SharePoint team site news notifications in Teams, we recommend using these alternatives, where development investments continue:
Viva Connections News notifications
Viva Amplify
Or Workflow in Teams
After the connectors are retired, users will not receive new post notifications. While no admin action is required to implement the retirement, we recommend that you guide people through the process of determining if they have configured the SharePoint News connector using the detailed, step-by-step guide.
Learn more.
Plus, a new blog from Rob Nunez: “SharePoint news connector retirement“
Microsoft Stream: now consumes Less storage consumed for Stream videos in the Microsoft 365 Suite
Video files tend to be very large and consume lots of space against your OneDrive and SharePoint storage quotas. Currently, when you make metadata changes such as title, description, transcripts, chapters, interactivity, thumbnails, media settings, etc. to files in Microsoft Stream, each of those changes causes new versions to be created. Not ideal. Each of these versions counts the full file size towards consumed storage quota. Thus, for large video and audio files, these versions cause your storage consumption to quickly increase. Again, it was not ideal.
To evolve the service, we are changing how Stream handles versioning. Any changes made to the metadata of files from Stream will stop making versions, thus preventing storage from increasing as rapidly as it has in the past.
The following actions will no longer create a version in the file’s version history:
Editing title or description from within Stream.
Adding or editing chapters, transcripts, captions, or interactivity – like a survey.
Adding audio tracks.
For more information, visit Versioning in Stream within Microsoft Support.
Roadmap ID 395380
July 2024 teasers
Psst, still here? Still scrolling the page looking for more roadmap goodness? If so, here is a few teasers of what’s to come to production next month…
Teaser #1: Rewrite SharePoint pages with Copilot in SharePoint Text web part v1 [Roadmap ID: 124840]
Teaser #2: Collaborate on SharePoint Pages and News with coauthoring [Roadmap ID: 124853]
… shhh, tell everyone.
BONUS | “The intranet of tomorrow: beautiful, flexible, and AI ready”
Helpful, ongoing change management resources
Community News Desk | Get up to date on community news and events.
Microsoft 365 apps and services in-depth, on-demand product learning series
“Stay on top of Office 365 changes“
“Message center in Office 365“
Install the Office 365 admin app; view Message Center posts and stay current with push notifications.
Microsoft 365 public roadmap + pre-filtered URL for SharePoint, OneDrive, Yammer and Stream roadmap items.
SharePoint Facebook | Twitter | SharePoint Community Blog | Feedback
Follow me to catch news and interesting SharePoint things: @mkashman; warning, occasional bad puns may fly in a tweet or two here and there.
Thanks for tuning in and/or reading this episode/blog of the Intrazone Roadmap Pitstop – June 2024. We are open to your feedback in comments below to hear how both the Roadmap Pitstop podcast episodes and blogs can be improved over time.
Engage with us. Ask those questions that haunt you. Push us where you want and need to get the best information and insights. We are here to put both our and your best change management foot forward.
Stay safe out there on the road’map ahead. And thanks for listening and reading.
Thanks for your time,
Mark Kashman – senior product manager (SharePoint/Lists) | Microsoft)
Microsoft Tech Community – Latest Blogs –Read More
How can the best possible convergence be achieved between simulations in Ltspice and Simscape?
I am simulating the switching of a mosfet with an inductive and resistive load. When doing the simulations in Ltspice and Simscape and comparing them, it is observed that in the turning on of the mosfet (in the simulation in Simscape) a very high voltage peak appears with oscillation measured at the mosfet’s drain. In the Ltspice simulation, this peak is much smaller and does not present oscillation.
LTspice schematic
Ltspice simulation
Simscape schematic
Simscape simulationI am simulating the switching of a mosfet with an inductive and resistive load. When doing the simulations in Ltspice and Simscape and comparing them, it is observed that in the turning on of the mosfet (in the simulation in Simscape) a very high voltage peak appears with oscillation measured at the mosfet’s drain. In the Ltspice simulation, this peak is much smaller and does not present oscillation.
LTspice schematic
Ltspice simulation
Simscape schematic
Simscape simulation I am simulating the switching of a mosfet with an inductive and resistive load. When doing the simulations in Ltspice and Simscape and comparing them, it is observed that in the turning on of the mosfet (in the simulation in Simscape) a very high voltage peak appears with oscillation measured at the mosfet’s drain. In the Ltspice simulation, this peak is much smaller and does not present oscillation.
LTspice schematic
Ltspice simulation
Simscape schematic
Simscape simulation mismatch ltspice and simscape MATLAB Answers — New Questions
How to implement Extended Kalman Filter’s State Transition Function and Measurement Function for PMSM?
Hello, the TLDR of this post is that I am trying to learn how to implement a sensorless control for a 3 phase PMSM using the EKF Simulink block, but I can’t seem to make it work. I’m not sure if I implemented the State Transition Function or the Measurement Functions correctly.
The EKF Simulink block is set up as such
The equivalent Simulink implementation is as such
I have set the Covariance Matrix Q as NoiseMatrix(1:4) and Covariance Matrix R as NoiseMatrix(5:6) in the EKF block parameter below
StateTransitionFunction
The relevant state space equations of the 3 phase PMSM is derived as such
and I implemented the State Transition function as such
function x_next = pmsmStateTransition_3p(x,u)
% represents the dynaics of the PMSM and how the states of the …
% evolves over time
% x=[i_d; i_q; omega_e; theta_e] (state vector)
% u=[v_alpha; v_beta] (input vector)
% ——– Inputs ——– %
i_d=x(1);
i_q=x(2);
omega_e=x(3);
theta_e=x(4);
v_alpha=u(1);
v_beta=u(2);
% ——– Motor Parameters ——– %
R = 0.007184;
L = 19.5e-6;
pole_pairs = 6; %pole pairs
J = 3.37862;
B = 0;
lambda = 0.0623;
dt = 9e-5; % Ts
% ——– Equations ——– %
lambda_q = i_q*L;
lambda_d = i_d*L+lambda;
T_e = 3/2*pole_pairs*(i_q*(i_d*L + lambda) – i_d*i_q*L);
v_d = cos(theta_e)*v_alpha + sin(theta_e)*v_beta;
v_q = -sin(theta_e)*v_alpha + cos(theta_e)*v_beta;
% State Transition Equations
% Euler Discretization is used to calculate the next states
id_next = i_d + (v_d – R*i_d + omega_e*lambda_q)/L*dt;
iq_next = i_q + (v_q – R*i_q – omega_e*lambda_d)/L*dt;
omega_next = omega_e + (T_e – B*omega_e)/J*dt;
theta_next = theta_e + omega_e*dt;
% ——– Output ——– %
x_next=[id_next; iq_next; omega_next; theta_next];
end
Measurement Function
function y = pmsmMeasurement_3p(x)
% x=[i_d; i_q; omega_e; theta_e] (state vector)
% y=[i_alpha; i_beta] (output vector)
% ——— Inputs ———- %
i_d=x(1);
i_q=x(2);
theta_e=x(4);
% ——– Equations ——– %
i_alpha = i_d*cos(theta_e) – i_q*sin(theta_e);
i_beta = i_d*sin(theta_e) + i_q*cos(theta_e);
% ——— Output ———- %
y=[i_alpha; i_beta];
end
Results
I understand that the covariance matrices determines the results. After I set everything up, I would find the optimal values using the Genetic Algorithm, but even then the results from it don’t differ so much from the estimated we_hat in the bottom figure for results, so I just used a generic placeholder value of 100 for all values of the Noise Covariance Matrices (i.e. Q = [100, 100, 100, 100] and R = [100, 100]).
Have I implemented the functions properly? I would appreciate any help at all to help lessen the amount of things I need to debug. Thank you so much and I look forward to your reply.
I have attached all the relevant files in this post, so please let me know what you need and I can direct you to the relevant file.Hello, the TLDR of this post is that I am trying to learn how to implement a sensorless control for a 3 phase PMSM using the EKF Simulink block, but I can’t seem to make it work. I’m not sure if I implemented the State Transition Function or the Measurement Functions correctly.
The EKF Simulink block is set up as such
The equivalent Simulink implementation is as such
I have set the Covariance Matrix Q as NoiseMatrix(1:4) and Covariance Matrix R as NoiseMatrix(5:6) in the EKF block parameter below
StateTransitionFunction
The relevant state space equations of the 3 phase PMSM is derived as such
and I implemented the State Transition function as such
function x_next = pmsmStateTransition_3p(x,u)
% represents the dynaics of the PMSM and how the states of the …
% evolves over time
% x=[i_d; i_q; omega_e; theta_e] (state vector)
% u=[v_alpha; v_beta] (input vector)
% ——– Inputs ——– %
i_d=x(1);
i_q=x(2);
omega_e=x(3);
theta_e=x(4);
v_alpha=u(1);
v_beta=u(2);
% ——– Motor Parameters ——– %
R = 0.007184;
L = 19.5e-6;
pole_pairs = 6; %pole pairs
J = 3.37862;
B = 0;
lambda = 0.0623;
dt = 9e-5; % Ts
% ——– Equations ——– %
lambda_q = i_q*L;
lambda_d = i_d*L+lambda;
T_e = 3/2*pole_pairs*(i_q*(i_d*L + lambda) – i_d*i_q*L);
v_d = cos(theta_e)*v_alpha + sin(theta_e)*v_beta;
v_q = -sin(theta_e)*v_alpha + cos(theta_e)*v_beta;
% State Transition Equations
% Euler Discretization is used to calculate the next states
id_next = i_d + (v_d – R*i_d + omega_e*lambda_q)/L*dt;
iq_next = i_q + (v_q – R*i_q – omega_e*lambda_d)/L*dt;
omega_next = omega_e + (T_e – B*omega_e)/J*dt;
theta_next = theta_e + omega_e*dt;
% ——– Output ——– %
x_next=[id_next; iq_next; omega_next; theta_next];
end
Measurement Function
function y = pmsmMeasurement_3p(x)
% x=[i_d; i_q; omega_e; theta_e] (state vector)
% y=[i_alpha; i_beta] (output vector)
% ——— Inputs ———- %
i_d=x(1);
i_q=x(2);
theta_e=x(4);
% ——– Equations ——– %
i_alpha = i_d*cos(theta_e) – i_q*sin(theta_e);
i_beta = i_d*sin(theta_e) + i_q*cos(theta_e);
% ——— Output ———- %
y=[i_alpha; i_beta];
end
Results
I understand that the covariance matrices determines the results. After I set everything up, I would find the optimal values using the Genetic Algorithm, but even then the results from it don’t differ so much from the estimated we_hat in the bottom figure for results, so I just used a generic placeholder value of 100 for all values of the Noise Covariance Matrices (i.e. Q = [100, 100, 100, 100] and R = [100, 100]).
Have I implemented the functions properly? I would appreciate any help at all to help lessen the amount of things I need to debug. Thank you so much and I look forward to your reply.
I have attached all the relevant files in this post, so please let me know what you need and I can direct you to the relevant file. Hello, the TLDR of this post is that I am trying to learn how to implement a sensorless control for a 3 phase PMSM using the EKF Simulink block, but I can’t seem to make it work. I’m not sure if I implemented the State Transition Function or the Measurement Functions correctly.
The EKF Simulink block is set up as such
The equivalent Simulink implementation is as such
I have set the Covariance Matrix Q as NoiseMatrix(1:4) and Covariance Matrix R as NoiseMatrix(5:6) in the EKF block parameter below
StateTransitionFunction
The relevant state space equations of the 3 phase PMSM is derived as such
and I implemented the State Transition function as such
function x_next = pmsmStateTransition_3p(x,u)
% represents the dynaics of the PMSM and how the states of the …
% evolves over time
% x=[i_d; i_q; omega_e; theta_e] (state vector)
% u=[v_alpha; v_beta] (input vector)
% ——– Inputs ——– %
i_d=x(1);
i_q=x(2);
omega_e=x(3);
theta_e=x(4);
v_alpha=u(1);
v_beta=u(2);
% ——– Motor Parameters ——– %
R = 0.007184;
L = 19.5e-6;
pole_pairs = 6; %pole pairs
J = 3.37862;
B = 0;
lambda = 0.0623;
dt = 9e-5; % Ts
% ——– Equations ——– %
lambda_q = i_q*L;
lambda_d = i_d*L+lambda;
T_e = 3/2*pole_pairs*(i_q*(i_d*L + lambda) – i_d*i_q*L);
v_d = cos(theta_e)*v_alpha + sin(theta_e)*v_beta;
v_q = -sin(theta_e)*v_alpha + cos(theta_e)*v_beta;
% State Transition Equations
% Euler Discretization is used to calculate the next states
id_next = i_d + (v_d – R*i_d + omega_e*lambda_q)/L*dt;
iq_next = i_q + (v_q – R*i_q – omega_e*lambda_d)/L*dt;
omega_next = omega_e + (T_e – B*omega_e)/J*dt;
theta_next = theta_e + omega_e*dt;
% ——– Output ——– %
x_next=[id_next; iq_next; omega_next; theta_next];
end
Measurement Function
function y = pmsmMeasurement_3p(x)
% x=[i_d; i_q; omega_e; theta_e] (state vector)
% y=[i_alpha; i_beta] (output vector)
% ——— Inputs ———- %
i_d=x(1);
i_q=x(2);
theta_e=x(4);
% ——– Equations ——– %
i_alpha = i_d*cos(theta_e) – i_q*sin(theta_e);
i_beta = i_d*sin(theta_e) + i_q*cos(theta_e);
% ——— Output ———- %
y=[i_alpha; i_beta];
end
Results
I understand that the covariance matrices determines the results. After I set everything up, I would find the optimal values using the Genetic Algorithm, but even then the results from it don’t differ so much from the estimated we_hat in the bottom figure for results, so I just used a generic placeholder value of 100 for all values of the Noise Covariance Matrices (i.e. Q = [100, 100, 100, 100] and R = [100, 100]).
Have I implemented the functions properly? I would appreciate any help at all to help lessen the amount of things I need to debug. Thank you so much and I look forward to your reply.
I have attached all the relevant files in this post, so please let me know what you need and I can direct you to the relevant file. ekf, foc, pmsm, sensorless, state transition function, measurement function, simulink, r2023a MATLAB Answers — New Questions
Unstable 6 equation ode
Hello all, I am working on solving a 6 equation ODE to model the shape of a free surface in a channel. The paper that I am referencing only uses 5 euqations but i have no idea how they are solving for one of the variables so I added the variable and equation to the ODE. I have tried almost solver avalible in matlab and am very stuck on what to do next. Ive been in contact with the papers authors but they havent been a huge help. If anyone has a suggestion, it would be a huge help.
Here is the code:
clear; close all;
% Initial conditions and parameters
x0 = 0; %m
xfinal = 1; %m
h0 = 0.11; %m
hx0 = 0;
hxx0 = 0;
s0 = 1/163; % bottom slope
F1 = 1.07; % Froude number
N = 0.142857;
K = 2; % curvature
q = 0.12; % m^2 / s
g = 9.81; % gravity
k = 0;
theta = 0.00009;
beta0 = (1 + N)^2 / (1 + 2 * N);
ep0 = (h0 * hxx0) / (1 + hx0^2);
ep1 = hx0^2 / (1 + hx0^2);
S0 = (h0^2 / 2) + beta0 * (q^2 / (g * h0)) * (1 * ep0 * ((2 / (K + N + 2)) – ((1 – 2 * N) / (K + 2 * N + 2))) – ep1 * ((N + 1) / (N + 3)));
f0 = [h0; hx0; S0; theta; k;0];
% Solve the ODE
options = odeset(‘RelTol’,1e-5,’AbsTol’,1e-7);
[x, f] = ode23tb(@undularODE, [x0 xfinal], f0, options);
% Plot the results
figure;
plot(x, f);
legend(‘h’, ‘hx’, ‘S’, ‘theta’, ‘k’,’N’);
xlabel(‘x’);
ylabel(‘y’);
title(‘Solution’);
Here is the UdularODE function:
function dfdx = undularODE(x, f)
% Parameters
g = 9.81;
N = 0.142857;
q = 0.12; % m^2 / s
K = 2;
s0 = 1/163; % bottom slope
utheta = 1.1; % m/s velocity at momentum thickness
theta = f(4);
Nu = 1.12*10^-6; % kinematic viscosity
% Computed parameters
beta = (1 + N)^2 / (1 + 2 * N);
ep1 = f(2)^2 / (1 + f(2)^2); % epsilon 1
Re = 178458; % Reynolds number
Cf = 0.075 / (log(Re) – 2)^2; % skin friction coeff
ff = 4 * Cf * (1 + N)^2; % friction factor
sf = ff / 8 * (1 + 2 * (f(1) / 1)) * 1.47^2; % friction slope
Ue = (1 + N) * (q / f(1)); % max velocity at boundary layer edge
k = utheta / Ue;
H = (1.3 + 1.3 * (0.7 – k) + 3 * (0.7 – k)^2)^(2/3); % shape factor
Rtheta = (Ue * theta) / Nu; % momentum thickness Reynolds number
N2 = (H-1)/2; % calculated value of N
dUedx = -1*Ue*f(6)*(1+N2)*(Ue/f(1))*f(2);%dUedx
gamma = (theta / Ue) * dUedx * Rtheta^(1/4); % Buri Shape Factor
dHdx = (3*k^2 – 5.5*k + 3.68)^(2/3) * ( (1.46*(1-k^2))/( (1.5+k)*theta*Rtheta^(1/4)* (gamma +0.118*(0.67-k)) ) );
%dNdx(end+1)= 0.5*dHdx;
% Define the system of ODEs
hx = f(2);
eq2 = (((g * f(1)) / (beta * q^2)) * (f(3) – (f(1)^2 / 2)) – 1 + ep1 * ((N + 1) / (N + 3))) / …
((f(1) / (1 + f(2)^2)) * (2 / (K + N + 2)) – ((1 – 2 * N) / (K + 2 * N + 2)));
eq3 = f(1) * (s0 – sf);
eq4 = -1 * f(4)*((1 / (2 + 2 * N)) * (dHdx) – (1 / f(1)) * hx) * (H + 2) + Cf / 2;
eq5 = 1.46 * ((1 – f(5)^2) / ((1.5 + f(5)) * theta * Rtheta^(1/4))) * (gamma + 0.118 * (0.67 – f(5)));
eq6 = 0.5*dHdx;
% Return the derivatives
dfdx = [hx;
eq2;
eq3;
eq4;
eq5;
eq6];
%keyboard
endHello all, I am working on solving a 6 equation ODE to model the shape of a free surface in a channel. The paper that I am referencing only uses 5 euqations but i have no idea how they are solving for one of the variables so I added the variable and equation to the ODE. I have tried almost solver avalible in matlab and am very stuck on what to do next. Ive been in contact with the papers authors but they havent been a huge help. If anyone has a suggestion, it would be a huge help.
Here is the code:
clear; close all;
% Initial conditions and parameters
x0 = 0; %m
xfinal = 1; %m
h0 = 0.11; %m
hx0 = 0;
hxx0 = 0;
s0 = 1/163; % bottom slope
F1 = 1.07; % Froude number
N = 0.142857;
K = 2; % curvature
q = 0.12; % m^2 / s
g = 9.81; % gravity
k = 0;
theta = 0.00009;
beta0 = (1 + N)^2 / (1 + 2 * N);
ep0 = (h0 * hxx0) / (1 + hx0^2);
ep1 = hx0^2 / (1 + hx0^2);
S0 = (h0^2 / 2) + beta0 * (q^2 / (g * h0)) * (1 * ep0 * ((2 / (K + N + 2)) – ((1 – 2 * N) / (K + 2 * N + 2))) – ep1 * ((N + 1) / (N + 3)));
f0 = [h0; hx0; S0; theta; k;0];
% Solve the ODE
options = odeset(‘RelTol’,1e-5,’AbsTol’,1e-7);
[x, f] = ode23tb(@undularODE, [x0 xfinal], f0, options);
% Plot the results
figure;
plot(x, f);
legend(‘h’, ‘hx’, ‘S’, ‘theta’, ‘k’,’N’);
xlabel(‘x’);
ylabel(‘y’);
title(‘Solution’);
Here is the UdularODE function:
function dfdx = undularODE(x, f)
% Parameters
g = 9.81;
N = 0.142857;
q = 0.12; % m^2 / s
K = 2;
s0 = 1/163; % bottom slope
utheta = 1.1; % m/s velocity at momentum thickness
theta = f(4);
Nu = 1.12*10^-6; % kinematic viscosity
% Computed parameters
beta = (1 + N)^2 / (1 + 2 * N);
ep1 = f(2)^2 / (1 + f(2)^2); % epsilon 1
Re = 178458; % Reynolds number
Cf = 0.075 / (log(Re) – 2)^2; % skin friction coeff
ff = 4 * Cf * (1 + N)^2; % friction factor
sf = ff / 8 * (1 + 2 * (f(1) / 1)) * 1.47^2; % friction slope
Ue = (1 + N) * (q / f(1)); % max velocity at boundary layer edge
k = utheta / Ue;
H = (1.3 + 1.3 * (0.7 – k) + 3 * (0.7 – k)^2)^(2/3); % shape factor
Rtheta = (Ue * theta) / Nu; % momentum thickness Reynolds number
N2 = (H-1)/2; % calculated value of N
dUedx = -1*Ue*f(6)*(1+N2)*(Ue/f(1))*f(2);%dUedx
gamma = (theta / Ue) * dUedx * Rtheta^(1/4); % Buri Shape Factor
dHdx = (3*k^2 – 5.5*k + 3.68)^(2/3) * ( (1.46*(1-k^2))/( (1.5+k)*theta*Rtheta^(1/4)* (gamma +0.118*(0.67-k)) ) );
%dNdx(end+1)= 0.5*dHdx;
% Define the system of ODEs
hx = f(2);
eq2 = (((g * f(1)) / (beta * q^2)) * (f(3) – (f(1)^2 / 2)) – 1 + ep1 * ((N + 1) / (N + 3))) / …
((f(1) / (1 + f(2)^2)) * (2 / (K + N + 2)) – ((1 – 2 * N) / (K + 2 * N + 2)));
eq3 = f(1) * (s0 – sf);
eq4 = -1 * f(4)*((1 / (2 + 2 * N)) * (dHdx) – (1 / f(1)) * hx) * (H + 2) + Cf / 2;
eq5 = 1.46 * ((1 – f(5)^2) / ((1.5 + f(5)) * theta * Rtheta^(1/4))) * (gamma + 0.118 * (0.67 – f(5)));
eq6 = 0.5*dHdx;
% Return the derivatives
dfdx = [hx;
eq2;
eq3;
eq4;
eq5;
eq6];
%keyboard
end Hello all, I am working on solving a 6 equation ODE to model the shape of a free surface in a channel. The paper that I am referencing only uses 5 euqations but i have no idea how they are solving for one of the variables so I added the variable and equation to the ODE. I have tried almost solver avalible in matlab and am very stuck on what to do next. Ive been in contact with the papers authors but they havent been a huge help. If anyone has a suggestion, it would be a huge help.
Here is the code:
clear; close all;
% Initial conditions and parameters
x0 = 0; %m
xfinal = 1; %m
h0 = 0.11; %m
hx0 = 0;
hxx0 = 0;
s0 = 1/163; % bottom slope
F1 = 1.07; % Froude number
N = 0.142857;
K = 2; % curvature
q = 0.12; % m^2 / s
g = 9.81; % gravity
k = 0;
theta = 0.00009;
beta0 = (1 + N)^2 / (1 + 2 * N);
ep0 = (h0 * hxx0) / (1 + hx0^2);
ep1 = hx0^2 / (1 + hx0^2);
S0 = (h0^2 / 2) + beta0 * (q^2 / (g * h0)) * (1 * ep0 * ((2 / (K + N + 2)) – ((1 – 2 * N) / (K + 2 * N + 2))) – ep1 * ((N + 1) / (N + 3)));
f0 = [h0; hx0; S0; theta; k;0];
% Solve the ODE
options = odeset(‘RelTol’,1e-5,’AbsTol’,1e-7);
[x, f] = ode23tb(@undularODE, [x0 xfinal], f0, options);
% Plot the results
figure;
plot(x, f);
legend(‘h’, ‘hx’, ‘S’, ‘theta’, ‘k’,’N’);
xlabel(‘x’);
ylabel(‘y’);
title(‘Solution’);
Here is the UdularODE function:
function dfdx = undularODE(x, f)
% Parameters
g = 9.81;
N = 0.142857;
q = 0.12; % m^2 / s
K = 2;
s0 = 1/163; % bottom slope
utheta = 1.1; % m/s velocity at momentum thickness
theta = f(4);
Nu = 1.12*10^-6; % kinematic viscosity
% Computed parameters
beta = (1 + N)^2 / (1 + 2 * N);
ep1 = f(2)^2 / (1 + f(2)^2); % epsilon 1
Re = 178458; % Reynolds number
Cf = 0.075 / (log(Re) – 2)^2; % skin friction coeff
ff = 4 * Cf * (1 + N)^2; % friction factor
sf = ff / 8 * (1 + 2 * (f(1) / 1)) * 1.47^2; % friction slope
Ue = (1 + N) * (q / f(1)); % max velocity at boundary layer edge
k = utheta / Ue;
H = (1.3 + 1.3 * (0.7 – k) + 3 * (0.7 – k)^2)^(2/3); % shape factor
Rtheta = (Ue * theta) / Nu; % momentum thickness Reynolds number
N2 = (H-1)/2; % calculated value of N
dUedx = -1*Ue*f(6)*(1+N2)*(Ue/f(1))*f(2);%dUedx
gamma = (theta / Ue) * dUedx * Rtheta^(1/4); % Buri Shape Factor
dHdx = (3*k^2 – 5.5*k + 3.68)^(2/3) * ( (1.46*(1-k^2))/( (1.5+k)*theta*Rtheta^(1/4)* (gamma +0.118*(0.67-k)) ) );
%dNdx(end+1)= 0.5*dHdx;
% Define the system of ODEs
hx = f(2);
eq2 = (((g * f(1)) / (beta * q^2)) * (f(3) – (f(1)^2 / 2)) – 1 + ep1 * ((N + 1) / (N + 3))) / …
((f(1) / (1 + f(2)^2)) * (2 / (K + N + 2)) – ((1 – 2 * N) / (K + 2 * N + 2)));
eq3 = f(1) * (s0 – sf);
eq4 = -1 * f(4)*((1 / (2 + 2 * N)) * (dHdx) – (1 / f(1)) * hx) * (H + 2) + Cf / 2;
eq5 = 1.46 * ((1 – f(5)^2) / ((1.5 + f(5)) * theta * Rtheta^(1/4))) * (gamma + 0.118 * (0.67 – f(5)));
eq6 = 0.5*dHdx;
% Return the derivatives
dfdx = [hx;
eq2;
eq3;
eq4;
eq5;
eq6];
%keyboard
end fluid, ode, ode45, unstable MATLAB Answers — New Questions
if function
I need a function with if and, it is necessary have different considerations to be accept depends on the gender
I need a function with if and, it is necessary have different considerations to be accept depends on the gender For the men’s basketball team, they must be at least 22 years old, have a minimum height of 1.70 meters, a maximum weight of 80 kilos and a grade point average of 3.8 in the race.For the women’s basketball team, they must be a maximum of 21 years old, have a minimum height of 1.60 meters, a maximum weight of 65 kilos and an average grade of 3.8 in the race. Read More
Lambda Recursion Case Study – The Josephus Problem
The Challenge
The Josephus Problem is a mathematical problem based on a firsthand account from Flavius Josephus (I won’t go into a history lesson here, but you can find plenty of details online about his grisly account.).
The goal is simple. You are provided with an array of integers and an interval – ‘k’. For example, 41 integers with k being 3. If you eliminate every 3rd integer, then what will be the last remaining number?
This is how the elimination looks:
Approaches to solving
A shortcut exists with a bitwise operation to solving this problem when k = 2 where the least signification digit is shifted to the end:
There are other approaches for when k = 3 but I was more interested in a general solution capable of solving for when k = (2 to 10) and the number of integers provided is = (2 to 41).
The scrapped approaches:
1. A recursive SCAN. This memory intensive approach’s goal was to SCAN the array until the last digit remained. The issues being carrying over the last removed position to the next round and the removal of integers. I played with keeping the integer places with 0s or #N/A but it got messy, so it was scrapped early.
2. Wrap/Drop – This approach was tempting because it was capable of eliminating a good chunk of integers with each round. On the first pass through, the last column on the right was always dropped because WRAPROWS used ‘k’ to wrap. The big problem being the padding of jagged arrays with 0s. It was very easy to lose track of which column would be removed next. Then there was always the problem of how to proceed when the number of integers remaining was less than or equal to k.
n <= k
At some point I gave up on the Wrap/Drop approach and simplified the function. I found I was solving the problem in many cases, but the accuracy wasn’t 100% correct. The big problem being what happens when n <= k
The solution
I’m interested in any different approaches someone may have to solving this problem. Particularly with dynamic arrays, and recursion, or even making the Wrap ‘n Drop method work. I usually use dynamic arrays and not recursion but went with recursion for this project because I’ve been devoting a lot of hours to studying recursion lately (and this is good practice!).
My annotated solution follows.
// Recursion Case Study – The Josephus Problem
// Function created by Patrick – June 2024
// Challenge from Edabit (Python):
//https://edabit.com/challenge/Mb8KmicGqpP3zDcQ5
// J – for Flavius Josephus
// arr – supplied integers
// k – this represents the interval for elimination each round. If k is 3, then integers
// 3, 6, 9, 12, etc. will be eliminated in the first pass through the array.
J = LAMBDA(arr, k,
LET(
//These integers are retained
spared, TAKE(arr, k – 1),
//Stack the existing array with integers retained.
acc, VSTACK(arr, spared),
// How many integers remain?
n, COUNT(arr),
//Discard integers from the top of ‘acc’.
//Saved integers have been moved to bottom of stack.
eliminate, DROP(acc, k),
//an array of integers to be used when n <= k.
i, SEQUENCE(n),
//This function is used when n <= k. MOD must be used to ‘wrap around’ since
//the method for removal used above cannot be used when few integers remain.
//This function determines the safe spots for each of the remaining
//rounds when n <= k so the remaining integer can be determined.
safe, REDUCE(
0,
i,
LAMBDA(a, v,
IF(v = 1, 0, MOD(TAKE(a, -1) + k, v))
)
) + 1,
//Get the last integer remaining.
last, INDEX(arr, safe),
//Utlize the keep ‘n drop method of elimination
//until n <= k then do some modular arithmetic.
decide, IF(n >= k, eliminate, last),
IF(n < k, last, J(decide, k))
)
)
The ChallengeThe Josephus Problem is a mathematical problem based on a firsthand account from Flavius Josephus (I won’t go into a history lesson here, but you can find plenty of details online about his grisly account.). The goal is simple. You are provided with an array of integers and an interval – ‘k’. For example, 41 integers with k being 3. If you eliminate every 3rd integer, then what will be the last remaining number?This is how the elimination looks: Approaches to solvingA shortcut exists with a bitwise operation to solving this problem when k = 2 where the least signification digit is shifted to the end:There are other approaches for when k = 3 but I was more interested in a general solution capable of solving for when k = (2 to 10) and the number of integers provided is = (2 to 41). The scrapped approaches:1. A recursive SCAN. This memory intensive approach’s goal was to SCAN the array until the last digit remained. The issues being carrying over the last removed position to the next round and the removal of integers. I played with keeping the integer places with 0s or #N/A but it got messy, so it was scrapped early.2. Wrap/Drop – This approach was tempting because it was capable of eliminating a good chunk of integers with each round. On the first pass through, the last column on the right was always dropped because WRAPROWS used ‘k’ to wrap. The big problem being the padding of jagged arrays with 0s. It was very easy to lose track of which column would be removed next. Then there was always the problem of how to proceed when the number of integers remaining was less than or equal to k. n <= k At some point I gave up on the Wrap/Drop approach and simplified the function. I found I was solving the problem in many cases, but the accuracy wasn’t 100% correct. The big problem being what happens when n <= k The solutionI’m interested in any different approaches someone may have to solving this problem. Particularly with dynamic arrays, and recursion, or even making the Wrap ‘n Drop method work. I usually use dynamic arrays and not recursion but went with recursion for this project because I’ve been devoting a lot of hours to studying recursion lately (and this is good practice!). My annotated solution follows.// Recursion Case Study – The Josephus Problem
// Function created by Patrick – June 2024
// Challenge from Edabit (Python):
//https://edabit.com/challenge/Mb8KmicGqpP3zDcQ5
// J – for Flavius Josephus
// arr – supplied integers
// k – this represents the interval for elimination each round. If k is 3, then integers
// 3, 6, 9, 12, etc. will be eliminated in the first pass through the array.
J = LAMBDA(arr, k,
LET(
//These integers are retained
spared, TAKE(arr, k – 1),
//Stack the existing array with integers retained.
acc, VSTACK(arr, spared),
// How many integers remain?
n, COUNT(arr),
//Discard integers from the top of ‘acc’.
//Saved integers have been moved to bottom of stack.
eliminate, DROP(acc, k),
//an array of integers to be used when n <= k.
i, SEQUENCE(n),
//This function is used when n <= k. MOD must be used to ‘wrap around’ since
//the method for removal used above cannot be used when few integers remain.
//This function determines the safe spots for each of the remaining
//rounds when n <= k so the remaining integer can be determined.
safe, REDUCE(
0,
i,
LAMBDA(a, v,
IF(v = 1, 0, MOD(TAKE(a, -1) + k, v))
)
) + 1,
//Get the last integer remaining.
last, INDEX(arr, safe),
//Utlize the keep ‘n drop method of elimination
//until n <= k then do some modular arithmetic.
decide, IF(n >= k, eliminate, last),
IF(n < k, last, J(decide, k))
)
) Read More
Removing MFA for a group of users
Hi,
I’m fairly new to Entra ID and need some assistance with setting up a new CA policy for our users. Currently, we have a CA policy that enforces MFA for all users. There’s a new requirement where we want to skip MFA for a group of employees when they’re working on-site. I know I can create a location for our office IP and create a security group for these employees who need MFA disabled. If I exclude this group in the existing CA policy, it will disable MFA for these employees altogether no matter if they’re working from home or on site. which is not the goal. We only want these users to skip MFA when they’re working in the office.
Does anybody have any suggestions how I can achieve this? Any advice is appreciated.
Hi, I’m fairly new to Entra ID and need some assistance with setting up a new CA policy for our users. Currently, we have a CA policy that enforces MFA for all users. There’s a new requirement where we want to skip MFA for a group of employees when they’re working on-site. I know I can create a location for our office IP and create a security group for these employees who need MFA disabled. If I exclude this group in the existing CA policy, it will disable MFA for these employees altogether no matter if they’re working from home or on site. which is not the goal. We only want these users to skip MFA when they’re working in the office. Does anybody have any suggestions how I can achieve this? Any advice is appreciated. Read More
Quick-Books Error 15103: How to Resolve and Get Support
Quick-Books Error 15103 usually occurs during the update process and can be caused by a damaged update file or incorrect configuration settings.
Quick-Books Error 15103 usually occurs during the update process and can be caused by a damaged update file or incorrect configuration settings. Read More
Updated Multi-Tenant App permissions missing on new customer consent.
I have a multi tenant application using Microsoft Entra Id. I have added additional permissions to the application. These additional permissions do not show up in the consent dialog for new customers. New customers are only asked to consent to the original permissions. Manually triggering the admin consent dialog(https://login.microsoftonline.com/<TenantId>/adminconsent?client_id=<ClientId>) retrieves the latest permissions for consent. Shouldn’t new customers always consent to the latest permissions?
Environment Details:
There are 2 Application Registrations, both are multi-tenant applications.
The first is an app registration for my web frontend client.
The second is an app registration for my backend api, it has authorized the frontend client application in the “Expose an API” section
I have a multi tenant application using Microsoft Entra Id. I have added additional permissions to the application. These additional permissions do not show up in the consent dialog for new customers. New customers are only asked to consent to the original permissions. Manually triggering the admin consent dialog(https://login.microsoftonline.com/<TenantId>/adminconsent?client_id=<ClientId>) retrieves the latest permissions for consent. Shouldn’t new customers always consent to the latest permissions? Environment Details: There are 2 Application Registrations, both are multi-tenant applications.The first is an app registration for my web frontend client.The second is an app registration for my backend api, it has authorized the frontend client application in the “Expose an API” section Read More
How to copy all Azure Storage Tables data between two different Storage Accounts with Python
Background
This article describes how to copy all Azure Storage Tables data between two different storage accounts.
For this, we will use Azure Storage SDK for Python to copy all tables (and the respective data) from one Azure Storage Table to another Azure Storage Table. This approach will keep the data in the source tables, and will create new tables with the respective data in the destination Azure Storage Table.
This script was developed and tested using the following versions but it is expected to work with previous versions:
Python 3.11.7
azure-data-tables (version: 12.5.0)
azure-core (version: 1.30.1)
Approach
In this section, you can find a sample code to copy all tables data between two Storage Accounts using the Azure Storage SDK for Python.
This Python sample code is based on Azure Storage SDK for Python. Please review our documentation here Azure Tables client library for Python | Microsoft Learn
azure-data-tables (more information here azure-data-tables · PyPI). To install, please run:
pip install azure-data-tables
azure-core (more information here azure-core · PyPI). To install, please run:
pip install azure-core
Please see below the sample code to copy all the tables data between two Azure Storage Accounts using the storage connection string.
Special note: Only tables that do not exist with the same name in the destination Storage Account will be copied.
from azure.data.tables import TableServiceClient
from azure.core.exceptions import ResourceExistsError
source_connection_string = “X”
destination_connection_string = “X”
# Create a TableServiceClient for both source and destination accounts
source_table_service = TableServiceClient.from_connection_string(conn_str=source_connection_string)
destination_table_service = TableServiceClient.from_connection_string(conn_str=destination_connection_string)
for table in source_table_service.list_tables():
source_table_client = source_table_service.get_table_client(table_name=table.name)
destination_table_client = destination_table_service.get_table_client(table_name=table.name)
try:
# Create destination table if it does not exist
destination_table_client.create_table()
# Fetch entities from the source table
entities = source_table_client.list_entities()
# Insert entities into the destination table
for entity in entities:
destination_table_client.create_entity(entity=entity)
print(f”Table ‘{table.name}’ copied”)
except ResourceExistsError:
print(f”Table ‘{table.name}’ already exists.”)
After executing this sample code, it is expected that you will find all the tables from the source Storage Account in the destination Storage Account, as well as the data from those tables.
Disclaimer:
These steps are provided for the purpose of illustration only.
These steps and any related information are provided “as is” without warranty of any kind, either expressed or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.
We grant You a nonexclusive, royalty-free right to use and modify the Steps and to reproduce and distribute the steps, provided that. You agree:
to not use Our name, logo, or trademarks to market Your software product in which the steps are embedded;
to include a valid copyright notice on Your software product in which the steps are embedded; and
to indemnify, hold harmless, and defend Us and Our suppliers from and against any claims or lawsuits, including attorneys’ fees, that arise or result from the use or distribution of steps.
Microsoft Tech Community – Latest Blogs –Read More
Empowering multi-modal analytics with the medical imaging capability in Microsoft Fabric
Leveraging the innovative medallion Lakehouse architecture, the DICOM data ingestion capability is built on top of the foundation of the healthcare data solutions (Preview) in Microsoft Fabric. This feature allows customers to conduct exploratory analysis and run large-scale imaging analytics and radiomics in OneLake. It provides capabilities in Microsoft Fabric that allow seamless transformation of imaging data from the native DICOM® format into tabular shapes that can be persisted in the lake in FHIR® (Silver) and OMOP (Gold) formats. The solution is designed for Fabric workspaces, utilizing SQL analytics endpoints that can scale automatically to meet demand.
The medallion Lakehouse for medical imaging in Microsoft Fabric
Leveraging the medallion Lakehouse architecture, the DICOM data ingestion capability is built on top of the foundation of the Healthcare data solutions in Microsoft Fabric, that comprises three fundamental layers:
Bronze: The raw zone, this first layer stores the source imaging data in its original DICOM® format (dcm files) as well as a meta store that contains the full set of metadata (tags) extracted from the DICOM® files. The DICOM data ingestion supports compression-by-design, i.e. dcm files both in native and zip format can be processed in the Bronze Lakehouse. Once the metadata extraction is completed, the dcm files will be compressed (configurable) in a zip format for more cost and storage efficiency.
Silver: The enriched zone, this layer stores the metadata of imaging data sourced from the Bronze Lakehouse as well as referential file links to dcm file locations in the Bronze. The Silver is based on the FHIR® specification, and the imaging metadata and file references will be stored in the ImagingStudy delta table, whose schema is based on a flattened format of the ImagingStudy FHIR® resource (R4.3)
Gold: The curated zone, this final layer stores imaging data sourced from the ImagingStudy delta-table in the Silver Lakehouse. The Gold is based on the OMOP specification, and the imaging metadata and file references will be stored in the Image_Occurence delta-table, whose schema is based on the latest development of medical imaging data standardization for imaging-based observational research1.
Conceptual architecture
Data has gravity, and DICOM® Imaging datasets are usually in the order of petabytes for an average healthcare and life science organization. The DICOM data ingestion capability in Microsoft Fabric offers our customers and partners the flexibility to choose the ingestion pattern that best meets their existing data volume and storage needs. At a high level, there are three patterns for ingesting DICOM® data into the healthcare data solutions in Microsoft Fabric. As such, and depending on the ingestion pattern, there are up to seven end-to-end execution steps to consider from the ingestion of the raw DICOM® files to the transformation of the Gold Lakehouse in the OMOP CDM format, as depicted in the following conceptual architecture diagram:
You can find more details about each of those three ingestion patterns, and the seven E2E execution steps in our public documentation: Use DICOM data ingestion – Microsoft Cloud for Healthcare | Microsoft Learn
Ingestion patterns
Option 1 (Ingest): This option is based on ingesting, i.e. copying, the DICOM® files, in their native or compressed format, into the Lakehouse – we call this option the Ingest option. Customers will consider this option if they intend to migrate their DICOM® data from on-prem storage to the cloud and Microsoft Fabric.
Option 2 (BYOS): Thanks to the shortcuts capability in Microsoft OneLake, this option is based on in-place access to the DICOM® files from Azure data lake storage (ADLS). Unlike the previous option, the DICOM® files in this option will not be copied, or moved, from their original location – we call this option Bring-You-Own-Storage (BYOS). In many cases, customers have already migrated their DICOM® data to Azure data lake storage, and this option will enable them to unlock the power of those imaging datasets without the need to move or relocate the existing DICOM® files. In other cases, customers may have a dependency on those cloud datasets, which add another layer of complexity in the absence of this ingestion pattern.
Options 3 (AHDS DICOM service): The ingestion is based on leveraging the DICOM service from the Azure Health Data Services (AHDS) – we call this option the AHDS DICOM service option. In this option, the imaging data, i.e. DICOM® files are placed in an ADLS Gen2 location by the AHDS DICOM service. From there, the data flow and ingestion will be identical to the BYOS flow as described in the previous option. Our customers and partners who are already using our AHDS DICOM service can take advantage of this option and immediately unlock the power of our DICOM data ingestion capability.
E2E execution steps
There are seven end-to-end execution steps in our DICOM data ingestion capability. All the seven steps are included in the first ingestion pattern (Ingest). However, in the other two ingestion patterns, i.e. BYOS and AHDS DICOM service, the first two steps will not be required, and you can start with the third steps onwards.
Step 1: Ingestion of DICOM® files in OneLake
The Ingest folder in the Bronze Lakehouse represents a drop, or a queue, folder. You can simply drop the DICOM® files inside the ingest folder in the Bronze Lakehouse. Go to the IngestImagingDICOM Folder in the Bronze Lakehouse and click on the ellipses => Upload => Upload files
Step 2: Organize the DICOM® files in OneLake
The data movement notebook, as part of the DICOM data ingestion capability, will now transfer all files from the Ingest Folder to a newly optimized directory structure within the Bronze Lakehouse: FilesProcessImagingDICOMyyyymmdd. This reorganization facilitates scalability and is more conducive to datalake storage (refer to data lake best practice for directory structure in Azure). If the files are compressed, the notebook will extract each dcm file and place it into the optimized directory, disregarding the original folder arrangement found within the ZIP. The data movement notebook will also append a Unix timestamp prefix to the filenames, accurate down to the millisecond, to maintain file name uniqueness. This measure is crucial for clients using multiple PACS and VNA systems where file name uniqueness may not be guaranteed.
Step 3: Extract DICOM® metadata into the Bronze Lakehouse
In this step, the data extract notebook, as part of the DICOM data ingestion capability, tracks newly moved files in the Process folder and extracts the DICOM® tags (DICOM® Data Elements) available in the dcm files in the process folder and ingests them into the dicomimagingmetastore delta table in the Bronze Lakehouse.
Step 4: Conversion to FHIR® ImagingStudy NDJSON files in OneLake
This step converts the DICOM® metadata to the FHIR® format. The data conversion notebook, as part of the DICOM data ingestion capability, tracks and processes the recently modified delta table in the Bronze Lakehouse (including dicomimagingmetastore). It then converts the DICOM® metadata present from the dicomimagingmetastore delta table in the Bronze Lakehouse to the ImagingStudy FHIR® resource (R4.3) and saves the output in the form of NDJSON files.
Step 5: Ingestion into ImagingStudy delta table into the Bronze Lakehouse
From this step onward, you will be re-using the notebook from the FHIR® data ingestion capability in the healthcare data solution in Microsoft Fabric. The bronze ingestion notebook, as part of the FHIR data ingestion capability, tracks the newly generated files in the configured folder location. The notebook will group the instance-level data of the same study into one DICOM® Study record and insert a new record in the ImagingStudy delta table in the Bronze Lakehouse. Each record represents a Study object in the DICOM® hierarchy.
Step 6: Ingestion of ImagingStudy delta table into the Silver Lakehouse
The silver ingestion notebook, as part of the FHIR data ingestion capability, tracks the newly added records in the ImagingStudy delta table in the Bronze Lakehouse. The notebook will flatten and transform the data from the ImagingStudy delta table in the Brone Lakehouse to the ImagingStudy delta table in the Silver Lakehouse in accordance with the ImagingStudy FHIR® resource (R4.3).
Step 7: Conversion and Ingestion of Imaging_Occurence into the Gold Lakehouse
The OMOP notebook, as part of the FHIR data ingestion capability, leverages the OMOP mappings to transform resources from the Silver Lakehouse into OMOP delta tables in the Gold Lakehouse. This Notebook will convert the data in the FHIR® delta tables in the Silver Lakehouse (including the ImagingStudy delta table) to respective OMOP delta tables in the Gold Lakehouse (including the Image_Occurence) delta table. Each record in the Image_Occurence delta table in the Gold Lakehouse represents a Series object in the DICOM® hierarchy.
In this article, we shared how the DICOM data ingestion capability offers a robust and all-encompassing solution for unifying and analyzing the medical imaging data in a harmonized pattern with the clinical dataset in the healthcare data solutions in Microsoft Fabric. For more details, please review our documentations:
Overview of DICOM data ingestion – Microsoft Cloud for Healthcare | Microsoft Learn
Deploy and configure DICOM data ingestion – Microsoft Cloud for Healthcare | Microsoft Learn
Use DICOM data ingestion – Microsoft Cloud for Healthcare | Microsoft Learn
DICOM metadata transformation mapping – Microsoft Cloud for Healthcare | Microsoft Learn
DICOM data ingestion usage considerations – Microsoft Cloud for Healthcare | Microsoft Learn
1 Park, W.Y., Jeon, K., Schmidt, T.S. et al. Development of Medical Imaging Data Standardization for Imaging-Based Observational Research: OMOP Common Data Model Extension. J Digit Imaging. Inform. med. 37, 899–908 (2024). https://doi.org/10.1007/s10278-024-00982-6
DICOM® is the registered trademark of the National Electrical Manufacturers Association (NEMA) for its Standards publications relating to digital communications of medical information.
FHIR® is a registered trademark of Health Level Seven International, registered in the U.S. Trademark Office, and is used with their permission.
Microsoft Tech Community – Latest Blogs –Read More
Apprendre .NET Aspire en français
En mai dernier, durant Microsoft Build, .NET Aspire a été officiellement annoncé. Cette nouvelle pile prête pour le cloud et conçue pour .NET, visant à permettre aux développeurs de créer rapidement et facilement des applications natives cloud.
Que ce soit pour une toute petite application ou une solution complexe comprenant plusieurs microservices, .NET Aspire est conçu pour vous aider à démarrer rapidement et à évoluer en toute confiance.
Dans la vidéo francophone suivante, je vous démontre pas-à-pas comment ajouter .NET Aspire à une application existante, dans le confort de Visual Studio 2022.
Chapitres
Mise en contexte
Quand utiliser .NET Aspire
Application avant l’ajout de .NET Aspire
Demo 1 – Ajout des Paramètres par défaut intelligents
Tableau de bord du développeur
Demo 3 – Orchestration
Demo 4 – Découverte de services
Demo 5 – Ajout de composante
Déploiement
Autres langages et ressources
En Conclusion
.NET Aspire peut semblé complexe au premier abord, mais c’est tout le contraire! Il est conçu pour vous aider à démarrer rapidement, quelle que soit la taille de votre application. Utilisez .NET Aspire pour que votre projet procurera une meilleure expérience pour les développeurs et simplifiera le déploiement de votre application.
Si plus de contenu en français vous intéresse, n’hésitez pas à le faire savoir en laissant un commentaire ci-dessous ou en me contactant sur les médias sociaux.
Liens utiles
Apprenons .NET – Aspire: https://aka.ms/letslearn/dotnet/aspire
Documentation: https://aka.ms/dotnet-aspire
Contenue de l’atelier/ workshop: https://github.com/dotnet-presentations/letslearn-dotnet-aspire
Microsoft Tech Community – Latest Blogs –Read More
How do I get the fft from the audio wav file?
Hi guys, I am new to MATLAB. I need help on how to get FFT plot from an audio file that i have?Hi guys, I am new to MATLAB. I need help on how to get FFT plot from an audio file that i have? Hi guys, I am new to MATLAB. I need help on how to get FFT plot from an audio file that i have? audioread noise fast fourier MATLAB Answers — New Questions
Certificate Expiry Alery
Hello,
We are using certificate-based authentication for Azure ADD-APP. Generally, the certificate comes with 1 year validity. Can we create an alert to notify us when the certificate expires?
Hello, We are using certificate-based authentication for Azure ADD-APP. Generally, the certificate comes with 1 year validity. Can we create an alert to notify us when the certificate expires? Read More
🆘((™Contact*!!FAQ&39;S))How can I speak to someone at Expedia??~ #Support24x7 🆘
:glowing_star: Speak Directly to Expedia’s Travel Experts! :glowing_star:
Got questions or need help planning your next trip? We’re here for you! At Expedia, our team of dedicated travel specialists is ready to assist you with booking flights, hotels, vacation packages, and more.
How to Reach Us::telephone_receiver: Call +1-833-563-0182 to speak directly with a knowledgeable advisor
:e_mail: Email us for quick responses tailored to your travel needs
:speech_balloon: Chat with us online for immediate assistance
Why Choose Expedia?:backhand_index_pointing_right: Extensive options and best price guarantee on travel bookings
:backhand_index_pointing_right: Personalized recommendations to match your travel preferences
:backhand_index_pointing_right: 24/7 support to ensure your trip goes smoothly
Connect Today!Let’s make your travel experience unforgettable. Contact Expedia now and start planning your next adventure with confidence! :globe_showing_europe_africa::airplane:
:backhand_index_pointing_down: Contact us now:Contact Expedia
Your journey begins with Expedia! :glowing_star::beach_with_umbrella:️
:glowing_star: Speak Directly to Expedia’s Travel Experts! :glowing_star: Got questions or need help planning your next trip? We’re here for you! At Expedia, our team of dedicated travel specialists is ready to assist you with booking flights, hotels, vacation packages, and more. How to Reach Us::telephone_receiver: Call +1-833-563-0182 to speak directly with a knowledgeable advisor:e_mail: Email us for quick responses tailored to your travel needs:speech_balloon: Chat with us online for immediate assistance Why Choose Expedia?:backhand_index_pointing_right: Extensive options and best price guarantee on travel bookings:backhand_index_pointing_right: Personalized recommendations to match your travel preferences:backhand_index_pointing_right: 24/7 support to ensure your trip goes smoothly Connect Today!Let’s make your travel experience unforgettable. Contact Expedia now and start planning your next adventure with confidence! :globe_showing_europe_africa::airplane: :backhand_index_pointing_down: Contact us now:Contact Expedia Your journey begins with Expedia! :glowing_star::beach_with_umbrella:️ Read More
【Fast-Secure™】How can I speak to someone at Expedia? 24/7 Customer Service❗
:glowing_star: Speak Directly to Expedia’s Travel Experts! :glowing_star:
Got questions or need help planning your next trip? We’re here for you! At Expedia, our team of dedicated travel specialists is ready to assist you with booking flights, hotels, vacation packages, and more.
How to Reach Us::telephone_receiver: Call +1-833-563-0182 to speak directly with a knowledgeable advisor
:e_mail: Email us for quick responses tailored to your travel needs
:speech_balloon: Chat with us online for immediate assistance
Why Choose Expedia?:backhand_index_pointing_right: Extensive options and best price guarantee on travel bookings
:backhand_index_pointing_right: Personalized recommendations to match your travel preferences
:backhand_index_pointing_right: 24/7 support to ensure your trip goes smoothly
Connect Today!Let’s make your travel experience unforgettable. Contact Expedia now and start planning your next adventure with confidence! :globe_showing_europe_africa::airplane:
:backhand_index_pointing_down: Contact us now:Contact Expedia
Your journey begins with Expedia! :glowing_star::beach_with_umbrella:️
:glowing_star: Speak Directly to Expedia’s Travel Experts! :glowing_star: Got questions or need help planning your next trip? We’re here for you! At Expedia, our team of dedicated travel specialists is ready to assist you with booking flights, hotels, vacation packages, and more. How to Reach Us::telephone_receiver: Call +1-833-563-0182 to speak directly with a knowledgeable advisor:e_mail: Email us for quick responses tailored to your travel needs:speech_balloon: Chat with us online for immediate assistance Why Choose Expedia?:backhand_index_pointing_right: Extensive options and best price guarantee on travel bookings:backhand_index_pointing_right: Personalized recommendations to match your travel preferences:backhand_index_pointing_right: 24/7 support to ensure your trip goes smoothly Connect Today!Let’s make your travel experience unforgettable. Contact Expedia now and start planning your next adventure with confidence! :globe_showing_europe_africa::airplane: :backhand_index_pointing_down: Contact us now:Contact Expedia Your journey begins with Expedia! :glowing_star::beach_with_umbrella:️ Read More
Power Management of Client Machines VM: Credential Handling and Solutions
We handle the power on/off operations of client machines as needed. To perform these tasks, we collect AD-APP credentials from clients, as the AD-APP has the necessary permissions to manage the VMs.
Problem:
We need to gather and securely store AD-APP details from multiple clients.Managing these credentials for each VM individually is becoming a significant overhead.
Looking for a Solution:
Can we solve this problem with a multi-tenant AD-APP, where we use a single multi-tenant app and request clients to grant access to their VMs?
Considerations:
Clients will have different accounts with no relation to our subscription.
Questions:
If a multi-tenant AD-APP is a viable solution, what configurations are required on our side and the client’s side? Please share in detail.If it’s not possible, is there an alternative way to achieve this?
We handle the power on/off operations of client machines as needed. To perform these tasks, we collect AD-APP credentials from clients, as the AD-APP has the necessary permissions to manage the VMs. Problem:We need to gather and securely store AD-APP details from multiple clients.Managing these credentials for each VM individually is becoming a significant overhead. Looking for a Solution:Can we solve this problem with a multi-tenant AD-APP, where we use a single multi-tenant app and request clients to grant access to their VMs? Considerations:Clients will have different accounts with no relation to our subscription. Questions:If a multi-tenant AD-APP is a viable solution, what configurations are required on our side and the client’s side? Please share in detail.If it’s not possible, is there an alternative way to achieve this? Read More
info
I have a server name dl360g10. this server has many conbinations to it. How can I select 1 group and have it populated on a sheet .
1 example
Proliant_DL360_G10_ServerFlexLomPCIe1PCIe2PCIe3PSU1PSU2
I have a server name dl360g10. this server has many conbinations to it. How can I select 1 group and have it populated on a sheet .1 exampleProliant_DL360_G10_ServerFlexLomPCIe1PCIe2PCIe3PSU1PSU2 Read More