Tag Archives: matlab
is there any reason for this?
In Matlab
"1" + "1" = "11"
but
‘1’ + ‘1’ = 98
i.e.
char(49) = ‘1’
but
char(49) + char(49) = 98
Is there any reason for this convention?In Matlab
"1" + "1" = "11"
but
‘1’ + ‘1’ = 98
i.e.
char(49) = ‘1’
but
char(49) + char(49) = 98
Is there any reason for this convention? In Matlab
"1" + "1" = "11"
but
‘1’ + ‘1’ = 98
i.e.
char(49) = ‘1’
but
char(49) + char(49) = 98
Is there any reason for this convention? mathematics MATLAB Answers — New Questions
PSD of DWT details coefficnet
Hi,
I am working on a project involves sensor data analysis. I have a data for entire year that is sampled every 15 minutes. I used DWT (db4 up to three levels) to analyze the high-frequency content of the main signal.
After applying PSD on the reconstructed details signal, I can see some patterns between the levels, which I don’t have a good explanations for them. According to the attached figure, level 3 has two cycles, level 2 one cycle, and level one half cycle. Why is that?
Also, as I remember DWT isolate frequency bands per each level, while there are some overlap in frequencies here. Is it due to the filter nature?
I really appreciate if you can give me your thoughts or suggestions.
Thank you in advance.Hi,
I am working on a project involves sensor data analysis. I have a data for entire year that is sampled every 15 minutes. I used DWT (db4 up to three levels) to analyze the high-frequency content of the main signal.
After applying PSD on the reconstructed details signal, I can see some patterns between the levels, which I don’t have a good explanations for them. According to the attached figure, level 3 has two cycles, level 2 one cycle, and level one half cycle. Why is that?
Also, as I remember DWT isolate frequency bands per each level, while there are some overlap in frequencies here. Is it due to the filter nature?
I really appreciate if you can give me your thoughts or suggestions.
Thank you in advance. Hi,
I am working on a project involves sensor data analysis. I have a data for entire year that is sampled every 15 minutes. I used DWT (db4 up to three levels) to analyze the high-frequency content of the main signal.
After applying PSD on the reconstructed details signal, I can see some patterns between the levels, which I don’t have a good explanations for them. According to the attached figure, level 3 has two cycles, level 2 one cycle, and level one half cycle. Why is that?
Also, as I remember DWT isolate frequency bands per each level, while there are some overlap in frequencies here. Is it due to the filter nature?
I really appreciate if you can give me your thoughts or suggestions.
Thank you in advance. dwt, wavelet, frequency_analysis, digital signal processing MATLAB Answers — New Questions
How to sort table more than one variable with specified condition ?
hi guys, can u tell me a different way to sort table by 2 variable columns which more simple than my method?
I want to sort jointTOS by its X and Z from minimum to maximum but X is the priority.
Here the code :
clear;
clc;
H = 5;
L = 15;
Ns = 2;
Nb = 1;
PortalHeight = H;
Bayspan = L;
NumberStory = Ns;
NumberBay = Nb;
% Variable1
h = [0.8,1.00,1.20,1.40,1.6,1.80];
% Variable2
Lss = [2.00,2.40,2.80,3.20,3.60,4.00];
% Variable3
Nss = [2,3,4];
% Definition
Var1HeightofTrussBeam = h;
Var2LengthSpecialSegment = Lss;
Var3NumberSpecialSegment = Nss;
% % Xbase = zeros(1,length(Totalvariant));
% % Zbase = zeros(1,length(Totalvariant));
% % Xcol = zeros(1,length(Totalvariant));
% % Zcol = zeros(1,length(Totalvariant));
% % Xos = zeros(1,length(Totalvariant));
% % Zos = zeros(1,length(Totalvariant));
% % Xss = zeros(1,length(Totalvariant));
% % Zss = zeros(1,length(Totalvariant));
% % X = zeros(1,length(Totalvariant));
% % Z = zeros(1,length(Totalvariant));
% % jointbase = zeros(1,length(Totalvariant));
% % jointcolumn = zeros(1,length(Totalvariant));
% % jointordinarysegment = zeros(1,length(Totalvariant));
% % jointtopordinarysegment = zeros(1,length(Totalvariant));
% % jointbottomordinarysegment = zeros(1,length(Totalvariant));
% % jointspecialsegment = zeros(1,length(Totalvariant));
% % jointtopspecialsegment = zeros(1,length(Totalvariant));
% % jointbottomspecialsegment = zeros(1,length(Totalvariant));
ijk = 0;
for i = 1:numel(h)
for j = 1:numel(Lss)
for k = 1:numel(Nss)
ijk = ijk+1;
Variantmodel{ijk,:} = table(ijk,h(i),Lss(j),Nss(k),’VariableNames’,{‘VariantID’,’Height’,’Length’,’Number’});
%% Cooridinate Point Base(base)
Xbase{ijk,:} = L*(0:NumberBay);
Zbase{ijk,:} = repelem(0,1,length(Xbase{ijk,:}));
%% Column(col)
Xcolumn = L*(0:NumberBay);
Zcolumn = repelem(H*(1:NumberStory),1,length(Xcolumn));
Xbotbeam = L*(0:NumberBay);
Zbotbeam = repelem((H*(1:NumberStory)-h(i)),1,length(Xbotbeam));
% replicate [X] to be the same size as [Z] for plotting:
Xcol{ijk,:} = repmat([Xcolumn,Xbotbeam],1,NumberStory);
Zcol{ijk,:} = [Zcolumn,Zbotbeam];
%% Cooridinate Point Ordinary Segment (os)
% calculate span length of ordinary segment
Los = (L-Lss(j))/2;
Nos = Los/h(i);
Nos = round(Nos);
los = Los/Nos;
totalspan{ijk,:} = los*Nos*2+Lss(j);
if totalspan{ijk,:} == 15.000
checkspan{ijk,:} = "correct span";
else
checkspan{ijk,:} = "span must be 15m";
end
% top and bottom joint of ordinary segment(os)
XTopOrdinarySegment = reshape([los*(1:Nos),(L/2+Lss(j)/2)+los*(0:Nos-1)].’+L*(0:(NumberBay-1)),1,[]);
XBottomOrdinarySegment = XTopOrdinarySegment;
ZTopOrdinarySegment = repelem(H*(1:NumberStory),1,2*Nos*NumberBay);
ZBottomOrdinarySegment = repelem(H*(1:NumberStory)-h(i),1,2*Nos*NumberBay);
% replicate [X] to be the same size as [Z] for plotting:
Xos{ijk,:} = repmat([XTopOrdinarySegment,XBottomOrdinarySegment],1,NumberStory);
Zos{ijk,:} = [ZTopOrdinarySegment,ZBottomOrdinarySegment];
%% Cooridinate Point Special Segment (ss)
% calculate span length of special segment
lss = Lss(j)/Nss(k);
% top and bottom joint of special segment(ss)
XTopSpecialSegment = reshape((lss*(0:Nss(k))+L/2-Lss(j)/2).’+L*(0:(NumberBay-1)),1,[]);
XBottomSpecialSegment = XTopSpecialSegment;
ZTopSpecialSegment = repelem(H*(1:NumberStory),1,length(XTopSpecialSegment));
ZBottomSpecialSegment = repelem(H*(1:NumberStory)-h(i),1,length(XBottomSpecialSegment));
% replicate [X] to be the same size as [Z] for plotting:
Xss{ijk,:} = repmat([XTopSpecialSegment,XBottomSpecialSegment],1,NumberStory);
Zss{ijk,:} = [ZTopSpecialSegment,ZBottomSpecialSegment];
%% Plot Cooridinate Point (X,Z)
X{ijk,:} = [Xbase{ijk,:},Xcol{ijk,:},Xos{ijk,:},Xss{ijk,:}];
Z{ijk,:} = [Zbase{ijk,:},Zcol{ijk,:},Zos{ijk,:},Zss{ijk,:}];
scatter(X{ijk,:},Z{ijk,:},’filled’),grid on
%check angle
tangent = (Lss(j)/Nss(k))/h(i);
anglespecialsegment(ijk) = atand(tangent);
%% Name the Joint
jointbase{ijk} = table((1:numel(Xbase{ijk,:}))’,Xbase{ijk,:}’,Zbase{ijk,:}’,’VariableNames’,{‘ID’,’X’,’Z’});
jointcolumn{ijk} = table((max(jointbase{ijk}.ID)+1:numel(Xcol{ijk,:})+max(jointbase{ijk}.ID))’,Xcol{ijk,:}’,Zcol{ijk,:}’,’VariableNames’,{‘ID’,’X’,’Z’});
jointordinarysegment{ijk} = table((max(jointcolumn{ijk}.ID)+1:numel(Xos{ijk,:})+max(jointcolumn{ijk}.ID))’,Xos{ijk,:}’,Zos{ijk,:}’,’VariableNames’,{‘ID’,’X’,’Z’});
jointtopordinarysegment{ijk} = jointordinarysegment{ijk}(ismember(jointordinarysegment{ijk}.Z,Zcolumn),:);
jointbottomordinarysegment{ijk} = jointordinarysegment{ijk}(ismember(jointordinarysegment{ijk}.Z,Zbotbeam),:);
jointspecialsegment{ijk} = table((max(jointbottomordinarysegment{ijk}.ID)+1:numel(Xss{ijk,:})+max(jointbottomordinarysegment{ijk}.ID))’,Xss{ijk,:}’,Zss{ijk,:}’,’VariableNames’,{‘ID’,’X’,’Z’});
jointtopspecialsegment{ijk} = jointspecialsegment{ijk}(ismember(jointspecialsegment{ijk}.Z,Zcolumn),:);
jointbottomspecialsegment{ijk} = jointspecialsegment{ijk}(ismember(jointspecialsegment{ijk}.Z,Zbotbeam),:);
end
end
end
% Verify Variants Which Passed the Angle Requirement
tablecheck = table((1:numel(anglespecialsegment))’,totalspan,anglespecialsegment’,’VariableNames’,{‘VariantID’,’Total Span’,’Angle’});
VariantIDPassed = tablecheck.VariantID(tablecheck.Angle>=30 & tablecheck.Angle<=60);
jointbase = table((1:numel(jointbase))’,jointbase’,’VariableNames’,{‘VariantID’,’Joint Base’});
jointbase = jointbase(ismember(jointbase.VariantID,VariantIDPassed),:);
jointcolumn = table((1:numel(jointcolumn))’,jointcolumn’,’VariableNames’,{‘VariantID’,’Joint Column’});
jointcolumn = jointcolumn(ismember(jointcolumn.VariantID,VariantIDPassed),:);
jointtopordinarysegment = table((1:numel(jointtopordinarysegment))’,jointtopordinarysegment’,’VariableNames’,{‘VariantID’,’Joint Top Ordinary Segment’});
jointtopordinarysegment = jointtopordinarysegment(ismember(jointtopordinarysegment.VariantID,VariantIDPassed),:);
jointbottomordinarysegment = table((1:numel(jointbottomordinarysegment))’,jointbottomordinarysegment’,’VariableNames’,{‘VariantID’,’Joint Bottom Ordinary Segment’});
jointbottomordinarysegment = jointbottomordinarysegment(ismember(jointbottomordinarysegment.VariantID,VariantIDPassed),:);
jointtopspecialsegment = table((1:numel(jointtopspecialsegment))’,jointtopspecialsegment’,’VariableNames’,{‘VariantID’,’Joint Top Special Segment’});
jointtopspecialsegment = jointtopspecialsegment(ismember(jointtopspecialsegment.VariantID,VariantIDPassed),:);
jointbottomspecialsegment = table((1:numel(jointbottomspecialsegment))’,jointbottomspecialsegment’,’VariableNames’,{‘VariantID’,’Joint Bottom Special Segment’});
jointbottomspecialsegment = jointbottomspecialsegment(ismember(jointbottomspecialsegment.VariantID,VariantIDPassed),:);
%% Name the Frame
% column
for i = 1:height(VariantIDPassed)
jointIcolumn = 0;
jointJcolumn = 0;
jointcolumnnew{i,:} = jointcolumn.("Joint Column"){i}(ismember(jointcolumn.("Joint Column"){i}.Z,Zcolumn),:);
jointcolumnnew{i,:} = vertcat(jointbase.("Joint Base"){i},jointcolumnnew{i});
for j = 1:height(jointcolumnnew{i,1})-2
jointIcolumn(j) = jointcolumnnew{i,1}.ID(j);
jointJcolumn(j) = jointcolumnnew{i,1}.ID(j+2);
end
framecolumn{i,:} = table((1:j)’,jointIcolumn’,jointJcolumn’,’VariableNames’,{‘Frame ID’,’JointI’,’JoinJ’});
end
% top ordinary segment (TOS)
for i = 1:height(VariantIDPassed)
endTOS{i,:} = jointcolumn.("Joint Column"){i}(ismember(jointcolumn.("Joint Column"){i}.Z,Zcolumn),:);
jointTOS{i,:} = vertcat(jointtopordinarysegment.("Joint Top Ordinary Segment"){i},endTOS{i});
jointTOSnew1{i,:} = sortrows(jointTOS{i}(ismember(jointTOS{i}.Z,5),:),2);
jointTOSnew2{i,:} = sortrows(jointTOS{i}(ismember(jointTOS{i}.Z,10),:),2);
jointTOSnew{i,:} = vertcat(jointTOSnew1{i},jointTOSnew2{i});
end
here the resut that i want :
jointTOSnew{1}hi guys, can u tell me a different way to sort table by 2 variable columns which more simple than my method?
I want to sort jointTOS by its X and Z from minimum to maximum but X is the priority.
Here the code :
clear;
clc;
H = 5;
L = 15;
Ns = 2;
Nb = 1;
PortalHeight = H;
Bayspan = L;
NumberStory = Ns;
NumberBay = Nb;
% Variable1
h = [0.8,1.00,1.20,1.40,1.6,1.80];
% Variable2
Lss = [2.00,2.40,2.80,3.20,3.60,4.00];
% Variable3
Nss = [2,3,4];
% Definition
Var1HeightofTrussBeam = h;
Var2LengthSpecialSegment = Lss;
Var3NumberSpecialSegment = Nss;
% % Xbase = zeros(1,length(Totalvariant));
% % Zbase = zeros(1,length(Totalvariant));
% % Xcol = zeros(1,length(Totalvariant));
% % Zcol = zeros(1,length(Totalvariant));
% % Xos = zeros(1,length(Totalvariant));
% % Zos = zeros(1,length(Totalvariant));
% % Xss = zeros(1,length(Totalvariant));
% % Zss = zeros(1,length(Totalvariant));
% % X = zeros(1,length(Totalvariant));
% % Z = zeros(1,length(Totalvariant));
% % jointbase = zeros(1,length(Totalvariant));
% % jointcolumn = zeros(1,length(Totalvariant));
% % jointordinarysegment = zeros(1,length(Totalvariant));
% % jointtopordinarysegment = zeros(1,length(Totalvariant));
% % jointbottomordinarysegment = zeros(1,length(Totalvariant));
% % jointspecialsegment = zeros(1,length(Totalvariant));
% % jointtopspecialsegment = zeros(1,length(Totalvariant));
% % jointbottomspecialsegment = zeros(1,length(Totalvariant));
ijk = 0;
for i = 1:numel(h)
for j = 1:numel(Lss)
for k = 1:numel(Nss)
ijk = ijk+1;
Variantmodel{ijk,:} = table(ijk,h(i),Lss(j),Nss(k),’VariableNames’,{‘VariantID’,’Height’,’Length’,’Number’});
%% Cooridinate Point Base(base)
Xbase{ijk,:} = L*(0:NumberBay);
Zbase{ijk,:} = repelem(0,1,length(Xbase{ijk,:}));
%% Column(col)
Xcolumn = L*(0:NumberBay);
Zcolumn = repelem(H*(1:NumberStory),1,length(Xcolumn));
Xbotbeam = L*(0:NumberBay);
Zbotbeam = repelem((H*(1:NumberStory)-h(i)),1,length(Xbotbeam));
% replicate [X] to be the same size as [Z] for plotting:
Xcol{ijk,:} = repmat([Xcolumn,Xbotbeam],1,NumberStory);
Zcol{ijk,:} = [Zcolumn,Zbotbeam];
%% Cooridinate Point Ordinary Segment (os)
% calculate span length of ordinary segment
Los = (L-Lss(j))/2;
Nos = Los/h(i);
Nos = round(Nos);
los = Los/Nos;
totalspan{ijk,:} = los*Nos*2+Lss(j);
if totalspan{ijk,:} == 15.000
checkspan{ijk,:} = "correct span";
else
checkspan{ijk,:} = "span must be 15m";
end
% top and bottom joint of ordinary segment(os)
XTopOrdinarySegment = reshape([los*(1:Nos),(L/2+Lss(j)/2)+los*(0:Nos-1)].’+L*(0:(NumberBay-1)),1,[]);
XBottomOrdinarySegment = XTopOrdinarySegment;
ZTopOrdinarySegment = repelem(H*(1:NumberStory),1,2*Nos*NumberBay);
ZBottomOrdinarySegment = repelem(H*(1:NumberStory)-h(i),1,2*Nos*NumberBay);
% replicate [X] to be the same size as [Z] for plotting:
Xos{ijk,:} = repmat([XTopOrdinarySegment,XBottomOrdinarySegment],1,NumberStory);
Zos{ijk,:} = [ZTopOrdinarySegment,ZBottomOrdinarySegment];
%% Cooridinate Point Special Segment (ss)
% calculate span length of special segment
lss = Lss(j)/Nss(k);
% top and bottom joint of special segment(ss)
XTopSpecialSegment = reshape((lss*(0:Nss(k))+L/2-Lss(j)/2).’+L*(0:(NumberBay-1)),1,[]);
XBottomSpecialSegment = XTopSpecialSegment;
ZTopSpecialSegment = repelem(H*(1:NumberStory),1,length(XTopSpecialSegment));
ZBottomSpecialSegment = repelem(H*(1:NumberStory)-h(i),1,length(XBottomSpecialSegment));
% replicate [X] to be the same size as [Z] for plotting:
Xss{ijk,:} = repmat([XTopSpecialSegment,XBottomSpecialSegment],1,NumberStory);
Zss{ijk,:} = [ZTopSpecialSegment,ZBottomSpecialSegment];
%% Plot Cooridinate Point (X,Z)
X{ijk,:} = [Xbase{ijk,:},Xcol{ijk,:},Xos{ijk,:},Xss{ijk,:}];
Z{ijk,:} = [Zbase{ijk,:},Zcol{ijk,:},Zos{ijk,:},Zss{ijk,:}];
scatter(X{ijk,:},Z{ijk,:},’filled’),grid on
%check angle
tangent = (Lss(j)/Nss(k))/h(i);
anglespecialsegment(ijk) = atand(tangent);
%% Name the Joint
jointbase{ijk} = table((1:numel(Xbase{ijk,:}))’,Xbase{ijk,:}’,Zbase{ijk,:}’,’VariableNames’,{‘ID’,’X’,’Z’});
jointcolumn{ijk} = table((max(jointbase{ijk}.ID)+1:numel(Xcol{ijk,:})+max(jointbase{ijk}.ID))’,Xcol{ijk,:}’,Zcol{ijk,:}’,’VariableNames’,{‘ID’,’X’,’Z’});
jointordinarysegment{ijk} = table((max(jointcolumn{ijk}.ID)+1:numel(Xos{ijk,:})+max(jointcolumn{ijk}.ID))’,Xos{ijk,:}’,Zos{ijk,:}’,’VariableNames’,{‘ID’,’X’,’Z’});
jointtopordinarysegment{ijk} = jointordinarysegment{ijk}(ismember(jointordinarysegment{ijk}.Z,Zcolumn),:);
jointbottomordinarysegment{ijk} = jointordinarysegment{ijk}(ismember(jointordinarysegment{ijk}.Z,Zbotbeam),:);
jointspecialsegment{ijk} = table((max(jointbottomordinarysegment{ijk}.ID)+1:numel(Xss{ijk,:})+max(jointbottomordinarysegment{ijk}.ID))’,Xss{ijk,:}’,Zss{ijk,:}’,’VariableNames’,{‘ID’,’X’,’Z’});
jointtopspecialsegment{ijk} = jointspecialsegment{ijk}(ismember(jointspecialsegment{ijk}.Z,Zcolumn),:);
jointbottomspecialsegment{ijk} = jointspecialsegment{ijk}(ismember(jointspecialsegment{ijk}.Z,Zbotbeam),:);
end
end
end
% Verify Variants Which Passed the Angle Requirement
tablecheck = table((1:numel(anglespecialsegment))’,totalspan,anglespecialsegment’,’VariableNames’,{‘VariantID’,’Total Span’,’Angle’});
VariantIDPassed = tablecheck.VariantID(tablecheck.Angle>=30 & tablecheck.Angle<=60);
jointbase = table((1:numel(jointbase))’,jointbase’,’VariableNames’,{‘VariantID’,’Joint Base’});
jointbase = jointbase(ismember(jointbase.VariantID,VariantIDPassed),:);
jointcolumn = table((1:numel(jointcolumn))’,jointcolumn’,’VariableNames’,{‘VariantID’,’Joint Column’});
jointcolumn = jointcolumn(ismember(jointcolumn.VariantID,VariantIDPassed),:);
jointtopordinarysegment = table((1:numel(jointtopordinarysegment))’,jointtopordinarysegment’,’VariableNames’,{‘VariantID’,’Joint Top Ordinary Segment’});
jointtopordinarysegment = jointtopordinarysegment(ismember(jointtopordinarysegment.VariantID,VariantIDPassed),:);
jointbottomordinarysegment = table((1:numel(jointbottomordinarysegment))’,jointbottomordinarysegment’,’VariableNames’,{‘VariantID’,’Joint Bottom Ordinary Segment’});
jointbottomordinarysegment = jointbottomordinarysegment(ismember(jointbottomordinarysegment.VariantID,VariantIDPassed),:);
jointtopspecialsegment = table((1:numel(jointtopspecialsegment))’,jointtopspecialsegment’,’VariableNames’,{‘VariantID’,’Joint Top Special Segment’});
jointtopspecialsegment = jointtopspecialsegment(ismember(jointtopspecialsegment.VariantID,VariantIDPassed),:);
jointbottomspecialsegment = table((1:numel(jointbottomspecialsegment))’,jointbottomspecialsegment’,’VariableNames’,{‘VariantID’,’Joint Bottom Special Segment’});
jointbottomspecialsegment = jointbottomspecialsegment(ismember(jointbottomspecialsegment.VariantID,VariantIDPassed),:);
%% Name the Frame
% column
for i = 1:height(VariantIDPassed)
jointIcolumn = 0;
jointJcolumn = 0;
jointcolumnnew{i,:} = jointcolumn.("Joint Column"){i}(ismember(jointcolumn.("Joint Column"){i}.Z,Zcolumn),:);
jointcolumnnew{i,:} = vertcat(jointbase.("Joint Base"){i},jointcolumnnew{i});
for j = 1:height(jointcolumnnew{i,1})-2
jointIcolumn(j) = jointcolumnnew{i,1}.ID(j);
jointJcolumn(j) = jointcolumnnew{i,1}.ID(j+2);
end
framecolumn{i,:} = table((1:j)’,jointIcolumn’,jointJcolumn’,’VariableNames’,{‘Frame ID’,’JointI’,’JoinJ’});
end
% top ordinary segment (TOS)
for i = 1:height(VariantIDPassed)
endTOS{i,:} = jointcolumn.("Joint Column"){i}(ismember(jointcolumn.("Joint Column"){i}.Z,Zcolumn),:);
jointTOS{i,:} = vertcat(jointtopordinarysegment.("Joint Top Ordinary Segment"){i},endTOS{i});
jointTOSnew1{i,:} = sortrows(jointTOS{i}(ismember(jointTOS{i}.Z,5),:),2);
jointTOSnew2{i,:} = sortrows(jointTOS{i}(ismember(jointTOS{i}.Z,10),:),2);
jointTOSnew{i,:} = vertcat(jointTOSnew1{i},jointTOSnew2{i});
end
here the resut that i want :
jointTOSnew{1} hi guys, can u tell me a different way to sort table by 2 variable columns which more simple than my method?
I want to sort jointTOS by its X and Z from minimum to maximum but X is the priority.
Here the code :
clear;
clc;
H = 5;
L = 15;
Ns = 2;
Nb = 1;
PortalHeight = H;
Bayspan = L;
NumberStory = Ns;
NumberBay = Nb;
% Variable1
h = [0.8,1.00,1.20,1.40,1.6,1.80];
% Variable2
Lss = [2.00,2.40,2.80,3.20,3.60,4.00];
% Variable3
Nss = [2,3,4];
% Definition
Var1HeightofTrussBeam = h;
Var2LengthSpecialSegment = Lss;
Var3NumberSpecialSegment = Nss;
% % Xbase = zeros(1,length(Totalvariant));
% % Zbase = zeros(1,length(Totalvariant));
% % Xcol = zeros(1,length(Totalvariant));
% % Zcol = zeros(1,length(Totalvariant));
% % Xos = zeros(1,length(Totalvariant));
% % Zos = zeros(1,length(Totalvariant));
% % Xss = zeros(1,length(Totalvariant));
% % Zss = zeros(1,length(Totalvariant));
% % X = zeros(1,length(Totalvariant));
% % Z = zeros(1,length(Totalvariant));
% % jointbase = zeros(1,length(Totalvariant));
% % jointcolumn = zeros(1,length(Totalvariant));
% % jointordinarysegment = zeros(1,length(Totalvariant));
% % jointtopordinarysegment = zeros(1,length(Totalvariant));
% % jointbottomordinarysegment = zeros(1,length(Totalvariant));
% % jointspecialsegment = zeros(1,length(Totalvariant));
% % jointtopspecialsegment = zeros(1,length(Totalvariant));
% % jointbottomspecialsegment = zeros(1,length(Totalvariant));
ijk = 0;
for i = 1:numel(h)
for j = 1:numel(Lss)
for k = 1:numel(Nss)
ijk = ijk+1;
Variantmodel{ijk,:} = table(ijk,h(i),Lss(j),Nss(k),’VariableNames’,{‘VariantID’,’Height’,’Length’,’Number’});
%% Cooridinate Point Base(base)
Xbase{ijk,:} = L*(0:NumberBay);
Zbase{ijk,:} = repelem(0,1,length(Xbase{ijk,:}));
%% Column(col)
Xcolumn = L*(0:NumberBay);
Zcolumn = repelem(H*(1:NumberStory),1,length(Xcolumn));
Xbotbeam = L*(0:NumberBay);
Zbotbeam = repelem((H*(1:NumberStory)-h(i)),1,length(Xbotbeam));
% replicate [X] to be the same size as [Z] for plotting:
Xcol{ijk,:} = repmat([Xcolumn,Xbotbeam],1,NumberStory);
Zcol{ijk,:} = [Zcolumn,Zbotbeam];
%% Cooridinate Point Ordinary Segment (os)
% calculate span length of ordinary segment
Los = (L-Lss(j))/2;
Nos = Los/h(i);
Nos = round(Nos);
los = Los/Nos;
totalspan{ijk,:} = los*Nos*2+Lss(j);
if totalspan{ijk,:} == 15.000
checkspan{ijk,:} = "correct span";
else
checkspan{ijk,:} = "span must be 15m";
end
% top and bottom joint of ordinary segment(os)
XTopOrdinarySegment = reshape([los*(1:Nos),(L/2+Lss(j)/2)+los*(0:Nos-1)].’+L*(0:(NumberBay-1)),1,[]);
XBottomOrdinarySegment = XTopOrdinarySegment;
ZTopOrdinarySegment = repelem(H*(1:NumberStory),1,2*Nos*NumberBay);
ZBottomOrdinarySegment = repelem(H*(1:NumberStory)-h(i),1,2*Nos*NumberBay);
% replicate [X] to be the same size as [Z] for plotting:
Xos{ijk,:} = repmat([XTopOrdinarySegment,XBottomOrdinarySegment],1,NumberStory);
Zos{ijk,:} = [ZTopOrdinarySegment,ZBottomOrdinarySegment];
%% Cooridinate Point Special Segment (ss)
% calculate span length of special segment
lss = Lss(j)/Nss(k);
% top and bottom joint of special segment(ss)
XTopSpecialSegment = reshape((lss*(0:Nss(k))+L/2-Lss(j)/2).’+L*(0:(NumberBay-1)),1,[]);
XBottomSpecialSegment = XTopSpecialSegment;
ZTopSpecialSegment = repelem(H*(1:NumberStory),1,length(XTopSpecialSegment));
ZBottomSpecialSegment = repelem(H*(1:NumberStory)-h(i),1,length(XBottomSpecialSegment));
% replicate [X] to be the same size as [Z] for plotting:
Xss{ijk,:} = repmat([XTopSpecialSegment,XBottomSpecialSegment],1,NumberStory);
Zss{ijk,:} = [ZTopSpecialSegment,ZBottomSpecialSegment];
%% Plot Cooridinate Point (X,Z)
X{ijk,:} = [Xbase{ijk,:},Xcol{ijk,:},Xos{ijk,:},Xss{ijk,:}];
Z{ijk,:} = [Zbase{ijk,:},Zcol{ijk,:},Zos{ijk,:},Zss{ijk,:}];
scatter(X{ijk,:},Z{ijk,:},’filled’),grid on
%check angle
tangent = (Lss(j)/Nss(k))/h(i);
anglespecialsegment(ijk) = atand(tangent);
%% Name the Joint
jointbase{ijk} = table((1:numel(Xbase{ijk,:}))’,Xbase{ijk,:}’,Zbase{ijk,:}’,’VariableNames’,{‘ID’,’X’,’Z’});
jointcolumn{ijk} = table((max(jointbase{ijk}.ID)+1:numel(Xcol{ijk,:})+max(jointbase{ijk}.ID))’,Xcol{ijk,:}’,Zcol{ijk,:}’,’VariableNames’,{‘ID’,’X’,’Z’});
jointordinarysegment{ijk} = table((max(jointcolumn{ijk}.ID)+1:numel(Xos{ijk,:})+max(jointcolumn{ijk}.ID))’,Xos{ijk,:}’,Zos{ijk,:}’,’VariableNames’,{‘ID’,’X’,’Z’});
jointtopordinarysegment{ijk} = jointordinarysegment{ijk}(ismember(jointordinarysegment{ijk}.Z,Zcolumn),:);
jointbottomordinarysegment{ijk} = jointordinarysegment{ijk}(ismember(jointordinarysegment{ijk}.Z,Zbotbeam),:);
jointspecialsegment{ijk} = table((max(jointbottomordinarysegment{ijk}.ID)+1:numel(Xss{ijk,:})+max(jointbottomordinarysegment{ijk}.ID))’,Xss{ijk,:}’,Zss{ijk,:}’,’VariableNames’,{‘ID’,’X’,’Z’});
jointtopspecialsegment{ijk} = jointspecialsegment{ijk}(ismember(jointspecialsegment{ijk}.Z,Zcolumn),:);
jointbottomspecialsegment{ijk} = jointspecialsegment{ijk}(ismember(jointspecialsegment{ijk}.Z,Zbotbeam),:);
end
end
end
% Verify Variants Which Passed the Angle Requirement
tablecheck = table((1:numel(anglespecialsegment))’,totalspan,anglespecialsegment’,’VariableNames’,{‘VariantID’,’Total Span’,’Angle’});
VariantIDPassed = tablecheck.VariantID(tablecheck.Angle>=30 & tablecheck.Angle<=60);
jointbase = table((1:numel(jointbase))’,jointbase’,’VariableNames’,{‘VariantID’,’Joint Base’});
jointbase = jointbase(ismember(jointbase.VariantID,VariantIDPassed),:);
jointcolumn = table((1:numel(jointcolumn))’,jointcolumn’,’VariableNames’,{‘VariantID’,’Joint Column’});
jointcolumn = jointcolumn(ismember(jointcolumn.VariantID,VariantIDPassed),:);
jointtopordinarysegment = table((1:numel(jointtopordinarysegment))’,jointtopordinarysegment’,’VariableNames’,{‘VariantID’,’Joint Top Ordinary Segment’});
jointtopordinarysegment = jointtopordinarysegment(ismember(jointtopordinarysegment.VariantID,VariantIDPassed),:);
jointbottomordinarysegment = table((1:numel(jointbottomordinarysegment))’,jointbottomordinarysegment’,’VariableNames’,{‘VariantID’,’Joint Bottom Ordinary Segment’});
jointbottomordinarysegment = jointbottomordinarysegment(ismember(jointbottomordinarysegment.VariantID,VariantIDPassed),:);
jointtopspecialsegment = table((1:numel(jointtopspecialsegment))’,jointtopspecialsegment’,’VariableNames’,{‘VariantID’,’Joint Top Special Segment’});
jointtopspecialsegment = jointtopspecialsegment(ismember(jointtopspecialsegment.VariantID,VariantIDPassed),:);
jointbottomspecialsegment = table((1:numel(jointbottomspecialsegment))’,jointbottomspecialsegment’,’VariableNames’,{‘VariantID’,’Joint Bottom Special Segment’});
jointbottomspecialsegment = jointbottomspecialsegment(ismember(jointbottomspecialsegment.VariantID,VariantIDPassed),:);
%% Name the Frame
% column
for i = 1:height(VariantIDPassed)
jointIcolumn = 0;
jointJcolumn = 0;
jointcolumnnew{i,:} = jointcolumn.("Joint Column"){i}(ismember(jointcolumn.("Joint Column"){i}.Z,Zcolumn),:);
jointcolumnnew{i,:} = vertcat(jointbase.("Joint Base"){i},jointcolumnnew{i});
for j = 1:height(jointcolumnnew{i,1})-2
jointIcolumn(j) = jointcolumnnew{i,1}.ID(j);
jointJcolumn(j) = jointcolumnnew{i,1}.ID(j+2);
end
framecolumn{i,:} = table((1:j)’,jointIcolumn’,jointJcolumn’,’VariableNames’,{‘Frame ID’,’JointI’,’JoinJ’});
end
% top ordinary segment (TOS)
for i = 1:height(VariantIDPassed)
endTOS{i,:} = jointcolumn.("Joint Column"){i}(ismember(jointcolumn.("Joint Column"){i}.Z,Zcolumn),:);
jointTOS{i,:} = vertcat(jointtopordinarysegment.("Joint Top Ordinary Segment"){i},endTOS{i});
jointTOSnew1{i,:} = sortrows(jointTOS{i}(ismember(jointTOS{i}.Z,5),:),2);
jointTOSnew2{i,:} = sortrows(jointTOS{i}(ismember(jointTOS{i}.Z,10),:),2);
jointTOSnew{i,:} = vertcat(jointTOSnew1{i},jointTOSnew2{i});
end
here the resut that i want :
jointTOSnew{1} sort MATLAB Answers — New Questions
Plot a 2D matrix using a color plot
I have a 3D matrix where the spans an angle , the spans a value for a radius and the spans a set of times. The value in the entry is a positive number. What I would like to do is to plot, for each , a 2D colored map of the matrix such that in the point of coordinates () it plots a color depending on the value of . In particular if I would like a specific color, say green, while the more approaches 0 I would like another color to be plotted, say blue, and red if becomes larger than 1.I have a 3D matrix where the spans an angle , the spans a value for a radius and the spans a set of times. The value in the entry is a positive number. What I would like to do is to plot, for each , a 2D colored map of the matrix such that in the point of coordinates () it plots a color depending on the value of . In particular if I would like a specific color, say green, while the more approaches 0 I would like another color to be plotted, say blue, and red if becomes larger than 1. I have a 3D matrix where the spans an angle , the spans a value for a radius and the spans a set of times. The value in the entry is a positive number. What I would like to do is to plot, for each , a 2D colored map of the matrix such that in the point of coordinates () it plots a color depending on the value of . In particular if I would like a specific color, say green, while the more approaches 0 I would like another color to be plotted, say blue, and red if becomes larger than 1. colormap, plot, plotting MATLAB Answers — New Questions
Using SIMULINK, develop the models for controlled rectifiers (1, 4, 6 and 12 pulse) and compare THD to find which rectifier will be suitable for MEA.
this is the table for the parameters Three-Phase Source Block Phase-to-phase voltage (Vrms) 254V Frequency 50Hz PLL Block Minimum frequency 50Hz Pulse Generator (Thyristor, 12 pulse) Block Pulse Width (deg) 60 Three-Phase Transformer (Three Windings) Block Nominal power and frequency [1000VA , 50 Hz] Winding 1 parameters [254.04 0 0] Winding 2 parameters [254.04 0 0] Winding 3 parameters [254.04 0 0] is set for below mentioned blocks in rectifier modelling. hence Explain the graphical results you getting from scopes and Displays for all rectifier types and Explain which rectifier will perform better in More Electric Aircraft and Why?this is the table for the parameters Three-Phase Source Block Phase-to-phase voltage (Vrms) 254V Frequency 50Hz PLL Block Minimum frequency 50Hz Pulse Generator (Thyristor, 12 pulse) Block Pulse Width (deg) 60 Three-Phase Transformer (Three Windings) Block Nominal power and frequency [1000VA , 50 Hz] Winding 1 parameters [254.04 0 0] Winding 2 parameters [254.04 0 0] Winding 3 parameters [254.04 0 0] is set for below mentioned blocks in rectifier modelling. hence Explain the graphical results you getting from scopes and Displays for all rectifier types and Explain which rectifier will perform better in More Electric Aircraft and Why? this is the table for the parameters Three-Phase Source Block Phase-to-phase voltage (Vrms) 254V Frequency 50Hz PLL Block Minimum frequency 50Hz Pulse Generator (Thyristor, 12 pulse) Block Pulse Width (deg) 60 Three-Phase Transformer (Three Windings) Block Nominal power and frequency [1000VA , 50 Hz] Winding 1 parameters [254.04 0 0] Winding 2 parameters [254.04 0 0] Winding 3 parameters [254.04 0 0] is set for below mentioned blocks in rectifier modelling. hence Explain the graphical results you getting from scopes and Displays for all rectifier types and Explain which rectifier will perform better in More Electric Aircraft and Why? simulink MATLAB Answers — New Questions
Simulation of Full-Bridge LLC Resonant Converter
I want to simulate the full-bridge LLC resonant circuit in Simulink, unfortunately, I am a beginner in Simulink , Can anyone model the circuit as follwoed in Simulink and send me simulink model in response, please.
I want a general model in Simulink, please.
I am really stuck with it, please help.
Thanks in advance
<</matlabcentral/answers/uploaded_files/67733/full-bridge_LLC_converter.png>>I want to simulate the full-bridge LLC resonant circuit in Simulink, unfortunately, I am a beginner in Simulink , Can anyone model the circuit as follwoed in Simulink and send me simulink model in response, please.
I want a general model in Simulink, please.
I am really stuck with it, please help.
Thanks in advance
<</matlabcentral/answers/uploaded_files/67733/full-bridge_LLC_converter.png>> I want to simulate the full-bridge LLC resonant circuit in Simulink, unfortunately, I am a beginner in Simulink , Can anyone model the circuit as follwoed in Simulink and send me simulink model in response, please.
I want a general model in Simulink, please.
I am really stuck with it, please help.
Thanks in advance
<</matlabcentral/answers/uploaded_files/67733/full-bridge_LLC_converter.png>> simulation of full-bridge llc resonant converter MATLAB Answers — New Questions
I am getting error:Warning: Failure at t=0.000000e+00. Unable to meet integration tolerances without reducing the step size below the smallest value allowed (7.905050e-323)
This is my code
clc
clear
global datei Temp c0
datei=’input_data.m’;
run(datei);
zspan=[0 V/A_hc];
%intergration of the system
options=odeset(‘RelTol’,1e-12,’AbsTol’,1e-12);%,’NonNegative’,2:7);
for n=1:size(c,1)
switch dataset
case 1
name=[experiment ‘ ‘ num2str(y0_nh3_scr(n,2)) ‘ ppm NH3 ‘ num2str(y0_nh3_scr(n,1)) ‘ vol NO ‘ num2str(y0_nh3_scr(n,5)) ‘% O2’ ];
case 2
name=[experiment ‘ ‘ num2str(y0_nh3_ox(n,2)) ‘ ppm NH3 ‘ num2str(y0_nh3_ox(n,5)) ‘ vol O2’];
case 3
name=[experiment ‘ ‘ num2str(y0_hcho_ox(n,3)) ‘ ppm HCHO ‘ num2str(y0_hcho_ox(n,5)) ‘ vol O2’];
end
results=zeros(length(T),size(c,2)+2);
for m=1:length(T)
c0=c(n,1:4).*T_N./T(m);
c_o2=c0_o2(n).*T_N./T(m);
p_o2=p0_o2(n);
y0=[c0 0];
Temp=T(m);
tic
disp([‘Calculating Step ‘ num2str(m) ‘ of ‘ num2str(length(T))])
[t,y]=ode15s(@massbalance,zspan,y0,options);
toc
results(m,:)=[T(m)-273.15 y(end,:)];
end
end
results(:,2:5)=results(:,2:5).*Vm.*1e6.*(results(:,1)+273.15)./T_N;
switch dataset
case 1
results(:,2:3)=(1-results(:,2:3)./y0_nh3_scr(n,1:2)).*100;
case 2
results(:,3)=(1-results(:,3)./y0_nh3_ox(n,2)).*100;
case 3
results(:,4)=(1-results(:,4)./y0_hcho_ox(n,3)).*100;
end
name=[name ‘ ‘ char(num2str(fix(clock)))];
save(name,’results’,’-double’,’-ascii’)
plot(results(:,1),results(:,2),’b’,results(:,1),results(:,3),’r’,results(:,1),results(:,6),’g’)
xlabel(‘T / ^oC’)
ylabel(‘y / ppm’)
legend(‘NO’,’NH3′,’N2O’)
function dy_dz = massbalance(takt,y)
global datei Temp c0
run(datei)
F=F*Temp/T_N;
u=F/A_hc;
if c0(1)==0
kin=kin_ox;
else
kin=kin_scr;
end
r1=kin(1,1).*exp(-kin(1,2)./R.*(1/Temp-1/kin(1,3))).*y(2).*(1-y(5));
r2=kin(2,1).*exp(-(kin(2,2)-y(5).*kin(2,3))./(R.*Temp)).*y(5);
r3=kin(3,1).*exp(-kin(3,2)./(R.*Temp)).*y(1).*y(5);
r4=kin(4,1).*exp(-kin(4,2)./(R.*Temp)).*y(5);
r5=kin(5,1).*exp(-kin(5,2)./(R.*Temp)).*y(4);
r6=kin(6,1).*exp(-kin(6,2.)/(R.*Temp)).*y(3);
%% mass balances
dy_dz=[1/u*(-r3)
1/u*(-r1+r2)
1/u*(-r6)
1/u*(-r5)
(r1-r2-r3-r4)/(u*gam)];
end
I am not able to figure out where I am making a mistake. I appricate all the help in advance.This is my code
clc
clear
global datei Temp c0
datei=’input_data.m’;
run(datei);
zspan=[0 V/A_hc];
%intergration of the system
options=odeset(‘RelTol’,1e-12,’AbsTol’,1e-12);%,’NonNegative’,2:7);
for n=1:size(c,1)
switch dataset
case 1
name=[experiment ‘ ‘ num2str(y0_nh3_scr(n,2)) ‘ ppm NH3 ‘ num2str(y0_nh3_scr(n,1)) ‘ vol NO ‘ num2str(y0_nh3_scr(n,5)) ‘% O2’ ];
case 2
name=[experiment ‘ ‘ num2str(y0_nh3_ox(n,2)) ‘ ppm NH3 ‘ num2str(y0_nh3_ox(n,5)) ‘ vol O2’];
case 3
name=[experiment ‘ ‘ num2str(y0_hcho_ox(n,3)) ‘ ppm HCHO ‘ num2str(y0_hcho_ox(n,5)) ‘ vol O2’];
end
results=zeros(length(T),size(c,2)+2);
for m=1:length(T)
c0=c(n,1:4).*T_N./T(m);
c_o2=c0_o2(n).*T_N./T(m);
p_o2=p0_o2(n);
y0=[c0 0];
Temp=T(m);
tic
disp([‘Calculating Step ‘ num2str(m) ‘ of ‘ num2str(length(T))])
[t,y]=ode15s(@massbalance,zspan,y0,options);
toc
results(m,:)=[T(m)-273.15 y(end,:)];
end
end
results(:,2:5)=results(:,2:5).*Vm.*1e6.*(results(:,1)+273.15)./T_N;
switch dataset
case 1
results(:,2:3)=(1-results(:,2:3)./y0_nh3_scr(n,1:2)).*100;
case 2
results(:,3)=(1-results(:,3)./y0_nh3_ox(n,2)).*100;
case 3
results(:,4)=(1-results(:,4)./y0_hcho_ox(n,3)).*100;
end
name=[name ‘ ‘ char(num2str(fix(clock)))];
save(name,’results’,’-double’,’-ascii’)
plot(results(:,1),results(:,2),’b’,results(:,1),results(:,3),’r’,results(:,1),results(:,6),’g’)
xlabel(‘T / ^oC’)
ylabel(‘y / ppm’)
legend(‘NO’,’NH3′,’N2O’)
function dy_dz = massbalance(takt,y)
global datei Temp c0
run(datei)
F=F*Temp/T_N;
u=F/A_hc;
if c0(1)==0
kin=kin_ox;
else
kin=kin_scr;
end
r1=kin(1,1).*exp(-kin(1,2)./R.*(1/Temp-1/kin(1,3))).*y(2).*(1-y(5));
r2=kin(2,1).*exp(-(kin(2,2)-y(5).*kin(2,3))./(R.*Temp)).*y(5);
r3=kin(3,1).*exp(-kin(3,2)./(R.*Temp)).*y(1).*y(5);
r4=kin(4,1).*exp(-kin(4,2)./(R.*Temp)).*y(5);
r5=kin(5,1).*exp(-kin(5,2)./(R.*Temp)).*y(4);
r6=kin(6,1).*exp(-kin(6,2.)/(R.*Temp)).*y(3);
%% mass balances
dy_dz=[1/u*(-r3)
1/u*(-r1+r2)
1/u*(-r6)
1/u*(-r5)
(r1-r2-r3-r4)/(u*gam)];
end
I am not able to figure out where I am making a mistake. I appricate all the help in advance. This is my code
clc
clear
global datei Temp c0
datei=’input_data.m’;
run(datei);
zspan=[0 V/A_hc];
%intergration of the system
options=odeset(‘RelTol’,1e-12,’AbsTol’,1e-12);%,’NonNegative’,2:7);
for n=1:size(c,1)
switch dataset
case 1
name=[experiment ‘ ‘ num2str(y0_nh3_scr(n,2)) ‘ ppm NH3 ‘ num2str(y0_nh3_scr(n,1)) ‘ vol NO ‘ num2str(y0_nh3_scr(n,5)) ‘% O2’ ];
case 2
name=[experiment ‘ ‘ num2str(y0_nh3_ox(n,2)) ‘ ppm NH3 ‘ num2str(y0_nh3_ox(n,5)) ‘ vol O2’];
case 3
name=[experiment ‘ ‘ num2str(y0_hcho_ox(n,3)) ‘ ppm HCHO ‘ num2str(y0_hcho_ox(n,5)) ‘ vol O2’];
end
results=zeros(length(T),size(c,2)+2);
for m=1:length(T)
c0=c(n,1:4).*T_N./T(m);
c_o2=c0_o2(n).*T_N./T(m);
p_o2=p0_o2(n);
y0=[c0 0];
Temp=T(m);
tic
disp([‘Calculating Step ‘ num2str(m) ‘ of ‘ num2str(length(T))])
[t,y]=ode15s(@massbalance,zspan,y0,options);
toc
results(m,:)=[T(m)-273.15 y(end,:)];
end
end
results(:,2:5)=results(:,2:5).*Vm.*1e6.*(results(:,1)+273.15)./T_N;
switch dataset
case 1
results(:,2:3)=(1-results(:,2:3)./y0_nh3_scr(n,1:2)).*100;
case 2
results(:,3)=(1-results(:,3)./y0_nh3_ox(n,2)).*100;
case 3
results(:,4)=(1-results(:,4)./y0_hcho_ox(n,3)).*100;
end
name=[name ‘ ‘ char(num2str(fix(clock)))];
save(name,’results’,’-double’,’-ascii’)
plot(results(:,1),results(:,2),’b’,results(:,1),results(:,3),’r’,results(:,1),results(:,6),’g’)
xlabel(‘T / ^oC’)
ylabel(‘y / ppm’)
legend(‘NO’,’NH3′,’N2O’)
function dy_dz = massbalance(takt,y)
global datei Temp c0
run(datei)
F=F*Temp/T_N;
u=F/A_hc;
if c0(1)==0
kin=kin_ox;
else
kin=kin_scr;
end
r1=kin(1,1).*exp(-kin(1,2)./R.*(1/Temp-1/kin(1,3))).*y(2).*(1-y(5));
r2=kin(2,1).*exp(-(kin(2,2)-y(5).*kin(2,3))./(R.*Temp)).*y(5);
r3=kin(3,1).*exp(-kin(3,2)./(R.*Temp)).*y(1).*y(5);
r4=kin(4,1).*exp(-kin(4,2)./(R.*Temp)).*y(5);
r5=kin(5,1).*exp(-kin(5,2)./(R.*Temp)).*y(4);
r6=kin(6,1).*exp(-kin(6,2.)/(R.*Temp)).*y(3);
%% mass balances
dy_dz=[1/u*(-r3)
1/u*(-r1+r2)
1/u*(-r6)
1/u*(-r5)
(r1-r2-r3-r4)/(u*gam)];
end
I am not able to figure out where I am making a mistake. I appricate all the help in advance. ode, function MATLAB Answers — New Questions
Condition for if-statement not updating inside for-loop without pause function
Hello!
I want to break from a for-loop when I close a plot. This is the code I use:
cscale = 100; %The number of colours in the colormap of choice
for c2 = 1:length(time)
f2 = figure(2);
p = plot(G);
G.Nodes.value = floor(real(cos(x(:,c2))+1)*((cscale-1)/2))+1; %scales x values to range from 1 up to cscale.
G.Edges.value = floor(real(cos(y(:,c2))+1)*((cscale-1)/2))+1; %scales y values to range from 1 up to cscale.
G.Nodes.NodeColors = G.Nodes.value;
G.Edges.EdgeColors = G.Edges.value;
p.NodeCData = G.Nodes.NodeColors;
p.EdgeCData = G.Edges.EdgeColors;
colormap(flipud(turbo(cscale)));
pause(1/5000);
if ~isgraphics(f2)
break;
end
end
The for-loop is not inside any other loop, so I shouldn’t need to break more than once to end the code. The above only worked when I introduced the pause function, no matter how short the pause is. Note that I tried changing the condition to ~isgraphics(f1) where f1 is another figure generated earlier in the code (unlike f2, f1 is not generated inside a loop), and I also tried ishghandle and ishandle, but without the pause function, they all kept returning a logical 0 even after I closed the figure, and hence the code didn’t break the loop. My question is why does it not work without pausing?
Any insight would be appreciated!Hello!
I want to break from a for-loop when I close a plot. This is the code I use:
cscale = 100; %The number of colours in the colormap of choice
for c2 = 1:length(time)
f2 = figure(2);
p = plot(G);
G.Nodes.value = floor(real(cos(x(:,c2))+1)*((cscale-1)/2))+1; %scales x values to range from 1 up to cscale.
G.Edges.value = floor(real(cos(y(:,c2))+1)*((cscale-1)/2))+1; %scales y values to range from 1 up to cscale.
G.Nodes.NodeColors = G.Nodes.value;
G.Edges.EdgeColors = G.Edges.value;
p.NodeCData = G.Nodes.NodeColors;
p.EdgeCData = G.Edges.EdgeColors;
colormap(flipud(turbo(cscale)));
pause(1/5000);
if ~isgraphics(f2)
break;
end
end
The for-loop is not inside any other loop, so I shouldn’t need to break more than once to end the code. The above only worked when I introduced the pause function, no matter how short the pause is. Note that I tried changing the condition to ~isgraphics(f1) where f1 is another figure generated earlier in the code (unlike f2, f1 is not generated inside a loop), and I also tried ishghandle and ishandle, but without the pause function, they all kept returning a logical 0 even after I closed the figure, and hence the code didn’t break the loop. My question is why does it not work without pausing?
Any insight would be appreciated! Hello!
I want to break from a for-loop when I close a plot. This is the code I use:
cscale = 100; %The number of colours in the colormap of choice
for c2 = 1:length(time)
f2 = figure(2);
p = plot(G);
G.Nodes.value = floor(real(cos(x(:,c2))+1)*((cscale-1)/2))+1; %scales x values to range from 1 up to cscale.
G.Edges.value = floor(real(cos(y(:,c2))+1)*((cscale-1)/2))+1; %scales y values to range from 1 up to cscale.
G.Nodes.NodeColors = G.Nodes.value;
G.Edges.EdgeColors = G.Edges.value;
p.NodeCData = G.Nodes.NodeColors;
p.EdgeCData = G.Edges.EdgeColors;
colormap(flipud(turbo(cscale)));
pause(1/5000);
if ~isgraphics(f2)
break;
end
end
The for-loop is not inside any other loop, so I shouldn’t need to break more than once to end the code. The above only worked when I introduced the pause function, no matter how short the pause is. Note that I tried changing the condition to ~isgraphics(f1) where f1 is another figure generated earlier in the code (unlike f2, f1 is not generated inside a loop), and I also tried ishghandle and ishandle, but without the pause function, they all kept returning a logical 0 even after I closed the figure, and hence the code didn’t break the loop. My question is why does it not work without pausing?
Any insight would be appreciated! figure, plot, break, if statement, loop, pause MATLAB Answers — New Questions
Unable to open matlab
Hi all, i am unable to open my matlab software. i keep being told "you do not have a valid license file" but my license is activatedHi all, i am unable to open my matlab software. i keep being told "you do not have a valid license file" but my license is activated Hi all, i am unable to open my matlab software. i keep being told "you do not have a valid license file" but my license is activated license MATLAB Answers — New Questions
why matab show “because it appears to be corrupt”
so i want to save a big value and use v7.3, but it shows this:Unable to write to file ‘D:matlabtest.mat’ because it appears to be
corrupt.
i also change the preference to save -v7.3, but still it doesn’t work.so i want to save a big value and use v7.3, but it shows this:Unable to write to file ‘D:matlabtest.mat’ because it appears to be
corrupt.
i also change the preference to save -v7.3, but still it doesn’t work. so i want to save a big value and use v7.3, but it shows this:Unable to write to file ‘D:matlabtest.mat’ because it appears to be
corrupt.
i also change the preference to save -v7.3, but still it doesn’t work. save MATLAB Answers — New Questions
comparison number on interval
Hello i have this code, i should get px py pz values when px and py are in interval <-524,524> and pz <0,524>
but it returns values even when i as set them as belowm what doesen’t meet conditions
Can ynone help ?
px = 0;
py = 1000;
pz = 0;
if (-524 <= px) && (px <= 524) | (-524 <= py) && (py <= 524) | (0 <= pz) && (pz <= 524)
px
py
pz
else
fig = uifigure;
message = ["Point is out of border of work space","Insert coordinations with max vule 524."];
uialert(fig,message,"Warning","Icon","warning");
endHello i have this code, i should get px py pz values when px and py are in interval <-524,524> and pz <0,524>
but it returns values even when i as set them as belowm what doesen’t meet conditions
Can ynone help ?
px = 0;
py = 1000;
pz = 0;
if (-524 <= px) && (px <= 524) | (-524 <= py) && (py <= 524) | (0 <= pz) && (pz <= 524)
px
py
pz
else
fig = uifigure;
message = ["Point is out of border of work space","Insert coordinations with max vule 524."];
uialert(fig,message,"Warning","Icon","warning");
end Hello i have this code, i should get px py pz values when px and py are in interval <-524,524> and pz <0,524>
but it returns values even when i as set them as belowm what doesen’t meet conditions
Can ynone help ?
px = 0;
py = 1000;
pz = 0;
if (-524 <= px) && (px <= 524) | (-524 <= py) && (py <= 524) | (0 <= pz) && (pz <= 524)
px
py
pz
else
fig = uifigure;
message = ["Point is out of border of work space","Insert coordinations with max vule 524."];
uialert(fig,message,"Warning","Icon","warning");
end if statement, interval, comparison MATLAB Answers — New Questions
Function with for loop doesn’t always work
I’ve written a function that writes a C structure into a header file using fprintf(). It seems to not work at all when the input array is small and works partially when the input array is big.
function deg = path2header(fid, deg, comment, option)
% Print path into a header file
% The angle can be set as ‘rad’, ‘deg’, or ‘rev’ in the option.
% fid – File indentity
% deg – [deg, vmax, amax, dwell]
% comment – Name of the path
% option – ‘rad’, ‘deg’, or ‘rev’
if strcmp(option,’rad’)
deg = deg./(2*pi);
elseif strcmp(option,’deg’)
deg = deg./360;
elseif strcmp(option,’rev’)
else
disp("Error option in path2header()")
return
end
[nseg,m]=size(deg);
disp(nseg)
fprintf(fid,’//—%sn’, comment);
fprintf(fid,’//—%sn’, datestr(now,0));
fprintf(fid,’ char headerTime[] = "%s";n’,datestr(now,0));
fprintf(fid,’ int nseg = %d; // number of pointsn’,nseg);
fprintf(fid,’ segtmySegs[%d]={ // define the array of points in revsn’,nseg);
for i = 1:nseg-1
fprintf(fid,’ {‘);
for j = [1,2,3]
fprintf(fid,’%e, ‘,deg(i,j));
end
fprintf(fid,’%e},n’,deg(i,4));
end
fprintf(fid,’ {‘);
for j = [1,2,3]
fprintf(fid,’%e, ‘,deg(nseg,j));
end
fprintf(fid,’%e},n’,deg(nseg,4));
fprintf(fid,’}n };n’);
This is an example of the test code that results in an empty testPath.h file.
clear;
deg = [ones(3,3), zeros(3,1)];
HeaderFileName = "testPath.h";
fid = fopen(HeaderFileName,’W’);
comment = "matlab sramp";
path2header(fid, deg, comment, ‘rev’)
The function is part of a bigger script to convert angles from an inverse kinematics equation to be saved as C header file to preprogram a motor’s path thus the n x 4 matrix.
Please help. Thx!I’ve written a function that writes a C structure into a header file using fprintf(). It seems to not work at all when the input array is small and works partially when the input array is big.
function deg = path2header(fid, deg, comment, option)
% Print path into a header file
% The angle can be set as ‘rad’, ‘deg’, or ‘rev’ in the option.
% fid – File indentity
% deg – [deg, vmax, amax, dwell]
% comment – Name of the path
% option – ‘rad’, ‘deg’, or ‘rev’
if strcmp(option,’rad’)
deg = deg./(2*pi);
elseif strcmp(option,’deg’)
deg = deg./360;
elseif strcmp(option,’rev’)
else
disp("Error option in path2header()")
return
end
[nseg,m]=size(deg);
disp(nseg)
fprintf(fid,’//—%sn’, comment);
fprintf(fid,’//—%sn’, datestr(now,0));
fprintf(fid,’ char headerTime[] = "%s";n’,datestr(now,0));
fprintf(fid,’ int nseg = %d; // number of pointsn’,nseg);
fprintf(fid,’ segtmySegs[%d]={ // define the array of points in revsn’,nseg);
for i = 1:nseg-1
fprintf(fid,’ {‘);
for j = [1,2,3]
fprintf(fid,’%e, ‘,deg(i,j));
end
fprintf(fid,’%e},n’,deg(i,4));
end
fprintf(fid,’ {‘);
for j = [1,2,3]
fprintf(fid,’%e, ‘,deg(nseg,j));
end
fprintf(fid,’%e},n’,deg(nseg,4));
fprintf(fid,’}n };n’);
This is an example of the test code that results in an empty testPath.h file.
clear;
deg = [ones(3,3), zeros(3,1)];
HeaderFileName = "testPath.h";
fid = fopen(HeaderFileName,’W’);
comment = "matlab sramp";
path2header(fid, deg, comment, ‘rev’)
The function is part of a bigger script to convert angles from an inverse kinematics equation to be saved as C header file to preprogram a motor’s path thus the n x 4 matrix.
Please help. Thx! I’ve written a function that writes a C structure into a header file using fprintf(). It seems to not work at all when the input array is small and works partially when the input array is big.
function deg = path2header(fid, deg, comment, option)
% Print path into a header file
% The angle can be set as ‘rad’, ‘deg’, or ‘rev’ in the option.
% fid – File indentity
% deg – [deg, vmax, amax, dwell]
% comment – Name of the path
% option – ‘rad’, ‘deg’, or ‘rev’
if strcmp(option,’rad’)
deg = deg./(2*pi);
elseif strcmp(option,’deg’)
deg = deg./360;
elseif strcmp(option,’rev’)
else
disp("Error option in path2header()")
return
end
[nseg,m]=size(deg);
disp(nseg)
fprintf(fid,’//—%sn’, comment);
fprintf(fid,’//—%sn’, datestr(now,0));
fprintf(fid,’ char headerTime[] = "%s";n’,datestr(now,0));
fprintf(fid,’ int nseg = %d; // number of pointsn’,nseg);
fprintf(fid,’ segtmySegs[%d]={ // define the array of points in revsn’,nseg);
for i = 1:nseg-1
fprintf(fid,’ {‘);
for j = [1,2,3]
fprintf(fid,’%e, ‘,deg(i,j));
end
fprintf(fid,’%e},n’,deg(i,4));
end
fprintf(fid,’ {‘);
for j = [1,2,3]
fprintf(fid,’%e, ‘,deg(nseg,j));
end
fprintf(fid,’%e},n’,deg(nseg,4));
fprintf(fid,’}n };n’);
This is an example of the test code that results in an empty testPath.h file.
clear;
deg = [ones(3,3), zeros(3,1)];
HeaderFileName = "testPath.h";
fid = fopen(HeaderFileName,’W’);
comment = "matlab sramp";
path2header(fid, deg, comment, ‘rev’)
The function is part of a bigger script to convert angles from an inverse kinematics equation to be saved as C header file to preprogram a motor’s path thus the n x 4 matrix.
Please help. Thx! for loop, function MATLAB Answers — New Questions
Why do I get an error in bateman_Radon220 example file?
I am trying to understend the following examplefile (bateman_Radon220.m). But when I run run code I get an error:
Warning: Error updating FunctionLine.
DataSpace or ColorSpace transform method failed.
The problem is that the A_sum does not plot entirely right, so I guess it has something to do with that?!
Kind regard Brian
% Rn-220 (Thoron) decay chain
%
% For the basics have a look at bateman.m.
%
%
% (r41=64%)-l4-> Po-212
% / l5
% Rn-220 -l1-> Po-216 -l2-> Pb-212 -l3-> Bi-212 —-> Pb-208 (stable)
% /l6
% (r42=36%)-l4-> Tl-208
% 1: Rn-220 t(1/2) = 55.6 s
% 2: Po-216 t(1/2) = 0.15 s
% 3: Pb-212 t(1/2) = 10.6 h
% 4: Bi-212 t(1/2) = 60.6 min
% 5: Po-212 t(1/2) = 299 ns
% 6: Tl-208 t(1/2) = 3.05 min
%
% l = lamda = decay constant
% t(1/2) = half-life
% N0 is the initial quantity of substance that will decay.
% N(t) is the quantity that still remains and has not yet decayed after a time t.
% dN/dt = -l*N
% N(t) = N0*exp(-l*t)
% l = log(2)/t(1/2) (log means the natural logarithm)
% A = activity; is the number of decays per unit time of a radioactive sample
% A = l*N
% A0 = l1*N0
% rxy = branching ratio
% et = elution time
clear all;
syms N1(t) N2(t) N3(t) N4(t) N5(t) N6(t) l1 l2 l3 l4 l5 l6 r41 r42 N0 A0;
eq_1 = diff(N1(t),t) == -l1*N1(t); % decay of Rn-220
eq_2 = diff(N2(t),t) == -l2*N2(t)+l1*N1(t); % decay of Po-216 and formation from Rn-220
eq_3 = diff(N3(t),t) == -l3*N3(t)+l2*N2(t); % decay of Pb-212 and formation from Po-216
eq_4 = diff(N4(t),t) == -l4*N4(t)+l3*N3(t); % decay of Bi-212 and formation from Pb-212
eq_5 = diff(N5(t),t) == -l5*N5(t)+r41*l4*N4(t); % decay of Po-212 and formation from Bi-212
eq_6 = diff(N6(t),t) == -l6*N6(t)+r42*l4*N4(t); % decay of Tl-208 and formation from Bi-212
% solve the system of diff. equations
% conditions N1(t=0) = N0; N2 to N5(t=0) = 0
sol = dsolve ([eq_1 eq_2 eq_3 eq_4 eq_5 eq_6, N1(0)==N0 N2(0)==0 N3(0)==0 N4(0)==0 N5(0)==0 N6(0)==0]);
A1 = sol.N1*l1; % transform N to A
A2 = sol.N2*l2; % transform N to A
A3 = sol.N3*l3; % transform N to A
A4 = sol.N4*l4; % transform N to A
A5 = sol.N5*l5; % transform N to A
A6 = sol.N6*l6; % transform N to A
A1 = subs(A1,N0*l1,A0); % substitute N0*l1 with A0
A2 = subs(A2,N0*l1,A0); % substitute N0*l1 with A0
A3 = subs(A3,N0*l1,A0); % substitute N0*l1 with A0
A4 = subs(A4,N0*l1,A0); % substitute N0*l1 with A0
A5 = subs(A5,N0*l1,A0); % substitute N0*l1 with A0
A6 = subs(A6,N0*l1,A0); % substitute N0*l1 with A0
A1 = A1 / A0; % divide by A0 to get relative activities
A2 = A2 / A0; % divide by A0 to get relative activities
A3 = A3 / A0; % divide by A0 to get relative activities
A4 = A4 / A0; % divide by A0 to get relative activities
A5 = A5 / A0; % divide by A0 to get relative activities
A6 = A6 / A0; % divide by A0 to get relative activities
A2 = simplify(A2,’Steps’,40); % simplify
A3 = simplify(A3,’Steps’,40); % simplify
A4 = simplify(A4,’Steps’,40); % simplify
A5 = simplify(A5,’Steps’,40); % simplify
A6 = simplify(A6,’Steps’,40); % simplify
% ———————————————————————–
% values to change
l1_v = log(2)/55.6; % l for Rn-220 /s; l=log(2)/t(1/2)
l2_v = log(2)/0.15; % l for Po-216 /s; l=log(2)/t(1/2)
l3_v = log(2)/(10.6*60*60); % l for Pb-212 /s; l=log(2)/t(1/2)
l4_v = log(2)/(60.6*60); % l for Bi-212 /s; l=log(2)/t(1/2)
l5_v = log(2)/2.99e-7; % l for Po-212 /s; l=log(2)/t(1/2)
l6_v = log(2)/(3.05*60); % l for Tl-208 /s; l=log(2)/t(1/2)
r41_v = 0.64; % Bi-212 branching to Po-212
r42_v = 0.36; % Bi-212 branching to Tl-208
% ———————————————————————–
% symbolic substitution of constants with "real" values
A1s = subs(A1, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A2s = subs(A2, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A3s = subs(A3, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A4s = subs(A4, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A5s = subs(A5, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A6s = subs(A6, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A_sum = A1s + A2s + A3s + A4s + A5s + A6s; % sum of all activities
% plot section
hold on;
fplot(A1s,’Color’,’blue’);
fplot(A2s,’Color’,’red’);
fplot(A3s,’Color’,’green’);
fplot(A4s,’Color’,’yellow’);
fplot(A5s,’Color’,’magenta’);
fplot(A6s,’Color’,’black’);
fplot(A_sum,’Color’,’black’,’LineStyle’,’–‘);
hold off
% plot options
ax=gca;
ax.Title.String = {‘Decay of Rn-220’};
ax.YLim=[1e-15 3];
ax.XLim=[1e-4 5e6];
ax.YScale=’log’;
ax.XScale=’log’;
ax.XLabel.String=’t /s’;
ax.YLabel.String=’rel. activity A/A_0′;
grid on;
grid minor;
legend(‘Rn-220′,’Po-216′,’Pb-212′,’Bi-212′,’Po-212′,’Tl-208′,’A_{sum}’,’Location’,’best’);I am trying to understend the following examplefile (bateman_Radon220.m). But when I run run code I get an error:
Warning: Error updating FunctionLine.
DataSpace or ColorSpace transform method failed.
The problem is that the A_sum does not plot entirely right, so I guess it has something to do with that?!
Kind regard Brian
% Rn-220 (Thoron) decay chain
%
% For the basics have a look at bateman.m.
%
%
% (r41=64%)-l4-> Po-212
% / l5
% Rn-220 -l1-> Po-216 -l2-> Pb-212 -l3-> Bi-212 —-> Pb-208 (stable)
% /l6
% (r42=36%)-l4-> Tl-208
% 1: Rn-220 t(1/2) = 55.6 s
% 2: Po-216 t(1/2) = 0.15 s
% 3: Pb-212 t(1/2) = 10.6 h
% 4: Bi-212 t(1/2) = 60.6 min
% 5: Po-212 t(1/2) = 299 ns
% 6: Tl-208 t(1/2) = 3.05 min
%
% l = lamda = decay constant
% t(1/2) = half-life
% N0 is the initial quantity of substance that will decay.
% N(t) is the quantity that still remains and has not yet decayed after a time t.
% dN/dt = -l*N
% N(t) = N0*exp(-l*t)
% l = log(2)/t(1/2) (log means the natural logarithm)
% A = activity; is the number of decays per unit time of a radioactive sample
% A = l*N
% A0 = l1*N0
% rxy = branching ratio
% et = elution time
clear all;
syms N1(t) N2(t) N3(t) N4(t) N5(t) N6(t) l1 l2 l3 l4 l5 l6 r41 r42 N0 A0;
eq_1 = diff(N1(t),t) == -l1*N1(t); % decay of Rn-220
eq_2 = diff(N2(t),t) == -l2*N2(t)+l1*N1(t); % decay of Po-216 and formation from Rn-220
eq_3 = diff(N3(t),t) == -l3*N3(t)+l2*N2(t); % decay of Pb-212 and formation from Po-216
eq_4 = diff(N4(t),t) == -l4*N4(t)+l3*N3(t); % decay of Bi-212 and formation from Pb-212
eq_5 = diff(N5(t),t) == -l5*N5(t)+r41*l4*N4(t); % decay of Po-212 and formation from Bi-212
eq_6 = diff(N6(t),t) == -l6*N6(t)+r42*l4*N4(t); % decay of Tl-208 and formation from Bi-212
% solve the system of diff. equations
% conditions N1(t=0) = N0; N2 to N5(t=0) = 0
sol = dsolve ([eq_1 eq_2 eq_3 eq_4 eq_5 eq_6, N1(0)==N0 N2(0)==0 N3(0)==0 N4(0)==0 N5(0)==0 N6(0)==0]);
A1 = sol.N1*l1; % transform N to A
A2 = sol.N2*l2; % transform N to A
A3 = sol.N3*l3; % transform N to A
A4 = sol.N4*l4; % transform N to A
A5 = sol.N5*l5; % transform N to A
A6 = sol.N6*l6; % transform N to A
A1 = subs(A1,N0*l1,A0); % substitute N0*l1 with A0
A2 = subs(A2,N0*l1,A0); % substitute N0*l1 with A0
A3 = subs(A3,N0*l1,A0); % substitute N0*l1 with A0
A4 = subs(A4,N0*l1,A0); % substitute N0*l1 with A0
A5 = subs(A5,N0*l1,A0); % substitute N0*l1 with A0
A6 = subs(A6,N0*l1,A0); % substitute N0*l1 with A0
A1 = A1 / A0; % divide by A0 to get relative activities
A2 = A2 / A0; % divide by A0 to get relative activities
A3 = A3 / A0; % divide by A0 to get relative activities
A4 = A4 / A0; % divide by A0 to get relative activities
A5 = A5 / A0; % divide by A0 to get relative activities
A6 = A6 / A0; % divide by A0 to get relative activities
A2 = simplify(A2,’Steps’,40); % simplify
A3 = simplify(A3,’Steps’,40); % simplify
A4 = simplify(A4,’Steps’,40); % simplify
A5 = simplify(A5,’Steps’,40); % simplify
A6 = simplify(A6,’Steps’,40); % simplify
% ———————————————————————–
% values to change
l1_v = log(2)/55.6; % l for Rn-220 /s; l=log(2)/t(1/2)
l2_v = log(2)/0.15; % l for Po-216 /s; l=log(2)/t(1/2)
l3_v = log(2)/(10.6*60*60); % l for Pb-212 /s; l=log(2)/t(1/2)
l4_v = log(2)/(60.6*60); % l for Bi-212 /s; l=log(2)/t(1/2)
l5_v = log(2)/2.99e-7; % l for Po-212 /s; l=log(2)/t(1/2)
l6_v = log(2)/(3.05*60); % l for Tl-208 /s; l=log(2)/t(1/2)
r41_v = 0.64; % Bi-212 branching to Po-212
r42_v = 0.36; % Bi-212 branching to Tl-208
% ———————————————————————–
% symbolic substitution of constants with "real" values
A1s = subs(A1, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A2s = subs(A2, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A3s = subs(A3, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A4s = subs(A4, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A5s = subs(A5, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A6s = subs(A6, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A_sum = A1s + A2s + A3s + A4s + A5s + A6s; % sum of all activities
% plot section
hold on;
fplot(A1s,’Color’,’blue’);
fplot(A2s,’Color’,’red’);
fplot(A3s,’Color’,’green’);
fplot(A4s,’Color’,’yellow’);
fplot(A5s,’Color’,’magenta’);
fplot(A6s,’Color’,’black’);
fplot(A_sum,’Color’,’black’,’LineStyle’,’–‘);
hold off
% plot options
ax=gca;
ax.Title.String = {‘Decay of Rn-220’};
ax.YLim=[1e-15 3];
ax.XLim=[1e-4 5e6];
ax.YScale=’log’;
ax.XScale=’log’;
ax.XLabel.String=’t /s’;
ax.YLabel.String=’rel. activity A/A_0′;
grid on;
grid minor;
legend(‘Rn-220′,’Po-216′,’Pb-212′,’Bi-212′,’Po-212′,’Tl-208′,’A_{sum}’,’Location’,’best’); I am trying to understend the following examplefile (bateman_Radon220.m). But when I run run code I get an error:
Warning: Error updating FunctionLine.
DataSpace or ColorSpace transform method failed.
The problem is that the A_sum does not plot entirely right, so I guess it has something to do with that?!
Kind regard Brian
% Rn-220 (Thoron) decay chain
%
% For the basics have a look at bateman.m.
%
%
% (r41=64%)-l4-> Po-212
% / l5
% Rn-220 -l1-> Po-216 -l2-> Pb-212 -l3-> Bi-212 —-> Pb-208 (stable)
% /l6
% (r42=36%)-l4-> Tl-208
% 1: Rn-220 t(1/2) = 55.6 s
% 2: Po-216 t(1/2) = 0.15 s
% 3: Pb-212 t(1/2) = 10.6 h
% 4: Bi-212 t(1/2) = 60.6 min
% 5: Po-212 t(1/2) = 299 ns
% 6: Tl-208 t(1/2) = 3.05 min
%
% l = lamda = decay constant
% t(1/2) = half-life
% N0 is the initial quantity of substance that will decay.
% N(t) is the quantity that still remains and has not yet decayed after a time t.
% dN/dt = -l*N
% N(t) = N0*exp(-l*t)
% l = log(2)/t(1/2) (log means the natural logarithm)
% A = activity; is the number of decays per unit time of a radioactive sample
% A = l*N
% A0 = l1*N0
% rxy = branching ratio
% et = elution time
clear all;
syms N1(t) N2(t) N3(t) N4(t) N5(t) N6(t) l1 l2 l3 l4 l5 l6 r41 r42 N0 A0;
eq_1 = diff(N1(t),t) == -l1*N1(t); % decay of Rn-220
eq_2 = diff(N2(t),t) == -l2*N2(t)+l1*N1(t); % decay of Po-216 and formation from Rn-220
eq_3 = diff(N3(t),t) == -l3*N3(t)+l2*N2(t); % decay of Pb-212 and formation from Po-216
eq_4 = diff(N4(t),t) == -l4*N4(t)+l3*N3(t); % decay of Bi-212 and formation from Pb-212
eq_5 = diff(N5(t),t) == -l5*N5(t)+r41*l4*N4(t); % decay of Po-212 and formation from Bi-212
eq_6 = diff(N6(t),t) == -l6*N6(t)+r42*l4*N4(t); % decay of Tl-208 and formation from Bi-212
% solve the system of diff. equations
% conditions N1(t=0) = N0; N2 to N5(t=0) = 0
sol = dsolve ([eq_1 eq_2 eq_3 eq_4 eq_5 eq_6, N1(0)==N0 N2(0)==0 N3(0)==0 N4(0)==0 N5(0)==0 N6(0)==0]);
A1 = sol.N1*l1; % transform N to A
A2 = sol.N2*l2; % transform N to A
A3 = sol.N3*l3; % transform N to A
A4 = sol.N4*l4; % transform N to A
A5 = sol.N5*l5; % transform N to A
A6 = sol.N6*l6; % transform N to A
A1 = subs(A1,N0*l1,A0); % substitute N0*l1 with A0
A2 = subs(A2,N0*l1,A0); % substitute N0*l1 with A0
A3 = subs(A3,N0*l1,A0); % substitute N0*l1 with A0
A4 = subs(A4,N0*l1,A0); % substitute N0*l1 with A0
A5 = subs(A5,N0*l1,A0); % substitute N0*l1 with A0
A6 = subs(A6,N0*l1,A0); % substitute N0*l1 with A0
A1 = A1 / A0; % divide by A0 to get relative activities
A2 = A2 / A0; % divide by A0 to get relative activities
A3 = A3 / A0; % divide by A0 to get relative activities
A4 = A4 / A0; % divide by A0 to get relative activities
A5 = A5 / A0; % divide by A0 to get relative activities
A6 = A6 / A0; % divide by A0 to get relative activities
A2 = simplify(A2,’Steps’,40); % simplify
A3 = simplify(A3,’Steps’,40); % simplify
A4 = simplify(A4,’Steps’,40); % simplify
A5 = simplify(A5,’Steps’,40); % simplify
A6 = simplify(A6,’Steps’,40); % simplify
% ———————————————————————–
% values to change
l1_v = log(2)/55.6; % l for Rn-220 /s; l=log(2)/t(1/2)
l2_v = log(2)/0.15; % l for Po-216 /s; l=log(2)/t(1/2)
l3_v = log(2)/(10.6*60*60); % l for Pb-212 /s; l=log(2)/t(1/2)
l4_v = log(2)/(60.6*60); % l for Bi-212 /s; l=log(2)/t(1/2)
l5_v = log(2)/2.99e-7; % l for Po-212 /s; l=log(2)/t(1/2)
l6_v = log(2)/(3.05*60); % l for Tl-208 /s; l=log(2)/t(1/2)
r41_v = 0.64; % Bi-212 branching to Po-212
r42_v = 0.36; % Bi-212 branching to Tl-208
% ———————————————————————–
% symbolic substitution of constants with "real" values
A1s = subs(A1, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A2s = subs(A2, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A3s = subs(A3, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A4s = subs(A4, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A5s = subs(A5, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A6s = subs(A6, [l1,l2,l3,l4,l5,l6,r41,r42], [l1_v,l2_v,l3_v,l4_v,l5_v,l6_v,r41_v,r42_v]);
A_sum = A1s + A2s + A3s + A4s + A5s + A6s; % sum of all activities
% plot section
hold on;
fplot(A1s,’Color’,’blue’);
fplot(A2s,’Color’,’red’);
fplot(A3s,’Color’,’green’);
fplot(A4s,’Color’,’yellow’);
fplot(A5s,’Color’,’magenta’);
fplot(A6s,’Color’,’black’);
fplot(A_sum,’Color’,’black’,’LineStyle’,’–‘);
hold off
% plot options
ax=gca;
ax.Title.String = {‘Decay of Rn-220’};
ax.YLim=[1e-15 3];
ax.XLim=[1e-4 5e6];
ax.YScale=’log’;
ax.XScale=’log’;
ax.XLabel.String=’t /s’;
ax.YLabel.String=’rel. activity A/A_0′;
grid on;
grid minor;
legend(‘Rn-220′,’Po-216′,’Pb-212′,’Bi-212′,’Po-212′,’Tl-208′,’A_{sum}’,’Location’,’best’); bateman, decay, radioactivity, radon220, examplefile MATLAB Answers — New Questions
Unable to open the requested feature. Check your internet connection and proxy settings in MATLAB Web preferences and then try starting the feature again. Detailed information: Error code: -6 Error message: ERR_FILE_NOT_FOUND
i can’t set up iti can’t set up it i can’t set up it set up MATLAB Answers — New Questions
I required MATLAB Code that Calculate SNR of two Devices communicating Via IRS, Including Channel gains, phase shift value etc
Two Devices are cpmmunicating Via IRS. !st Channel Gain is From Source to IRS, 2nd Channel Gain is From IRS to Destination, IRS Having 32 Reflecting Elements and Apply Phase Shift. Plot SNR w.r.t No of IRS Eleemnts. How SINR is changingTwo Devices are cpmmunicating Via IRS. !st Channel Gain is From Source to IRS, 2nd Channel Gain is From IRS to Destination, IRS Having 32 Reflecting Elements and Apply Phase Shift. Plot SNR w.r.t No of IRS Eleemnts. How SINR is changing Two Devices are cpmmunicating Via IRS. !st Channel Gain is From Source to IRS, 2nd Channel Gain is From IRS to Destination, IRS Having 32 Reflecting Elements and Apply Phase Shift. Plot SNR w.r.t No of IRS Eleemnts. How SINR is changing irs, snr MATLAB Answers — New Questions
Hysteesis Design tool can’t display graphics– -Powergui Error
Hi,
I’m trying to use powergui Hysteesis Design tool,but it can’t display graphics.Report “matlab.graphics. internal. figfile.Figfile/read> (hobiect, eventdata)power hysteresis DisplayPushButton Callback , hob ject,eventdata,guidata(hobject)“
Does anyone have information on this error?
Thanks!Hi,
I’m trying to use powergui Hysteesis Design tool,but it can’t display graphics.Report “matlab.graphics. internal. figfile.Figfile/read> (hobiect, eventdata)power hysteresis DisplayPushButton Callback , hob ject,eventdata,guidata(hobject)“
Does anyone have information on this error?
Thanks! Hi,
I’m trying to use powergui Hysteesis Design tool,but it can’t display graphics.Report “matlab.graphics. internal. figfile.Figfile/read> (hobiect, eventdata)power hysteresis DisplayPushButton Callback , hob ject,eventdata,guidata(hobject)“
Does anyone have information on this error?
Thanks! hysteesis design tool MATLAB Answers — New Questions
Running Feather RP2040 with Simulink
I’m working on a project which requires me to take data from sensors connected to a Feather RP2040 and simulate it live on Simulink. I can’t seem to figure out how to read I2C from the Feather to MatLab. All the add-ons I could find were for Arduinos or RP hardware other than the RP2040. Is there anyway to get around that? All I need is to get the data from the Feather to MatLab in the moment.I’m working on a project which requires me to take data from sensors connected to a Feather RP2040 and simulate it live on Simulink. I can’t seem to figure out how to read I2C from the Feather to MatLab. All the add-ons I could find were for Arduinos or RP hardware other than the RP2040. Is there anyway to get around that? All I need is to get the data from the Feather to MatLab in the moment. I’m working on a project which requires me to take data from sensors connected to a Feather RP2040 and simulate it live on Simulink. I can’t seem to figure out how to read I2C from the Feather to MatLab. All the add-ons I could find were for Arduinos or RP hardware other than the RP2040. Is there anyway to get around that? All I need is to get the data from the Feather to MatLab in the moment. feather, rp2040, simulink, matlab MATLAB Answers — New Questions
wait for several system calls to finish
I am calling three external programs and can only continue in the matlab program after all programs are finished. Each of them work independently of each other and can start at the same time
[staus1,~] = system(‘cmd1 &’);
[staus2,~] = system(‘cmd2 &’);
[staus3,~] = system(‘cmd3 &’);
% how to check if all of them are finished?
Using ampersand & symbol, I reached that they start nearly at the same time, but how can I check when they are all finished? In my case, the returned status variables can be zero (successful) or negative (not successful). Hence, checking status for any value does not help, I guess.I am calling three external programs and can only continue in the matlab program after all programs are finished. Each of them work independently of each other and can start at the same time
[staus1,~] = system(‘cmd1 &’);
[staus2,~] = system(‘cmd2 &’);
[staus3,~] = system(‘cmd3 &’);
% how to check if all of them are finished?
Using ampersand & symbol, I reached that they start nearly at the same time, but how can I check when they are all finished? In my case, the returned status variables can be zero (successful) or negative (not successful). Hence, checking status for any value does not help, I guess. I am calling three external programs and can only continue in the matlab program after all programs are finished. Each of them work independently of each other and can start at the same time
[staus1,~] = system(‘cmd1 &’);
[staus2,~] = system(‘cmd2 &’);
[staus3,~] = system(‘cmd3 &’);
% how to check if all of them are finished?
Using ampersand & symbol, I reached that they start nearly at the same time, but how can I check when they are all finished? In my case, the returned status variables can be zero (successful) or negative (not successful). Hence, checking status for any value does not help, I guess. linux, system MATLAB Answers — New Questions
Dot product does not work for symbolic vectors
Hi, I’m working on dynamics simulation with matlab, so I have the vector r with the size of [3 1]. I examine the calculation
dot(r,r) – (r(1)^2+r(2)^2 +r(3)^2) and I got an answer different than 0. Is there any explanation for this ?
syms t g real
syms alpha1(t) beta1(t) gamma1(t)
syms m1 m2 m3 m4 real
syms h d1 d2 r1 r2 r3 r4 t1 t2 t3 L real
syms a b c d5 real
r = [(a*b*c*d5*m1*sin(conj(gamma1(t))-gamma(t)))/(-a*b*c*m1 +pi*m3*r1^2*t1 +pi*m1*r1^2*t1);
-(0.5000*(- a*b*c^2*m1 + a*b*c*m1*t1 + 3.1416*m3*r1^2*t1*t3 + 3.1416*m3*r1^2*t1^2))/(- a*b*c*m1 + 3.1416*m3*r1^2*t1 + 3.1416*m1*r1^2*t1);
-(a*b*c*d5*m1*cos(conj(gamma1(t)) – gamma1(t)))/(- a*b*c*m1 + 3.1416*m3*r1^2*t1 + 3.1416*m1*r1^2*t1) ];
r_x = r(1) ;
r_y = r(2) ;
r_z = r(3) ;
% dot minus sum of elements. This should be 0
% I think this is a problem with dot function of MATLAB.
dot(r,r) – (r_x^2 + r_y^2 + r_z^2 )Hi, I’m working on dynamics simulation with matlab, so I have the vector r with the size of [3 1]. I examine the calculation
dot(r,r) – (r(1)^2+r(2)^2 +r(3)^2) and I got an answer different than 0. Is there any explanation for this ?
syms t g real
syms alpha1(t) beta1(t) gamma1(t)
syms m1 m2 m3 m4 real
syms h d1 d2 r1 r2 r3 r4 t1 t2 t3 L real
syms a b c d5 real
r = [(a*b*c*d5*m1*sin(conj(gamma1(t))-gamma(t)))/(-a*b*c*m1 +pi*m3*r1^2*t1 +pi*m1*r1^2*t1);
-(0.5000*(- a*b*c^2*m1 + a*b*c*m1*t1 + 3.1416*m3*r1^2*t1*t3 + 3.1416*m3*r1^2*t1^2))/(- a*b*c*m1 + 3.1416*m3*r1^2*t1 + 3.1416*m1*r1^2*t1);
-(a*b*c*d5*m1*cos(conj(gamma1(t)) – gamma1(t)))/(- a*b*c*m1 + 3.1416*m3*r1^2*t1 + 3.1416*m1*r1^2*t1) ];
r_x = r(1) ;
r_y = r(2) ;
r_z = r(3) ;
% dot minus sum of elements. This should be 0
% I think this is a problem with dot function of MATLAB.
dot(r,r) – (r_x^2 + r_y^2 + r_z^2 ) Hi, I’m working on dynamics simulation with matlab, so I have the vector r with the size of [3 1]. I examine the calculation
dot(r,r) – (r(1)^2+r(2)^2 +r(3)^2) and I got an answer different than 0. Is there any explanation for this ?
syms t g real
syms alpha1(t) beta1(t) gamma1(t)
syms m1 m2 m3 m4 real
syms h d1 d2 r1 r2 r3 r4 t1 t2 t3 L real
syms a b c d5 real
r = [(a*b*c*d5*m1*sin(conj(gamma1(t))-gamma(t)))/(-a*b*c*m1 +pi*m3*r1^2*t1 +pi*m1*r1^2*t1);
-(0.5000*(- a*b*c^2*m1 + a*b*c*m1*t1 + 3.1416*m3*r1^2*t1*t3 + 3.1416*m3*r1^2*t1^2))/(- a*b*c*m1 + 3.1416*m3*r1^2*t1 + 3.1416*m1*r1^2*t1);
-(a*b*c*d5*m1*cos(conj(gamma1(t)) – gamma1(t)))/(- a*b*c*m1 + 3.1416*m3*r1^2*t1 + 3.1416*m1*r1^2*t1) ];
r_x = r(1) ;
r_y = r(2) ;
r_z = r(3) ;
% dot minus sum of elements. This should be 0
% I think this is a problem with dot function of MATLAB.
dot(r,r) – (r_x^2 + r_y^2 + r_z^2 ) dot, symbolics, dynamics, matrices MATLAB Answers — New Questions
how to resolve that error?
how to resolve that error?how to resolve that error? how to resolve that error? how to resolve that error? MATLAB Answers — New Questions