Tag Archives: matlab
For loop for symbolic expressions
I need to create a symbolic matrix of symbolic functions, each of which has an expression consisting of constants and other matrices.
I need to run for loop or anything else that does my job, to generate a matrix of the symbolic variables.
how do i Do that?I need to create a symbolic matrix of symbolic functions, each of which has an expression consisting of constants and other matrices.
I need to run for loop or anything else that does my job, to generate a matrix of the symbolic variables.
how do i Do that? I need to create a symbolic matrix of symbolic functions, each of which has an expression consisting of constants and other matrices.
I need to run for loop or anything else that does my job, to generate a matrix of the symbolic variables.
how do i Do that? symbolic matrix creation using for loop MATLAB Answers — New Questions
Hello, I own PX4 cube orange+. I can not make motor for drone run with px4 PWM Output block with that PX4 cube orange+. but it works for PX4. I use Matlab 2024a. help please!
Post Content Post Content px4 cube orange +, matlab2024a MATLAB Answers — New Questions
Singularity Problem trying to Solve a higher order ODE with boundary conditions by bvp4c
Hi, i’m trying to replicate the numerical solution of a recent paper "A macroeconomic model with
Heterogeneous and financially constrained intermediaries. Wouters, R (2019)"
(https://www.econstor.eu/bitstream/10419/207747/1/1067667695.pdf) but after many runs and different
modifications i always get the following issue:
elbarnew= 0.25; %(JCSC) Un valor de salida, siguiendo el rango prob de L&W (0.65,1.66)/(0.57, 3.02)
qlbarnew = 0.05; %(JCSC) Azar corto plazo, escoger inferior frente a qinf
eubar = 3; %(JCSC) Máximo valor de busqueda de e
KK = 500;
solinitF= bvpinit(linspace(elbarnew,eubar,KK),@Finitwithproduction_rw);
solF = bvp4c(@Fvecwithproduction_rw,@Fbcwithproduction_rw,solinitF,options);
Error using bvp4c
Unable to solve the collocation equations — a singular Jacobian encountered.
The problem is to solve a nonlinear ODE of second order with boundary conditions (q2prime), that’s the equation (32) of the
appendix A.4 from the paper. That is an expression of exogeneous parameters, the prime derivative (qprime) and the function itself
(q). The aim goal is to find a density function q(e) (it’s a price, so q>0) with argument "e" (e>0). The boundary conditions
are qprime(e_)=0 and qprime(e^)=0, where e_ is a lower limit (e_>0) and e^ a higher limit. The functions are:
function yinit = Finitwithproduction_rw(x)
% —- This function is the initial guess of the ODE solution, in the form of y(x) —–
global qprime elbarnew qlbarnew eubar qinf
% Note: Finitwithproduction returns a linear interpolation of functions q(e)
% (JCSC), returns [q(e), q'(e)]
qprime = (qinf – qlbarnew)/(eubar-elbarnew);
yinit = [qlbarnew + qprime*x
qprime];
end
function res=Fbcwithproduction_rw(ya, yb);
%(JCSC) Boundary Limits. The conditions
%required by the author (q'(e_) = 0, q'(e^-) = 0)
global qlbarnew
res=[%ya(1)-qlbarnew
ya(1)
yb(1)-0];
end
function dh=Fvecwithproduction_rw(x,y)
%(JCSC, 07-02-2024) Wouters Model
% Entrada x: valor de e; y=[q(e), q'(e)]
% Salida [q'(e), q”(e)]
global k delta kappa A iota m lambda zeta phi rho theta …
sigma alpha_ti alpha_sb alpha_h i w sigma_r sigma_e …
rr qprime q q2prime eta
%(JCSC) Here x is e in the paper. y is a vector y(x) = [q(x), q'(x)]
q=y(1,:);
qprime=y(2,:);
i = (delta + (q-1)./kappa); %(JCSC, 040224)
w = q.*k; %(JCSC ok)
%alpha_h = min(1, ((x.*k)./((1-lambda).*w))); %(JCSC, 040224)
alpha_h = min((1-lambda), ((x.*k)./w)); %(JCSC, 040224)
alpha_ti = ((((1-phi).*alpha_h.*(1-lambda)).^(-1)).*(zeta*(1-(qprime/q).*x).*sigma + …
(qprime./q).*x.*phi)-(phi./(1-phi)))./(zeta.*(1-(qprime./q).*x).*sigma + (1-m).*(qprime./q).*x.*phi); %(JCSC, 270124 ok)
sigma_e = (x.*(((1-phi).*m.*alpha_ti – 1).*sigma + (phi./zeta)))./(1-(1-phi).*m.*alpha_ti.*x.*(qprime./q)); %(JCSC, revisado 040224)
sigma_r = sigma + (qprime./q).*sigma_e;
alpha_sb = 1./(zeta.*sigma_r); %(JCSC,ok)
f = A – delta + ((1 – q.^2)./(2.*kappa)); %(JCSC, nuevo modelo ajustado con la inclusión del empleo)
X1 = (1-phi).*m.*alpha_ti + phi.*alpha_sb; %(JCSC, revisado ok)
FF = (q./x) – X1.*qprime; %(JCSC, revisado ok)
G = kappa.*f.*FF + q.*((phi + m.*(1-phi)) – X1).*theta.*q.*qprime; %(JCSC, revisado, 270124)
rr = rho + theta.*(i-delta)-((0.5.*theta.*qprime.*qprime./(kappa.*f)).*(sigma_e.^2)) – …
0.5.*theta.*(theta+1).*((sigma-(q.*qprime.*sigma_e./(kappa.*f))).^2);
A0 = 0.5.*(sigma_e.^2) + ((qprime.*kappa.*f)./G).*(0.5.*X1.*(sigma_e.^2) – …
0.5.*theta.*(q.*q./kappa.*f).*(sigma.^2).*(m-phi.*m+phi-X1)).*((q./G).*(0.5.*theta.*q.*qprime.*X1.*(sigma_e.^2) + …
0.5.*theta.*q.*FF.*(sigma_e.^2)));
A1 = -q.*(eta+i-delta) + X1.*(-delta.*q+A.*(1-iota)) + q.*(m-m.*phi+phi-X1).*rr;
A2 = kappa.*f.*FF.*rr – theta.*q.*q.*qprime.*(-eta-i+delta) – theta.*q.*qprime.*X1.*(A.*(1-iota) – delta.*q);
q2prime = (1./A0).*(alpha_ti.*(sigma_r.^2)./q) – A.*(1-iota) + delta.*q – qprime.*(kappa.*f./G).*A1 + (q./G).*A2;
dh=[y(2,:)
q2prime];
end
In the paper, the author identified values of "e" between 0.65 and 1.66 but running this range
on my code it doesn’t work, so i had problems either identifiying the initial values or some equation inside
the Fvecwithproduction function, but i checked each one to avoid errors or anything else. The Fvecwithproduction
function just has the different equations required to get the equation (32) in the paper append.
From a numerical point of view, I would like to get some help or recommendation to establish the origin of the error, or some
help on matlab to find or explore initial values in this kind of exercises.
Thanks a lot
Juan Camilo,Hi, i’m trying to replicate the numerical solution of a recent paper "A macroeconomic model with
Heterogeneous and financially constrained intermediaries. Wouters, R (2019)"
(https://www.econstor.eu/bitstream/10419/207747/1/1067667695.pdf) but after many runs and different
modifications i always get the following issue:
elbarnew= 0.25; %(JCSC) Un valor de salida, siguiendo el rango prob de L&W (0.65,1.66)/(0.57, 3.02)
qlbarnew = 0.05; %(JCSC) Azar corto plazo, escoger inferior frente a qinf
eubar = 3; %(JCSC) Máximo valor de busqueda de e
KK = 500;
solinitF= bvpinit(linspace(elbarnew,eubar,KK),@Finitwithproduction_rw);
solF = bvp4c(@Fvecwithproduction_rw,@Fbcwithproduction_rw,solinitF,options);
Error using bvp4c
Unable to solve the collocation equations — a singular Jacobian encountered.
The problem is to solve a nonlinear ODE of second order with boundary conditions (q2prime), that’s the equation (32) of the
appendix A.4 from the paper. That is an expression of exogeneous parameters, the prime derivative (qprime) and the function itself
(q). The aim goal is to find a density function q(e) (it’s a price, so q>0) with argument "e" (e>0). The boundary conditions
are qprime(e_)=0 and qprime(e^)=0, where e_ is a lower limit (e_>0) and e^ a higher limit. The functions are:
function yinit = Finitwithproduction_rw(x)
% —- This function is the initial guess of the ODE solution, in the form of y(x) —–
global qprime elbarnew qlbarnew eubar qinf
% Note: Finitwithproduction returns a linear interpolation of functions q(e)
% (JCSC), returns [q(e), q'(e)]
qprime = (qinf – qlbarnew)/(eubar-elbarnew);
yinit = [qlbarnew + qprime*x
qprime];
end
function res=Fbcwithproduction_rw(ya, yb);
%(JCSC) Boundary Limits. The conditions
%required by the author (q'(e_) = 0, q'(e^-) = 0)
global qlbarnew
res=[%ya(1)-qlbarnew
ya(1)
yb(1)-0];
end
function dh=Fvecwithproduction_rw(x,y)
%(JCSC, 07-02-2024) Wouters Model
% Entrada x: valor de e; y=[q(e), q'(e)]
% Salida [q'(e), q”(e)]
global k delta kappa A iota m lambda zeta phi rho theta …
sigma alpha_ti alpha_sb alpha_h i w sigma_r sigma_e …
rr qprime q q2prime eta
%(JCSC) Here x is e in the paper. y is a vector y(x) = [q(x), q'(x)]
q=y(1,:);
qprime=y(2,:);
i = (delta + (q-1)./kappa); %(JCSC, 040224)
w = q.*k; %(JCSC ok)
%alpha_h = min(1, ((x.*k)./((1-lambda).*w))); %(JCSC, 040224)
alpha_h = min((1-lambda), ((x.*k)./w)); %(JCSC, 040224)
alpha_ti = ((((1-phi).*alpha_h.*(1-lambda)).^(-1)).*(zeta*(1-(qprime/q).*x).*sigma + …
(qprime./q).*x.*phi)-(phi./(1-phi)))./(zeta.*(1-(qprime./q).*x).*sigma + (1-m).*(qprime./q).*x.*phi); %(JCSC, 270124 ok)
sigma_e = (x.*(((1-phi).*m.*alpha_ti – 1).*sigma + (phi./zeta)))./(1-(1-phi).*m.*alpha_ti.*x.*(qprime./q)); %(JCSC, revisado 040224)
sigma_r = sigma + (qprime./q).*sigma_e;
alpha_sb = 1./(zeta.*sigma_r); %(JCSC,ok)
f = A – delta + ((1 – q.^2)./(2.*kappa)); %(JCSC, nuevo modelo ajustado con la inclusión del empleo)
X1 = (1-phi).*m.*alpha_ti + phi.*alpha_sb; %(JCSC, revisado ok)
FF = (q./x) – X1.*qprime; %(JCSC, revisado ok)
G = kappa.*f.*FF + q.*((phi + m.*(1-phi)) – X1).*theta.*q.*qprime; %(JCSC, revisado, 270124)
rr = rho + theta.*(i-delta)-((0.5.*theta.*qprime.*qprime./(kappa.*f)).*(sigma_e.^2)) – …
0.5.*theta.*(theta+1).*((sigma-(q.*qprime.*sigma_e./(kappa.*f))).^2);
A0 = 0.5.*(sigma_e.^2) + ((qprime.*kappa.*f)./G).*(0.5.*X1.*(sigma_e.^2) – …
0.5.*theta.*(q.*q./kappa.*f).*(sigma.^2).*(m-phi.*m+phi-X1)).*((q./G).*(0.5.*theta.*q.*qprime.*X1.*(sigma_e.^2) + …
0.5.*theta.*q.*FF.*(sigma_e.^2)));
A1 = -q.*(eta+i-delta) + X1.*(-delta.*q+A.*(1-iota)) + q.*(m-m.*phi+phi-X1).*rr;
A2 = kappa.*f.*FF.*rr – theta.*q.*q.*qprime.*(-eta-i+delta) – theta.*q.*qprime.*X1.*(A.*(1-iota) – delta.*q);
q2prime = (1./A0).*(alpha_ti.*(sigma_r.^2)./q) – A.*(1-iota) + delta.*q – qprime.*(kappa.*f./G).*A1 + (q./G).*A2;
dh=[y(2,:)
q2prime];
end
In the paper, the author identified values of "e" between 0.65 and 1.66 but running this range
on my code it doesn’t work, so i had problems either identifiying the initial values or some equation inside
the Fvecwithproduction function, but i checked each one to avoid errors or anything else. The Fvecwithproduction
function just has the different equations required to get the equation (32) in the paper append.
From a numerical point of view, I would like to get some help or recommendation to establish the origin of the error, or some
help on matlab to find or explore initial values in this kind of exercises.
Thanks a lot
Juan Camilo, Hi, i’m trying to replicate the numerical solution of a recent paper "A macroeconomic model with
Heterogeneous and financially constrained intermediaries. Wouters, R (2019)"
(https://www.econstor.eu/bitstream/10419/207747/1/1067667695.pdf) but after many runs and different
modifications i always get the following issue:
elbarnew= 0.25; %(JCSC) Un valor de salida, siguiendo el rango prob de L&W (0.65,1.66)/(0.57, 3.02)
qlbarnew = 0.05; %(JCSC) Azar corto plazo, escoger inferior frente a qinf
eubar = 3; %(JCSC) Máximo valor de busqueda de e
KK = 500;
solinitF= bvpinit(linspace(elbarnew,eubar,KK),@Finitwithproduction_rw);
solF = bvp4c(@Fvecwithproduction_rw,@Fbcwithproduction_rw,solinitF,options);
Error using bvp4c
Unable to solve the collocation equations — a singular Jacobian encountered.
The problem is to solve a nonlinear ODE of second order with boundary conditions (q2prime), that’s the equation (32) of the
appendix A.4 from the paper. That is an expression of exogeneous parameters, the prime derivative (qprime) and the function itself
(q). The aim goal is to find a density function q(e) (it’s a price, so q>0) with argument "e" (e>0). The boundary conditions
are qprime(e_)=0 and qprime(e^)=0, where e_ is a lower limit (e_>0) and e^ a higher limit. The functions are:
function yinit = Finitwithproduction_rw(x)
% —- This function is the initial guess of the ODE solution, in the form of y(x) —–
global qprime elbarnew qlbarnew eubar qinf
% Note: Finitwithproduction returns a linear interpolation of functions q(e)
% (JCSC), returns [q(e), q'(e)]
qprime = (qinf – qlbarnew)/(eubar-elbarnew);
yinit = [qlbarnew + qprime*x
qprime];
end
function res=Fbcwithproduction_rw(ya, yb);
%(JCSC) Boundary Limits. The conditions
%required by the author (q'(e_) = 0, q'(e^-) = 0)
global qlbarnew
res=[%ya(1)-qlbarnew
ya(1)
yb(1)-0];
end
function dh=Fvecwithproduction_rw(x,y)
%(JCSC, 07-02-2024) Wouters Model
% Entrada x: valor de e; y=[q(e), q'(e)]
% Salida [q'(e), q”(e)]
global k delta kappa A iota m lambda zeta phi rho theta …
sigma alpha_ti alpha_sb alpha_h i w sigma_r sigma_e …
rr qprime q q2prime eta
%(JCSC) Here x is e in the paper. y is a vector y(x) = [q(x), q'(x)]
q=y(1,:);
qprime=y(2,:);
i = (delta + (q-1)./kappa); %(JCSC, 040224)
w = q.*k; %(JCSC ok)
%alpha_h = min(1, ((x.*k)./((1-lambda).*w))); %(JCSC, 040224)
alpha_h = min((1-lambda), ((x.*k)./w)); %(JCSC, 040224)
alpha_ti = ((((1-phi).*alpha_h.*(1-lambda)).^(-1)).*(zeta*(1-(qprime/q).*x).*sigma + …
(qprime./q).*x.*phi)-(phi./(1-phi)))./(zeta.*(1-(qprime./q).*x).*sigma + (1-m).*(qprime./q).*x.*phi); %(JCSC, 270124 ok)
sigma_e = (x.*(((1-phi).*m.*alpha_ti – 1).*sigma + (phi./zeta)))./(1-(1-phi).*m.*alpha_ti.*x.*(qprime./q)); %(JCSC, revisado 040224)
sigma_r = sigma + (qprime./q).*sigma_e;
alpha_sb = 1./(zeta.*sigma_r); %(JCSC,ok)
f = A – delta + ((1 – q.^2)./(2.*kappa)); %(JCSC, nuevo modelo ajustado con la inclusión del empleo)
X1 = (1-phi).*m.*alpha_ti + phi.*alpha_sb; %(JCSC, revisado ok)
FF = (q./x) – X1.*qprime; %(JCSC, revisado ok)
G = kappa.*f.*FF + q.*((phi + m.*(1-phi)) – X1).*theta.*q.*qprime; %(JCSC, revisado, 270124)
rr = rho + theta.*(i-delta)-((0.5.*theta.*qprime.*qprime./(kappa.*f)).*(sigma_e.^2)) – …
0.5.*theta.*(theta+1).*((sigma-(q.*qprime.*sigma_e./(kappa.*f))).^2);
A0 = 0.5.*(sigma_e.^2) + ((qprime.*kappa.*f)./G).*(0.5.*X1.*(sigma_e.^2) – …
0.5.*theta.*(q.*q./kappa.*f).*(sigma.^2).*(m-phi.*m+phi-X1)).*((q./G).*(0.5.*theta.*q.*qprime.*X1.*(sigma_e.^2) + …
0.5.*theta.*q.*FF.*(sigma_e.^2)));
A1 = -q.*(eta+i-delta) + X1.*(-delta.*q+A.*(1-iota)) + q.*(m-m.*phi+phi-X1).*rr;
A2 = kappa.*f.*FF.*rr – theta.*q.*q.*qprime.*(-eta-i+delta) – theta.*q.*qprime.*X1.*(A.*(1-iota) – delta.*q);
q2prime = (1./A0).*(alpha_ti.*(sigma_r.^2)./q) – A.*(1-iota) + delta.*q – qprime.*(kappa.*f./G).*A1 + (q./G).*A2;
dh=[y(2,:)
q2prime];
end
In the paper, the author identified values of "e" between 0.65 and 1.66 but running this range
on my code it doesn’t work, so i had problems either identifiying the initial values or some equation inside
the Fvecwithproduction function, but i checked each one to avoid errors or anything else. The Fvecwithproduction
function just has the different equations required to get the equation (32) in the paper append.
From a numerical point of view, I would like to get some help or recommendation to establish the origin of the error, or some
help on matlab to find or explore initial values in this kind of exercises.
Thanks a lot
Juan Camilo, doe, ordinary differential equations, singularity, initial values ode MATLAB Answers — New Questions
State-Space Model: Automatically naming InputName / OutputName based on InputGroup, OutputGroup
If you take a MIMO state-space model and assign a single name to either the InputName or OutputName property, MATLAB intelligently adds indices to the name for you.
For example, the following will make the input names be u(1), u(2), u(3), u(4)
%Create random model with 4 states, 4 inputs, 4 outputs
G = rss(4,4,4);
%Rename all 4 inputs
G.InputName = ‘u’;
I would like to rename a subset of the inputs (or outputs) to an indexed name. For example, I might want to break my four inputs above into a control group u(1), u(2) and a disturbance group w(1), w(2). However, if I attempt to do this, MATLAB no longer indexes the name. Instead it gives them the same name and warns me that I have duplicate names. This seems like a poor approach.
%Try to rename as inputs and disturbances
G.InputName(1:2) = {‘u’};
G.InputName(3:4) = {‘w’};
The above will just set the names of inputs 1 and 2 to ‘u’, and 3 and 4 to ‘w’. Currently I am manually achieving what I want:
for k = 1:2
G.InputName(k) = {[‘u(‘ num2str(k) ‘)’]};
end
for k = 3:4
G.InputName(k) = {[‘w(‘ num2str(k-2) ‘)’]};
end
Obviously the above is not a painful workaround. But I’m wondering if I’m missing a better approach? I know the InputGroup and OutputGroup allows me to group channels. But this does not link up with the connect() function, which looks at the InputName and OutputName properties.If you take a MIMO state-space model and assign a single name to either the InputName or OutputName property, MATLAB intelligently adds indices to the name for you.
For example, the following will make the input names be u(1), u(2), u(3), u(4)
%Create random model with 4 states, 4 inputs, 4 outputs
G = rss(4,4,4);
%Rename all 4 inputs
G.InputName = ‘u’;
I would like to rename a subset of the inputs (or outputs) to an indexed name. For example, I might want to break my four inputs above into a control group u(1), u(2) and a disturbance group w(1), w(2). However, if I attempt to do this, MATLAB no longer indexes the name. Instead it gives them the same name and warns me that I have duplicate names. This seems like a poor approach.
%Try to rename as inputs and disturbances
G.InputName(1:2) = {‘u’};
G.InputName(3:4) = {‘w’};
The above will just set the names of inputs 1 and 2 to ‘u’, and 3 and 4 to ‘w’. Currently I am manually achieving what I want:
for k = 1:2
G.InputName(k) = {[‘u(‘ num2str(k) ‘)’]};
end
for k = 3:4
G.InputName(k) = {[‘w(‘ num2str(k-2) ‘)’]};
end
Obviously the above is not a painful workaround. But I’m wondering if I’m missing a better approach? I know the InputGroup and OutputGroup allows me to group channels. But this does not link up with the connect() function, which looks at the InputName and OutputName properties. If you take a MIMO state-space model and assign a single name to either the InputName or OutputName property, MATLAB intelligently adds indices to the name for you.
For example, the following will make the input names be u(1), u(2), u(3), u(4)
%Create random model with 4 states, 4 inputs, 4 outputs
G = rss(4,4,4);
%Rename all 4 inputs
G.InputName = ‘u’;
I would like to rename a subset of the inputs (or outputs) to an indexed name. For example, I might want to break my four inputs above into a control group u(1), u(2) and a disturbance group w(1), w(2). However, if I attempt to do this, MATLAB no longer indexes the name. Instead it gives them the same name and warns me that I have duplicate names. This seems like a poor approach.
%Try to rename as inputs and disturbances
G.InputName(1:2) = {‘u’};
G.InputName(3:4) = {‘w’};
The above will just set the names of inputs 1 and 2 to ‘u’, and 3 and 4 to ‘w’. Currently I am manually achieving what I want:
for k = 1:2
G.InputName(k) = {[‘u(‘ num2str(k) ‘)’]};
end
for k = 3:4
G.InputName(k) = {[‘w(‘ num2str(k-2) ‘)’]};
end
Obviously the above is not a painful workaround. But I’m wondering if I’m missing a better approach? I know the InputGroup and OutputGroup allows me to group channels. But this does not link up with the connect() function, which looks at the InputName and OutputName properties. state-space model, inputname MATLAB Answers — New Questions
canalyzer blf file to mat file conversion
This is not a question.This is an answer on how to do this with the famous thread that is contunuing but has no answers. I have uplaoded the files here.This is not a question.This is an answer on how to do this with the famous thread that is contunuing but has no answers. I have uplaoded the files here. This is not a question.This is an answer on how to do this with the famous thread that is contunuing but has no answers. I have uplaoded the files here. .blf, .mat, .asc, vector canalyzer MATLAB Answers — New Questions
How to install matlab runtime into spark work node?
how to install matlab runtime into spark work node?how to install matlab runtime into spark work node? how to install matlab runtime into spark work node? spark MATLAB Answers — New Questions
Does Simscape Specialized Power Systems blocks work with HDL Coder?
Hi, I’m getting errors generating HDL code using blocks from the SPS library. Want to know if this library is supported with HDL coderHi, I’m getting errors generating HDL code using blocks from the SPS library. Want to know if this library is supported with HDL coder Hi, I’m getting errors generating HDL code using blocks from the SPS library. Want to know if this library is supported with HDL coder hdl coder, sps simscape MATLAB Answers — New Questions
I would like to plot an interpolated 3d Surface between two faces, i.e. the third face of a truncated cone. my plot isn’t working but I’m not sure what is wrong
r1=0.5;
% t1=[(0:0.1:2*pi),0];
t1=0:0.1:2*pi;
X1=r1*cos(t1);
Y1=r1*sin(t1);
n1=numel(X1);
Z1=zeros(1,n1);
DT=delaunay(X1,Y1);
trisurf(DT,X1,Y1,Z1);
hold;
r2=0.25;
% t2=[(0:0.1:2*pi),0];
t2=0:0.1:2*pi;
X2=r2*cos(t2);
Y2=r2*sin(t2);
n2=numel(X2);
Z2=200*ones(1,n2);
DT2=delaunay(X2,Y2);
trisurf(DT2,X2,Y2,Z2);
X= [X1,X2];
Y=[Y1,Y2];
Z=[Z1,Z2];
[xq,yq]=meshgrid(X,Y);
zq=ones(126).*Z;
surf(xq,yq,zq);r1=0.5;
% t1=[(0:0.1:2*pi),0];
t1=0:0.1:2*pi;
X1=r1*cos(t1);
Y1=r1*sin(t1);
n1=numel(X1);
Z1=zeros(1,n1);
DT=delaunay(X1,Y1);
trisurf(DT,X1,Y1,Z1);
hold;
r2=0.25;
% t2=[(0:0.1:2*pi),0];
t2=0:0.1:2*pi;
X2=r2*cos(t2);
Y2=r2*sin(t2);
n2=numel(X2);
Z2=200*ones(1,n2);
DT2=delaunay(X2,Y2);
trisurf(DT2,X2,Y2,Z2);
X= [X1,X2];
Y=[Y1,Y2];
Z=[Z1,Z2];
[xq,yq]=meshgrid(X,Y);
zq=ones(126).*Z;
surf(xq,yq,zq); r1=0.5;
% t1=[(0:0.1:2*pi),0];
t1=0:0.1:2*pi;
X1=r1*cos(t1);
Y1=r1*sin(t1);
n1=numel(X1);
Z1=zeros(1,n1);
DT=delaunay(X1,Y1);
trisurf(DT,X1,Y1,Z1);
hold;
r2=0.25;
% t2=[(0:0.1:2*pi),0];
t2=0:0.1:2*pi;
X2=r2*cos(t2);
Y2=r2*sin(t2);
n2=numel(X2);
Z2=200*ones(1,n2);
DT2=delaunay(X2,Y2);
trisurf(DT2,X2,Y2,Z2);
X= [X1,X2];
Y=[Y1,Y2];
Z=[Z1,Z2];
[xq,yq]=meshgrid(X,Y);
zq=ones(126).*Z;
surf(xq,yq,zq); meshgrid, interpolate, surface plots MATLAB Answers — New Questions
Can’t open *.m files
Hello, I’m using MATLAB R2020b and there’s a problem while opening *.m files.
The error message says:
‘unarginchk’ is an unrecognized function or variable.
Error occurred: onCleanup (line 52)
unarginchk(1,1);
Error occurred: getnicedialoglocation (line 23)
c = onCleanup(@() close(convertData.hFig));
Error occurred: msgbox (line 332)
DefFigPos = getnicedialoglocation(DefFigPos, get(figureHandle, ‘Units’));
Error occurred: errordlg (line 59)
handle = msgbox(ErrorStringCell, dlgName, ‘error’, replace);
Error occurred: uiopen (line 185)
errordlg(err);Hello, I’m using MATLAB R2020b and there’s a problem while opening *.m files.
The error message says:
‘unarginchk’ is an unrecognized function or variable.
Error occurred: onCleanup (line 52)
unarginchk(1,1);
Error occurred: getnicedialoglocation (line 23)
c = onCleanup(@() close(convertData.hFig));
Error occurred: msgbox (line 332)
DefFigPos = getnicedialoglocation(DefFigPos, get(figureHandle, ‘Units’));
Error occurred: errordlg (line 59)
handle = msgbox(ErrorStringCell, dlgName, ‘error’, replace);
Error occurred: uiopen (line 185)
errordlg(err); Hello, I’m using MATLAB R2020b and there’s a problem while opening *.m files.
The error message says:
‘unarginchk’ is an unrecognized function or variable.
Error occurred: onCleanup (line 52)
unarginchk(1,1);
Error occurred: getnicedialoglocation (line 23)
c = onCleanup(@() close(convertData.hFig));
Error occurred: msgbox (line 332)
DefFigPos = getnicedialoglocation(DefFigPos, get(figureHandle, ‘Units’));
Error occurred: errordlg (line 59)
handle = msgbox(ErrorStringCell, dlgName, ‘error’, replace);
Error occurred: uiopen (line 185)
errordlg(err); #error_opening_m_files MATLAB Answers — New Questions
How to define the size between multiple symbolic variables and sort these symbolic elements
for example:
syms c1 c2 c3; abs(c1) >= abs(c2) >= abs(c3)
a = 1/4 – c2/4 – c3/4 – c1/4;
b = c2/4 – c1/4 + c3/4 + 1/4;
c = c1/4 – c2/4 + c3/4 + 1/4;
d = c1/4 + c2/4 – c3/4 + 1/4;
A = [a,b,c,d];
A_asc = sort(A)
Obviously, this is not the answer I wanted. The answer I want is [1/4 – c2/4 – c3/4 – c1/4,c2/4 – c1/4 + c3/4 + 1/4,c1/4 – c2/4 + c3/4 + 1/4,c1/4 + c2/4 – c3/4 + 1/4]for example:
syms c1 c2 c3; abs(c1) >= abs(c2) >= abs(c3)
a = 1/4 – c2/4 – c3/4 – c1/4;
b = c2/4 – c1/4 + c3/4 + 1/4;
c = c1/4 – c2/4 + c3/4 + 1/4;
d = c1/4 + c2/4 – c3/4 + 1/4;
A = [a,b,c,d];
A_asc = sort(A)
Obviously, this is not the answer I wanted. The answer I want is [1/4 – c2/4 – c3/4 – c1/4,c2/4 – c1/4 + c3/4 + 1/4,c1/4 – c2/4 + c3/4 + 1/4,c1/4 + c2/4 – c3/4 + 1/4] for example:
syms c1 c2 c3; abs(c1) >= abs(c2) >= abs(c3)
a = 1/4 – c2/4 – c3/4 – c1/4;
b = c2/4 – c1/4 + c3/4 + 1/4;
c = c1/4 – c2/4 + c3/4 + 1/4;
d = c1/4 + c2/4 – c3/4 + 1/4;
A = [a,b,c,d];
A_asc = sort(A)
Obviously, this is not the answer I wanted. The answer I want is [1/4 – c2/4 – c3/4 – c1/4,c2/4 – c1/4 + c3/4 + 1/4,c1/4 – c2/4 + c3/4 + 1/4,c1/4 + c2/4 – c3/4 + 1/4] sort MATLAB Answers — New Questions
What is this code
1º Prova
1- Um filtro FIR possui os seguintes coeficientes de filtro: [1,1]. Qual é sua resposta em frequência? Utilize o MATLAB para calcular a saída com uma entrada cos(2pi100t) amostrada com uma frequência de amostragem de 200 Hz.
Resposta:
Filtro fir ( ak= 0, k >/ 1)
Bk= [1 1]
Ak = [1]
Xn =xc(nTa) = xc( n/fa)
Xn = cos(2pi.100.n/200) = cos (pi.n )
Yn= filter ( b, a, Xn )
MATLAB
b =[ 1 1 ]
a= [1 ]
n= 1:50;
Xn=cos(pi*n)
Yn= filter ( b,a,Xn)
Stem(n, Yn)
———————————————————————————————————————————————————————————————–
2- Para os seguintes sistemas em que x[n] é a entrada e y[n] a saída classifique as seguintes sentenças em verdadeiras (V) ou falsas (F). Justifique suas respostas. (itens não justificados serão desconsiderados)
a. ( V ) Em um determinado circuito elétrico um sinal analógico x(t) de frequencia desconhecida passa por um filtro passa-baixas com frequencia de corte de 15 kHz, gerando um sinal analógico x ́(t). Se x ́(t) for amostrado a 28,5 kHz para gerar uma sequencia discreta x[n] haverá aliasing.
FN=30kHz, o sinal deveria ser amostrado com pelo menos esse
valor para não ocorrer aliasing
b. ( F ) A transformada Z de x[n] = a^n .u [−n] é dada por:
x(z) = 1/1-a^-1.z, |z| > |a|
Utilizando a propriedade
X[n] = a^n u[-n] ——— x(z) ?
X[n] =a^n u[n]?——— x(z) = 1/1-a.z^-1
Rx
|z| > |a|
Propriedade de reversão
X[-n] ——— transformada z
X (z^-1) ROC 1/rx
Portanto, x[n] = (1/a)^-n u[ -n]
ROC está errada a transformada está correta
c. ( F ) O filtro FIR com coeficientes = [−17,29,107,62] tem
resposta em frequência dada por
H(z) = 1/ +17-29z^-1 -107z^-2 -62 z^-3
Filtro FIR, não tem realimentação, convolução
Ak= 0 e k> 1
Y[n] = xn*hn—— yz = Xzhz —— hz = yz/xz
Yn=1/a0 ( fórmula do somatório )
Yn = -17xn+29x(n-1)+107x(n-2)+62x(n-3)
Passar para termos de z
N-1 = z^-1 …
No final fica
Yz/xz= hz = -17+29z^-1 +107z^-2+62z^-3
d. ( F ) O filtro IIR com coeficientes de alimentação direta bk= [−17,29,107,62] e coeficiente de realimentação ak = [4, −7, −26, +15] tem resposta em frequência dada por=
Hz = -17+29z^-1 +107z^-2+62z^-3 / 1-(4z^-1-7z^-2-26z^-3-15z^-4)
Resposta
Filtro iir
Bk= [-17, 29, 107, 62]
Ak= [4, -7, -26, -15 ]
Coeficientes de realimentação
Y[n]= fórmula do somatório
Y[n]= -17xn+29xn-1+ 107xn-2 é assim vai…
Depois a parte do nY
Y(z) soma os dois
E passa para termos de z
Resposta final
Yz/xz = -17 +29z^-1 +107z^-2 + 62z^-3 / 1-(-4z^-1+7z^-2+26z^-3+15z^-1)
———————————————————————————————————————————————————————————————–
3 -)
Y[n]-y[n-1]-2y[n-2]= 0
Y[0]=1
Y[1]=0
a) solução da equação
Somatório de a0=1 até 2 akz^-k= a0z^-0 +a1z^-1+a2z^-2= 1-z^-1+2z^-2= 0
Cálculo das raizes
MATLAB P=[1-1-2], roots (p) { 2 e -1
Para obter a1 e a2 usar CIS
Y[0]= 1= a1(2)^0 + a2(-1)^0= a1+a2=1
Y[1]=0 = a1(2)^1+a2(-1)^1
2a1 -a2 = 0
2a1= a2
2 em 1
A1+2a1= 1
A1= 1/3 A2 = 2/3
Sist causal
Y[n] = A1z1^n + A2z2^n = [ 1/3 (2)^n + 2/3(-1) ^n] u[n]
Matlab
i =0:20;
Yi = (1/3).(2^i)+(2/3) . (-1).^i;
Stem (yi)
———————————————————————————————————————————————————————————————–
2º Prova
1-
a. ( F ) Se a frequencia de amostragem de Nyquist para xc (t) é Fa a frequencia de amostragem para gc(t) =xc (2t) é Fa’=2Fa
Xc (t)
Xc(2t)
Reamostragem
Com m>1
Fn = fa
Fn= fa’ = 2fa
F’a= fa/2
b. (F) A transformada Z de x[n] = a^nu[-n] é dada por
X(z)= 1/1-az^-1, z<a
Pela definição x(z) = somatório de menos infinito a infinito x[n].z^-n
x(z)= somatório a^n.u[-n].z^-n= somatório a^n.z^-n = somatório (a.z^-1)^n
= somatório (a.z^-1)^-n= somatório (a^-1.z)^n= 1/1-a^-1.z
c. (V) o filtro FIR com coeficientes bk=[-17,29,107,62] tem resposta em frequência dada por
h(z)= -17+29z^-1+107z^-2+62z^-3
d. ( F ) O filtro IIR com coeficientes de alimentação direta bk=
[−17,29,107,62] e coeficiente de realimentação ak=
[4, −7, −26, +15] tem resposta em frequência dada por
hz=-17+29z^-1+107z^-2+62z^-3/ 1-(4z^-1-7z^-2-26z^-3-15z^-4)
e. V ) A função de transferência h(z)= z-2/z(z-1/3) representa um sistema causal.
———————————————————————————————————————————————————————————————–
———————————————————————————————————————————————————————————————–
3) (4,0) Suponha que desejamos processar o sinal de tempo continuo
xc(t) = 3 cos(2pi1000t) + 7 cos(2pi1100t)
usando um sistema no tempo discreto. A frequência de amostragem é de 4kHz. O processamento realizado sobre as amostras do sinal no tempo discreto x[n] é descrito pela seguinte equação de diferenças
y[n] =x [n] + x[n− 2]
Exiba o gráfico para a saída discreta y[n].
X[n] = xc (nTa) = xc( n/fa) =
X[n] = 3 cos (pi/2 . n ) + 7 cos( 11pi n /40)
Matlab
b= [ 1 0 1 ]
a= [ 1]
n= 1:50;
Xn = 3.cos(0.5*pi*n) +7*cos(11*pi*n/40);
Yn= filter(b, a, xn );
Stem(n,Yn)
1) Está equação de diferenças descreve um sistema causal.
y[n] -0,25y[n-2] + x[n-1]=x[n]
R:verdadeiro, pois todos os termos são ou presentes ou passados
B) o sinal discreto a seguir é periódico com período de π/6
y[n] = cos(0,125πn)
y[n] = cos(0,125πn)=y[n] = cos(0,125πn+k*π/6)
n=n+k*π/6
0=k*π/6
Falso, não é periódico com π/6
C) o sistema a seguir é homogêneo
y[n]=log(x[n])
y[n]= T(c*x[n])= c T(x[n]) multiplicando por uma constante para verificar homogeneidade
y[n]= log(c x[n])= log c + log x[n]
Falso, não satisfez a condição inicial.
D) O acumulador dado pela expressão abaixo é variante ao deslocamento.
y[n] = ∑ x[n]
Para verificar aplicar um deslocamento na entrada x[n] por n0 e se y[n] mudar igualmente
y[n]=∑ x[k] => y[n-n0]= ∑ x[k]
Limite do somatorio k=-∞ até n-n0
X1[n]= x[n-n0]
y[n]= ∑ x1[n] = ∑ x[k-n0]
Mudança de índice no somatorio
y1[n] =∑ x[k]
Limite do somatorio k1=- ∞ até n-n0
y[n] = x[n] é invariante no deslocamento.
———————————————————————————————————————————————————-
Implementar função do matlab para fazer o gráfico de
X[n] ={ 0 se n diferente de n0
1 se n for igual a n0
function[x,n] = degrau(n0,n1,n2);
n=[n1:n2];
x=[(n-n0)<=0];
end
——————————————————————————————————————————————————
Considere o sistema descrito pelas equações de diferença
Y[n] -0,9 yn[n-1 ] = x[n]
Encontre a saída
Se a entrada for
X[n] = u[n] e se a condição inicial for y [-1] = 2
Resposta
O sistema não depende de amostras futuras de x[n], sendo assim causal
Y[z] -0,9 [ y[-1]+ z^-1y(z) ]= x[z]
Y[z] -0,9y[-1]-0,9z^-1y[z]= x[z]
Y[z] (1-0,9z^-1)= x[z]+0,9y[-1]
Y[z]= x[z] 1/1-0,9z^-1 + 1,8 .1/1-0,9z^-1
[A1/1-z^-1 + A2/1-0,9z^-1 ]+1,8.1/1-0,9.z^-1
————————————————————————
n=[0:7]; x= (1/4).^n; xic = [1,-2]; b=[1]; a=[1,-3/2,1/2]; format long;
%jogar no comando
%y1 = filter(b,a,x,xic)
%y2 = (1/3)*(1/4).^n+(1/2).^n+(2/3)*ones(1,8)
——————————————–
b=[1,0,-1];a=[1,0,-0.81]; w=[0:500]*pi/500; H=freqz(b,a,w); magH=abs(H);faseH=angle(H); subplot(2,1,1);plot(w/pi,magH);grid xlabel(‘Frequencias (pi units)’);ylabel (‘magnitude’);title(‘magnitude RF’); subplot(2,1,2);plot(w/pi,faseH);grid xlabel(‘Frequencias (pi units)’);ylabel (‘fase’);title(‘Fase RF’);
——————————————–
function [x,n]=stepseq(n0,n1,n2) n=n1:n2; x=[(n-n0)>=0]; b = [1]; a=[1,-1,0.9]; n=[-20:120]; h=impz(b,a,n); subplot(2,1,1); stem(n,h); title(‘impulse Response’); xlabel(‘n’); ylabel(‘h(n)’) x= stepseq(0,-20,120); s = filter(b,a,x); subplot(2,1,2); stem(n,s) title(‘Step Response’); xlabel(‘n’); ylabel(‘s(n)’)
———————————————
function [x,n]=stepseq(n0,n1,n2) n=n1:n2; x=[(n-n0)>=0]; end
———————————————
b = [1,0,-1]; a=[1,0,-0.81]; %[R,p,C] = residuez(b,a);———- utilizar no comando
——————————————–
x= stepseq(0,-20,120); s = filter(b,a,x); subplot(2,1,2); stem(n,s) title(‘Step Response’); xlabel(‘n’); ylabel(‘s(n)’)
——————————————–
b=[1]; a=[1,-.9]; Y=[2]; xic=filtic(b,a,Y); n=[0:10];xn=stepseq(0,0,10); yn=filter(b,a,xn,xic); subplot(2,1,1);stem(n,xn); xlabel(‘n’); ylabel(‘x[n]’); title(‘entrada – x[n]’); subplot(2,1,2);stem(n,yn); xlabel(‘n’); ylabel(‘y[n]’); title(‘saída – y[n]’);
——————————————–
b=[1];a=[1,-0.9] [H,w]=freqz(b,a,100); magH=abs(H);faseH=angle(H); subplot(2,1,1);plot(w/pi,magH);grid xlabel(‘Frequencias (pi units)’);ylabel (‘magnitude’);title(‘magnitude RF’); subplot(2,1,2);plot(w/pi,faseH);grid xlabel(‘Frequencias (pi units)’);ylabel (‘fase’);title(‘Fase RF’);1º Prova
1- Um filtro FIR possui os seguintes coeficientes de filtro: [1,1]. Qual é sua resposta em frequência? Utilize o MATLAB para calcular a saída com uma entrada cos(2pi100t) amostrada com uma frequência de amostragem de 200 Hz.
Resposta:
Filtro fir ( ak= 0, k >/ 1)
Bk= [1 1]
Ak = [1]
Xn =xc(nTa) = xc( n/fa)
Xn = cos(2pi.100.n/200) = cos (pi.n )
Yn= filter ( b, a, Xn )
MATLAB
b =[ 1 1 ]
a= [1 ]
n= 1:50;
Xn=cos(pi*n)
Yn= filter ( b,a,Xn)
Stem(n, Yn)
———————————————————————————————————————————————————————————————–
2- Para os seguintes sistemas em que x[n] é a entrada e y[n] a saída classifique as seguintes sentenças em verdadeiras (V) ou falsas (F). Justifique suas respostas. (itens não justificados serão desconsiderados)
a. ( V ) Em um determinado circuito elétrico um sinal analógico x(t) de frequencia desconhecida passa por um filtro passa-baixas com frequencia de corte de 15 kHz, gerando um sinal analógico x ́(t). Se x ́(t) for amostrado a 28,5 kHz para gerar uma sequencia discreta x[n] haverá aliasing.
FN=30kHz, o sinal deveria ser amostrado com pelo menos esse
valor para não ocorrer aliasing
b. ( F ) A transformada Z de x[n] = a^n .u [−n] é dada por:
x(z) = 1/1-a^-1.z, |z| > |a|
Utilizando a propriedade
X[n] = a^n u[-n] ——— x(z) ?
X[n] =a^n u[n]?——— x(z) = 1/1-a.z^-1
Rx
|z| > |a|
Propriedade de reversão
X[-n] ——— transformada z
X (z^-1) ROC 1/rx
Portanto, x[n] = (1/a)^-n u[ -n]
ROC está errada a transformada está correta
c. ( F ) O filtro FIR com coeficientes = [−17,29,107,62] tem
resposta em frequência dada por
H(z) = 1/ +17-29z^-1 -107z^-2 -62 z^-3
Filtro FIR, não tem realimentação, convolução
Ak= 0 e k> 1
Y[n] = xn*hn—— yz = Xzhz —— hz = yz/xz
Yn=1/a0 ( fórmula do somatório )
Yn = -17xn+29x(n-1)+107x(n-2)+62x(n-3)
Passar para termos de z
N-1 = z^-1 …
No final fica
Yz/xz= hz = -17+29z^-1 +107z^-2+62z^-3
d. ( F ) O filtro IIR com coeficientes de alimentação direta bk= [−17,29,107,62] e coeficiente de realimentação ak = [4, −7, −26, +15] tem resposta em frequência dada por=
Hz = -17+29z^-1 +107z^-2+62z^-3 / 1-(4z^-1-7z^-2-26z^-3-15z^-4)
Resposta
Filtro iir
Bk= [-17, 29, 107, 62]
Ak= [4, -7, -26, -15 ]
Coeficientes de realimentação
Y[n]= fórmula do somatório
Y[n]= -17xn+29xn-1+ 107xn-2 é assim vai…
Depois a parte do nY
Y(z) soma os dois
E passa para termos de z
Resposta final
Yz/xz = -17 +29z^-1 +107z^-2 + 62z^-3 / 1-(-4z^-1+7z^-2+26z^-3+15z^-1)
———————————————————————————————————————————————————————————————–
3 -)
Y[n]-y[n-1]-2y[n-2]= 0
Y[0]=1
Y[1]=0
a) solução da equação
Somatório de a0=1 até 2 akz^-k= a0z^-0 +a1z^-1+a2z^-2= 1-z^-1+2z^-2= 0
Cálculo das raizes
MATLAB P=[1-1-2], roots (p) { 2 e -1
Para obter a1 e a2 usar CIS
Y[0]= 1= a1(2)^0 + a2(-1)^0= a1+a2=1
Y[1]=0 = a1(2)^1+a2(-1)^1
2a1 -a2 = 0
2a1= a2
2 em 1
A1+2a1= 1
A1= 1/3 A2 = 2/3
Sist causal
Y[n] = A1z1^n + A2z2^n = [ 1/3 (2)^n + 2/3(-1) ^n] u[n]
Matlab
i =0:20;
Yi = (1/3).(2^i)+(2/3) . (-1).^i;
Stem (yi)
———————————————————————————————————————————————————————————————–
2º Prova
1-
a. ( F ) Se a frequencia de amostragem de Nyquist para xc (t) é Fa a frequencia de amostragem para gc(t) =xc (2t) é Fa’=2Fa
Xc (t)
Xc(2t)
Reamostragem
Com m>1
Fn = fa
Fn= fa’ = 2fa
F’a= fa/2
b. (F) A transformada Z de x[n] = a^nu[-n] é dada por
X(z)= 1/1-az^-1, z<a
Pela definição x(z) = somatório de menos infinito a infinito x[n].z^-n
x(z)= somatório a^n.u[-n].z^-n= somatório a^n.z^-n = somatório (a.z^-1)^n
= somatório (a.z^-1)^-n= somatório (a^-1.z)^n= 1/1-a^-1.z
c. (V) o filtro FIR com coeficientes bk=[-17,29,107,62] tem resposta em frequência dada por
h(z)= -17+29z^-1+107z^-2+62z^-3
d. ( F ) O filtro IIR com coeficientes de alimentação direta bk=
[−17,29,107,62] e coeficiente de realimentação ak=
[4, −7, −26, +15] tem resposta em frequência dada por
hz=-17+29z^-1+107z^-2+62z^-3/ 1-(4z^-1-7z^-2-26z^-3-15z^-4)
e. V ) A função de transferência h(z)= z-2/z(z-1/3) representa um sistema causal.
———————————————————————————————————————————————————————————————–
———————————————————————————————————————————————————————————————–
3) (4,0) Suponha que desejamos processar o sinal de tempo continuo
xc(t) = 3 cos(2pi1000t) + 7 cos(2pi1100t)
usando um sistema no tempo discreto. A frequência de amostragem é de 4kHz. O processamento realizado sobre as amostras do sinal no tempo discreto x[n] é descrito pela seguinte equação de diferenças
y[n] =x [n] + x[n− 2]
Exiba o gráfico para a saída discreta y[n].
X[n] = xc (nTa) = xc( n/fa) =
X[n] = 3 cos (pi/2 . n ) + 7 cos( 11pi n /40)
Matlab
b= [ 1 0 1 ]
a= [ 1]
n= 1:50;
Xn = 3.cos(0.5*pi*n) +7*cos(11*pi*n/40);
Yn= filter(b, a, xn );
Stem(n,Yn)
1) Está equação de diferenças descreve um sistema causal.
y[n] -0,25y[n-2] + x[n-1]=x[n]
R:verdadeiro, pois todos os termos são ou presentes ou passados
B) o sinal discreto a seguir é periódico com período de π/6
y[n] = cos(0,125πn)
y[n] = cos(0,125πn)=y[n] = cos(0,125πn+k*π/6)
n=n+k*π/6
0=k*π/6
Falso, não é periódico com π/6
C) o sistema a seguir é homogêneo
y[n]=log(x[n])
y[n]= T(c*x[n])= c T(x[n]) multiplicando por uma constante para verificar homogeneidade
y[n]= log(c x[n])= log c + log x[n]
Falso, não satisfez a condição inicial.
D) O acumulador dado pela expressão abaixo é variante ao deslocamento.
y[n] = ∑ x[n]
Para verificar aplicar um deslocamento na entrada x[n] por n0 e se y[n] mudar igualmente
y[n]=∑ x[k] => y[n-n0]= ∑ x[k]
Limite do somatorio k=-∞ até n-n0
X1[n]= x[n-n0]
y[n]= ∑ x1[n] = ∑ x[k-n0]
Mudança de índice no somatorio
y1[n] =∑ x[k]
Limite do somatorio k1=- ∞ até n-n0
y[n] = x[n] é invariante no deslocamento.
———————————————————————————————————————————————————-
Implementar função do matlab para fazer o gráfico de
X[n] ={ 0 se n diferente de n0
1 se n for igual a n0
function[x,n] = degrau(n0,n1,n2);
n=[n1:n2];
x=[(n-n0)<=0];
end
——————————————————————————————————————————————————
Considere o sistema descrito pelas equações de diferença
Y[n] -0,9 yn[n-1 ] = x[n]
Encontre a saída
Se a entrada for
X[n] = u[n] e se a condição inicial for y [-1] = 2
Resposta
O sistema não depende de amostras futuras de x[n], sendo assim causal
Y[z] -0,9 [ y[-1]+ z^-1y(z) ]= x[z]
Y[z] -0,9y[-1]-0,9z^-1y[z]= x[z]
Y[z] (1-0,9z^-1)= x[z]+0,9y[-1]
Y[z]= x[z] 1/1-0,9z^-1 + 1,8 .1/1-0,9z^-1
[A1/1-z^-1 + A2/1-0,9z^-1 ]+1,8.1/1-0,9.z^-1
————————————————————————
n=[0:7]; x= (1/4).^n; xic = [1,-2]; b=[1]; a=[1,-3/2,1/2]; format long;
%jogar no comando
%y1 = filter(b,a,x,xic)
%y2 = (1/3)*(1/4).^n+(1/2).^n+(2/3)*ones(1,8)
——————————————–
b=[1,0,-1];a=[1,0,-0.81]; w=[0:500]*pi/500; H=freqz(b,a,w); magH=abs(H);faseH=angle(H); subplot(2,1,1);plot(w/pi,magH);grid xlabel(‘Frequencias (pi units)’);ylabel (‘magnitude’);title(‘magnitude RF’); subplot(2,1,2);plot(w/pi,faseH);grid xlabel(‘Frequencias (pi units)’);ylabel (‘fase’);title(‘Fase RF’);
——————————————–
function [x,n]=stepseq(n0,n1,n2) n=n1:n2; x=[(n-n0)>=0]; b = [1]; a=[1,-1,0.9]; n=[-20:120]; h=impz(b,a,n); subplot(2,1,1); stem(n,h); title(‘impulse Response’); xlabel(‘n’); ylabel(‘h(n)’) x= stepseq(0,-20,120); s = filter(b,a,x); subplot(2,1,2); stem(n,s) title(‘Step Response’); xlabel(‘n’); ylabel(‘s(n)’)
———————————————
function [x,n]=stepseq(n0,n1,n2) n=n1:n2; x=[(n-n0)>=0]; end
———————————————
b = [1,0,-1]; a=[1,0,-0.81]; %[R,p,C] = residuez(b,a);———- utilizar no comando
——————————————–
x= stepseq(0,-20,120); s = filter(b,a,x); subplot(2,1,2); stem(n,s) title(‘Step Response’); xlabel(‘n’); ylabel(‘s(n)’)
——————————————–
b=[1]; a=[1,-.9]; Y=[2]; xic=filtic(b,a,Y); n=[0:10];xn=stepseq(0,0,10); yn=filter(b,a,xn,xic); subplot(2,1,1);stem(n,xn); xlabel(‘n’); ylabel(‘x[n]’); title(‘entrada – x[n]’); subplot(2,1,2);stem(n,yn); xlabel(‘n’); ylabel(‘y[n]’); title(‘saída – y[n]’);
——————————————–
b=[1];a=[1,-0.9] [H,w]=freqz(b,a,100); magH=abs(H);faseH=angle(H); subplot(2,1,1);plot(w/pi,magH);grid xlabel(‘Frequencias (pi units)’);ylabel (‘magnitude’);title(‘magnitude RF’); subplot(2,1,2);plot(w/pi,faseH);grid xlabel(‘Frequencias (pi units)’);ylabel (‘fase’);title(‘Fase RF’); 1º Prova
1- Um filtro FIR possui os seguintes coeficientes de filtro: [1,1]. Qual é sua resposta em frequência? Utilize o MATLAB para calcular a saída com uma entrada cos(2pi100t) amostrada com uma frequência de amostragem de 200 Hz.
Resposta:
Filtro fir ( ak= 0, k >/ 1)
Bk= [1 1]
Ak = [1]
Xn =xc(nTa) = xc( n/fa)
Xn = cos(2pi.100.n/200) = cos (pi.n )
Yn= filter ( b, a, Xn )
MATLAB
b =[ 1 1 ]
a= [1 ]
n= 1:50;
Xn=cos(pi*n)
Yn= filter ( b,a,Xn)
Stem(n, Yn)
———————————————————————————————————————————————————————————————–
2- Para os seguintes sistemas em que x[n] é a entrada e y[n] a saída classifique as seguintes sentenças em verdadeiras (V) ou falsas (F). Justifique suas respostas. (itens não justificados serão desconsiderados)
a. ( V ) Em um determinado circuito elétrico um sinal analógico x(t) de frequencia desconhecida passa por um filtro passa-baixas com frequencia de corte de 15 kHz, gerando um sinal analógico x ́(t). Se x ́(t) for amostrado a 28,5 kHz para gerar uma sequencia discreta x[n] haverá aliasing.
FN=30kHz, o sinal deveria ser amostrado com pelo menos esse
valor para não ocorrer aliasing
b. ( F ) A transformada Z de x[n] = a^n .u [−n] é dada por:
x(z) = 1/1-a^-1.z, |z| > |a|
Utilizando a propriedade
X[n] = a^n u[-n] ——— x(z) ?
X[n] =a^n u[n]?——— x(z) = 1/1-a.z^-1
Rx
|z| > |a|
Propriedade de reversão
X[-n] ——— transformada z
X (z^-1) ROC 1/rx
Portanto, x[n] = (1/a)^-n u[ -n]
ROC está errada a transformada está correta
c. ( F ) O filtro FIR com coeficientes = [−17,29,107,62] tem
resposta em frequência dada por
H(z) = 1/ +17-29z^-1 -107z^-2 -62 z^-3
Filtro FIR, não tem realimentação, convolução
Ak= 0 e k> 1
Y[n] = xn*hn—— yz = Xzhz —— hz = yz/xz
Yn=1/a0 ( fórmula do somatório )
Yn = -17xn+29x(n-1)+107x(n-2)+62x(n-3)
Passar para termos de z
N-1 = z^-1 …
No final fica
Yz/xz= hz = -17+29z^-1 +107z^-2+62z^-3
d. ( F ) O filtro IIR com coeficientes de alimentação direta bk= [−17,29,107,62] e coeficiente de realimentação ak = [4, −7, −26, +15] tem resposta em frequência dada por=
Hz = -17+29z^-1 +107z^-2+62z^-3 / 1-(4z^-1-7z^-2-26z^-3-15z^-4)
Resposta
Filtro iir
Bk= [-17, 29, 107, 62]
Ak= [4, -7, -26, -15 ]
Coeficientes de realimentação
Y[n]= fórmula do somatório
Y[n]= -17xn+29xn-1+ 107xn-2 é assim vai…
Depois a parte do nY
Y(z) soma os dois
E passa para termos de z
Resposta final
Yz/xz = -17 +29z^-1 +107z^-2 + 62z^-3 / 1-(-4z^-1+7z^-2+26z^-3+15z^-1)
———————————————————————————————————————————————————————————————–
3 -)
Y[n]-y[n-1]-2y[n-2]= 0
Y[0]=1
Y[1]=0
a) solução da equação
Somatório de a0=1 até 2 akz^-k= a0z^-0 +a1z^-1+a2z^-2= 1-z^-1+2z^-2= 0
Cálculo das raizes
MATLAB P=[1-1-2], roots (p) { 2 e -1
Para obter a1 e a2 usar CIS
Y[0]= 1= a1(2)^0 + a2(-1)^0= a1+a2=1
Y[1]=0 = a1(2)^1+a2(-1)^1
2a1 -a2 = 0
2a1= a2
2 em 1
A1+2a1= 1
A1= 1/3 A2 = 2/3
Sist causal
Y[n] = A1z1^n + A2z2^n = [ 1/3 (2)^n + 2/3(-1) ^n] u[n]
Matlab
i =0:20;
Yi = (1/3).(2^i)+(2/3) . (-1).^i;
Stem (yi)
———————————————————————————————————————————————————————————————–
2º Prova
1-
a. ( F ) Se a frequencia de amostragem de Nyquist para xc (t) é Fa a frequencia de amostragem para gc(t) =xc (2t) é Fa’=2Fa
Xc (t)
Xc(2t)
Reamostragem
Com m>1
Fn = fa
Fn= fa’ = 2fa
F’a= fa/2
b. (F) A transformada Z de x[n] = a^nu[-n] é dada por
X(z)= 1/1-az^-1, z<a
Pela definição x(z) = somatório de menos infinito a infinito x[n].z^-n
x(z)= somatório a^n.u[-n].z^-n= somatório a^n.z^-n = somatório (a.z^-1)^n
= somatório (a.z^-1)^-n= somatório (a^-1.z)^n= 1/1-a^-1.z
c. (V) o filtro FIR com coeficientes bk=[-17,29,107,62] tem resposta em frequência dada por
h(z)= -17+29z^-1+107z^-2+62z^-3
d. ( F ) O filtro IIR com coeficientes de alimentação direta bk=
[−17,29,107,62] e coeficiente de realimentação ak=
[4, −7, −26, +15] tem resposta em frequência dada por
hz=-17+29z^-1+107z^-2+62z^-3/ 1-(4z^-1-7z^-2-26z^-3-15z^-4)
e. V ) A função de transferência h(z)= z-2/z(z-1/3) representa um sistema causal.
———————————————————————————————————————————————————————————————–
———————————————————————————————————————————————————————————————–
3) (4,0) Suponha que desejamos processar o sinal de tempo continuo
xc(t) = 3 cos(2pi1000t) + 7 cos(2pi1100t)
usando um sistema no tempo discreto. A frequência de amostragem é de 4kHz. O processamento realizado sobre as amostras do sinal no tempo discreto x[n] é descrito pela seguinte equação de diferenças
y[n] =x [n] + x[n− 2]
Exiba o gráfico para a saída discreta y[n].
X[n] = xc (nTa) = xc( n/fa) =
X[n] = 3 cos (pi/2 . n ) + 7 cos( 11pi n /40)
Matlab
b= [ 1 0 1 ]
a= [ 1]
n= 1:50;
Xn = 3.cos(0.5*pi*n) +7*cos(11*pi*n/40);
Yn= filter(b, a, xn );
Stem(n,Yn)
1) Está equação de diferenças descreve um sistema causal.
y[n] -0,25y[n-2] + x[n-1]=x[n]
R:verdadeiro, pois todos os termos são ou presentes ou passados
B) o sinal discreto a seguir é periódico com período de π/6
y[n] = cos(0,125πn)
y[n] = cos(0,125πn)=y[n] = cos(0,125πn+k*π/6)
n=n+k*π/6
0=k*π/6
Falso, não é periódico com π/6
C) o sistema a seguir é homogêneo
y[n]=log(x[n])
y[n]= T(c*x[n])= c T(x[n]) multiplicando por uma constante para verificar homogeneidade
y[n]= log(c x[n])= log c + log x[n]
Falso, não satisfez a condição inicial.
D) O acumulador dado pela expressão abaixo é variante ao deslocamento.
y[n] = ∑ x[n]
Para verificar aplicar um deslocamento na entrada x[n] por n0 e se y[n] mudar igualmente
y[n]=∑ x[k] => y[n-n0]= ∑ x[k]
Limite do somatorio k=-∞ até n-n0
X1[n]= x[n-n0]
y[n]= ∑ x1[n] = ∑ x[k-n0]
Mudança de índice no somatorio
y1[n] =∑ x[k]
Limite do somatorio k1=- ∞ até n-n0
y[n] = x[n] é invariante no deslocamento.
———————————————————————————————————————————————————-
Implementar função do matlab para fazer o gráfico de
X[n] ={ 0 se n diferente de n0
1 se n for igual a n0
function[x,n] = degrau(n0,n1,n2);
n=[n1:n2];
x=[(n-n0)<=0];
end
——————————————————————————————————————————————————
Considere o sistema descrito pelas equações de diferença
Y[n] -0,9 yn[n-1 ] = x[n]
Encontre a saída
Se a entrada for
X[n] = u[n] e se a condição inicial for y [-1] = 2
Resposta
O sistema não depende de amostras futuras de x[n], sendo assim causal
Y[z] -0,9 [ y[-1]+ z^-1y(z) ]= x[z]
Y[z] -0,9y[-1]-0,9z^-1y[z]= x[z]
Y[z] (1-0,9z^-1)= x[z]+0,9y[-1]
Y[z]= x[z] 1/1-0,9z^-1 + 1,8 .1/1-0,9z^-1
[A1/1-z^-1 + A2/1-0,9z^-1 ]+1,8.1/1-0,9.z^-1
————————————————————————
n=[0:7]; x= (1/4).^n; xic = [1,-2]; b=[1]; a=[1,-3/2,1/2]; format long;
%jogar no comando
%y1 = filter(b,a,x,xic)
%y2 = (1/3)*(1/4).^n+(1/2).^n+(2/3)*ones(1,8)
——————————————–
b=[1,0,-1];a=[1,0,-0.81]; w=[0:500]*pi/500; H=freqz(b,a,w); magH=abs(H);faseH=angle(H); subplot(2,1,1);plot(w/pi,magH);grid xlabel(‘Frequencias (pi units)’);ylabel (‘magnitude’);title(‘magnitude RF’); subplot(2,1,2);plot(w/pi,faseH);grid xlabel(‘Frequencias (pi units)’);ylabel (‘fase’);title(‘Fase RF’);
——————————————–
function [x,n]=stepseq(n0,n1,n2) n=n1:n2; x=[(n-n0)>=0]; b = [1]; a=[1,-1,0.9]; n=[-20:120]; h=impz(b,a,n); subplot(2,1,1); stem(n,h); title(‘impulse Response’); xlabel(‘n’); ylabel(‘h(n)’) x= stepseq(0,-20,120); s = filter(b,a,x); subplot(2,1,2); stem(n,s) title(‘Step Response’); xlabel(‘n’); ylabel(‘s(n)’)
———————————————
function [x,n]=stepseq(n0,n1,n2) n=n1:n2; x=[(n-n0)>=0]; end
———————————————
b = [1,0,-1]; a=[1,0,-0.81]; %[R,p,C] = residuez(b,a);———- utilizar no comando
——————————————–
x= stepseq(0,-20,120); s = filter(b,a,x); subplot(2,1,2); stem(n,s) title(‘Step Response’); xlabel(‘n’); ylabel(‘s(n)’)
——————————————–
b=[1]; a=[1,-.9]; Y=[2]; xic=filtic(b,a,Y); n=[0:10];xn=stepseq(0,0,10); yn=filter(b,a,xn,xic); subplot(2,1,1);stem(n,xn); xlabel(‘n’); ylabel(‘x[n]’); title(‘entrada – x[n]’); subplot(2,1,2);stem(n,yn); xlabel(‘n’); ylabel(‘y[n]’); title(‘saída – y[n]’);
——————————————–
b=[1];a=[1,-0.9] [H,w]=freqz(b,a,100); magH=abs(H);faseH=angle(H); subplot(2,1,1);plot(w/pi,magH);grid xlabel(‘Frequencias (pi units)’);ylabel (‘magnitude’);title(‘magnitude RF’); subplot(2,1,2);plot(w/pi,faseH);grid xlabel(‘Frequencias (pi units)’);ylabel (‘fase’);title(‘Fase RF’); whats, code, pds MATLAB Answers — New Questions
How to plot slope fields?
Plot a line of slope f(t, y) at each point (t, y) in the grid defined by tspan, yspan and
gridStep. In other words, make an array of t values from tspan(1) to tspan(2) and
incremented by gridStep, and also an array of y values from yspan(1) to yspan(2) and
incremented by gridStep, and plot a line of slope odefun(t(i),y(j)) at each point
(t(i),y(j)). (Note that the line should have length at most equal to gridStep.)Plot a line of slope f(t, y) at each point (t, y) in the grid defined by tspan, yspan and
gridStep. In other words, make an array of t values from tspan(1) to tspan(2) and
incremented by gridStep, and also an array of y values from yspan(1) to yspan(2) and
incremented by gridStep, and plot a line of slope odefun(t(i),y(j)) at each point
(t(i),y(j)). (Note that the line should have length at most equal to gridStep.) Plot a line of slope f(t, y) at each point (t, y) in the grid defined by tspan, yspan and
gridStep. In other words, make an array of t values from tspan(1) to tspan(2) and
incremented by gridStep, and also an array of y values from yspan(1) to yspan(2) and
incremented by gridStep, and plot a line of slope odefun(t(i),y(j)) at each point
(t(i),y(j)). (Note that the line should have length at most equal to gridStep.) slope field MATLAB Answers — New Questions
display colored output in command window
Can the numbers be displayed in command window in some colors. I mean … 1 should be displayed in red color and 2 should be displayed in blue color.
Regards, Siva
Edit [27 Mar 2012, 08:25 BST – OK] Erased email address.Can the numbers be displayed in command window in some colors. I mean … 1 should be displayed in red color and 2 should be displayed in blue color.
Regards, Siva
Edit [27 Mar 2012, 08:25 BST – OK] Erased email address. Can the numbers be displayed in command window in some colors. I mean … 1 should be displayed in red color and 2 should be displayed in blue color.
Regards, Siva
Edit [27 Mar 2012, 08:25 BST – OK] Erased email address. command window, cprintf MATLAB Answers — New Questions
Solver Stop Prematurely as new equation added
Hi, How do I solve this? keep getting the solve stop prematurely. May I know what should I do? this happen when i try added another equation in my model. Any Suggestion?Hi, How do I solve this? keep getting the solve stop prematurely. May I know what should I do? this happen when i try added another equation in my model. Any Suggestion? Hi, How do I solve this? keep getting the solve stop prematurely. May I know what should I do? this happen when i try added another equation in my model. Any Suggestion? solve prematurely MATLAB Answers — New Questions
how to do 2D Extrapolation
hello community, I’d like to ask your support to find a solution on how to extrapolate.
my x,y,z data:
xCtT_dtPwrIncr = [3996.106 8501.15 12007.17 17002.3 34004.6 42505.75 46991.94 51006.9 59508.05 68009.2 76491.5 84992.65]; %
yCtT_dtPwrIncr = [-7.04 9.96]’;
zCtT_dtPwrIncr = …
[ 0.064502 0.105005 0.119995 0.130005 0.15 0.169995 0.205005 0.219995 0.230005 0.244995 0.26001 0.269995;
0.064502 0.105005 0.119995 0.13999 0.180005 0.219995 0.23999 0.25 0.26499 0.275 0.280005 0.3;];
for j=1:length(time)
if CtT_flgErr(j)==0 && EnvT_t(j) < 9.96 %
CtTdtIncEng(j,1) = interp2(xCtT_dtPwrIncr,yCtT_dtPwrIncr,zCtT_dtPwrIncr,PhyMod_pwrClntEntry(j),EnvT_t(j));
else
CtTdtIncEng(j,1) = interp2(xCtT_dtPwrIncr,yCtT_dtPwrIncr,zCtT_dtPwrIncr,PhyMod_pwrClntEntry(j),EnvT_t(j),’linear’,’extrap’);
end
in this casa my data doesn’t meet first condition because in my data EnvT_t > 9.96
the second condition gives me this error:
Error using interp2 (line 61)
EXTRAPVAL must be a scalar.
any recomendation on how can I extrapolate my data when EnvT_t(j) > 9.96?
I’m using these vectors/data
time EnvT_t PhyMod_pwrClntEntry CtT_flgErr
1 18.9600000000000 0 0
2 18.9600000000000 0 0
3 18.9600000000000 0 0
4 18.9600000000000 0 0
5 18.9600000000000 0 0
6 18.9600000000000 0 0
7 18.9600000000000 0 0
8 18.9600000000000 0 0
9 18.9600000000000 0 0
10 18.9600000000000 0 0
11 18.9600000000000 0 0
12 18.9600000000000 0 0
13 18.9600000000000 0 0
14 18.9600000000000 0 0
15 18.9600000000000 0 0
16 18.9600000000000 0 0
17 18.9600000000000 0 0
18 18.9600000000000 0 0
19 18.9600000000000 0 0
20 18.9600000000000 0 0
21 18.9600000000000 0 0
22 18.9600000000000 0 0
23 18.9600000000000 0 0
24 18.9600000000000 0 0
25 18.9600000000000 0 0
26 18.9600000000000 0 0
27 18.9600000000000 0 0
28 18.9600000000000 0 0
29 18.9600000000000 0 0
30 18.9600000000000 0 0
31 18.9600000000000 0 0
32 18.9600000000000 0 0
33 18.9600000000000 0 0
34 18.9600000000000 0 0
35 18.9600000000000 0 0
36 18.9600000000000 0 0
37 18.9600000000000 0 0
38 18.9600000000000 0 0
39 18.9600000000000 0 0
40 18.9600000000000 0 0
41 18.9600000000000 0 0
42 18.9600000000000 0 0
43 18.9600000000000 0 0
44 18.9600000000000 0 0
45 18.9600000000000 0 0
46 18.9600000000000 0 0
47 18.9600000000000 0 0
48 18.9600000000000 0 0
49 18.9600000000000 0 0
50 18.9600000000000 0 0
51 18.9600000000000 0 0
52 18.9600000000000 0 0
53 18.9600000000000 0 0
54 18.9600000000000 0 0
55 18.9600000000000 0 0
56 18.9600000000000 0 0
57 18.9600000000000 0 0
58 18.9600000000000 0 0
59 18.9600000000000 0 0
60 18.9600000000000 0 0
61 18.9600000000000 0 0
62 18.9600000000000 0 0
63 18.9600000000000 0 0
64 18.9600000000000 0 0
65 18.9600000000000 0 0
66 18.9600000000000 0 0
67 18.9600000000000 0 0
68 18.9600000000000 0 0
69 18.9600000000000 0 0
70 18.9600000000000 0 0
71 18.9600000000000 0 0
72 18.9600000000000 0 0
73 18.9600000000000 0 0
74 18.9600000000000 0 0
75 18.9600000000000 0 0
76 18.9600000000000 0 0
77 18.9600000000000 0 0
78 18.9600000000000 0 0
79 18.9600000000000 0 – 0
80 18.9600000000000 0 0
81 18.9600000000000 0 0
82 18.9600000000000 0 0
83 18.9600000000000 0 0
84 18.9600000000000 0 0
85 18.9600000000000 0 0
86 18.9600000000000 0 0
87 18.9600000000000 0 0
88 18.9600000000000 74587.6927815338 0
89 18.9600000000000 63579.5521233545 0
90 18.9600000000000 49612.0311854933 0
91 18.9600000000000 43033.5361688759 0
92 18.9600000000000 40790.4390142126 0
93 18.9600000000000 39301.3240964109 0
94 18.9600000000000 38924.3329779801 0
95 18.9600000000000 38905.4834220586 0
96 18.9600000000000 38283.4480766478 0
97 18.9600000000000 38094.9525174324 0
98 18.9600000000000 37849.9082904524 0
99 18.9600000000000 36643.5367114738 0
100 18.9600000000000 35964.9526982984 0
101 18.9600000000000 35983.8022542199 0
102 18.9600000000000 36304.2447048861 0
103 18.9600000000000 35983.8022542199 0
104 18.9600000000000 35870.7049186907 0
105 18.9600000000000 35474.8642443383 0
106 18.9600000000000 35908.4040305337 0
107 18.9600000000000 35380.6164647306 0
108 18.9600000000000 35964.9526982984 0
109 18.9600000000000 35870.7049186907 0
110 18.9600000000000 35663.3598035537 0
111 18.9600000000000 35512.5633561814 0
112 18.9600000000000 35041.3244581429 0
113 18.9600000000000 34871.6784548490 0
114 18.9600000000000 35644.5102476322 0
115 18.9600000000000 35248.6695732798 0
116 18.9600000000000 35927.2535864553 0
117 18.9600000000000 35644.5102476322 0
118 18.9600000000000 35456.0146884168 0
119 18.9600000000000 36209.9969252784 0
120 18.9600000000000 35964.9526982984 0
121 18.9600000000000 35889.5544746122 0
122 18.9600000000000 35946.1031423768 0
123 18.9600000000000 35474.8642443383 0
124 18.9600000000000 36266.5455930430 0
125 18.9600000000000 36473.8907081799 0
126 18.9600000000000 35701.0589153968 0
127 18.9600000000000 36379.6429285722 0
128 18.9600000000000 36228.8464811999 0
129 18.9600000000000 36700.0853792384 0
130 18.9600000000000 20508.3168426355 0
131 18.9600000000000 23448.8475663958 0
132 18.9600000000000 23995.4846881204 0
133 18.9600000000000 22129.3786518880 0
134 18.9600000000000 21281.1486354187 0
135 18.9600000000000 26822.9180763514 0
136 18.9600000000000 35173.2713495937 0
137 18.9600000000000 45634.7748860484 0
138 18.9600000000000 44767.6953136575 0
139 18.9600000000000 28632.4754448193 0
140 18.9600000000000 24768.3164809036 0
141 18.9600000000000 24334.7766947082 0
142 18.9600000000000 39866.8107740571 0
143 18.9600000000000 35286.3686851229 0
144 18.9600000000000 44541.5006425991 0
145 18.9600000000000 34155.3953298305 0
146 18.9600000000000 26559.0242934499 0
147 18.9600000000000 23411.1484545527 0
148 18.9600000000000 22789.1131091419 0
149 18.9600000000000 22883.3608887496 0
150 18.9600000000000 22807.9626650634 1hello community, I’d like to ask your support to find a solution on how to extrapolate.
my x,y,z data:
xCtT_dtPwrIncr = [3996.106 8501.15 12007.17 17002.3 34004.6 42505.75 46991.94 51006.9 59508.05 68009.2 76491.5 84992.65]; %
yCtT_dtPwrIncr = [-7.04 9.96]’;
zCtT_dtPwrIncr = …
[ 0.064502 0.105005 0.119995 0.130005 0.15 0.169995 0.205005 0.219995 0.230005 0.244995 0.26001 0.269995;
0.064502 0.105005 0.119995 0.13999 0.180005 0.219995 0.23999 0.25 0.26499 0.275 0.280005 0.3;];
for j=1:length(time)
if CtT_flgErr(j)==0 && EnvT_t(j) < 9.96 %
CtTdtIncEng(j,1) = interp2(xCtT_dtPwrIncr,yCtT_dtPwrIncr,zCtT_dtPwrIncr,PhyMod_pwrClntEntry(j),EnvT_t(j));
else
CtTdtIncEng(j,1) = interp2(xCtT_dtPwrIncr,yCtT_dtPwrIncr,zCtT_dtPwrIncr,PhyMod_pwrClntEntry(j),EnvT_t(j),’linear’,’extrap’);
end
in this casa my data doesn’t meet first condition because in my data EnvT_t > 9.96
the second condition gives me this error:
Error using interp2 (line 61)
EXTRAPVAL must be a scalar.
any recomendation on how can I extrapolate my data when EnvT_t(j) > 9.96?
I’m using these vectors/data
time EnvT_t PhyMod_pwrClntEntry CtT_flgErr
1 18.9600000000000 0 0
2 18.9600000000000 0 0
3 18.9600000000000 0 0
4 18.9600000000000 0 0
5 18.9600000000000 0 0
6 18.9600000000000 0 0
7 18.9600000000000 0 0
8 18.9600000000000 0 0
9 18.9600000000000 0 0
10 18.9600000000000 0 0
11 18.9600000000000 0 0
12 18.9600000000000 0 0
13 18.9600000000000 0 0
14 18.9600000000000 0 0
15 18.9600000000000 0 0
16 18.9600000000000 0 0
17 18.9600000000000 0 0
18 18.9600000000000 0 0
19 18.9600000000000 0 0
20 18.9600000000000 0 0
21 18.9600000000000 0 0
22 18.9600000000000 0 0
23 18.9600000000000 0 0
24 18.9600000000000 0 0
25 18.9600000000000 0 0
26 18.9600000000000 0 0
27 18.9600000000000 0 0
28 18.9600000000000 0 0
29 18.9600000000000 0 0
30 18.9600000000000 0 0
31 18.9600000000000 0 0
32 18.9600000000000 0 0
33 18.9600000000000 0 0
34 18.9600000000000 0 0
35 18.9600000000000 0 0
36 18.9600000000000 0 0
37 18.9600000000000 0 0
38 18.9600000000000 0 0
39 18.9600000000000 0 0
40 18.9600000000000 0 0
41 18.9600000000000 0 0
42 18.9600000000000 0 0
43 18.9600000000000 0 0
44 18.9600000000000 0 0
45 18.9600000000000 0 0
46 18.9600000000000 0 0
47 18.9600000000000 0 0
48 18.9600000000000 0 0
49 18.9600000000000 0 0
50 18.9600000000000 0 0
51 18.9600000000000 0 0
52 18.9600000000000 0 0
53 18.9600000000000 0 0
54 18.9600000000000 0 0
55 18.9600000000000 0 0
56 18.9600000000000 0 0
57 18.9600000000000 0 0
58 18.9600000000000 0 0
59 18.9600000000000 0 0
60 18.9600000000000 0 0
61 18.9600000000000 0 0
62 18.9600000000000 0 0
63 18.9600000000000 0 0
64 18.9600000000000 0 0
65 18.9600000000000 0 0
66 18.9600000000000 0 0
67 18.9600000000000 0 0
68 18.9600000000000 0 0
69 18.9600000000000 0 0
70 18.9600000000000 0 0
71 18.9600000000000 0 0
72 18.9600000000000 0 0
73 18.9600000000000 0 0
74 18.9600000000000 0 0
75 18.9600000000000 0 0
76 18.9600000000000 0 0
77 18.9600000000000 0 0
78 18.9600000000000 0 0
79 18.9600000000000 0 – 0
80 18.9600000000000 0 0
81 18.9600000000000 0 0
82 18.9600000000000 0 0
83 18.9600000000000 0 0
84 18.9600000000000 0 0
85 18.9600000000000 0 0
86 18.9600000000000 0 0
87 18.9600000000000 0 0
88 18.9600000000000 74587.6927815338 0
89 18.9600000000000 63579.5521233545 0
90 18.9600000000000 49612.0311854933 0
91 18.9600000000000 43033.5361688759 0
92 18.9600000000000 40790.4390142126 0
93 18.9600000000000 39301.3240964109 0
94 18.9600000000000 38924.3329779801 0
95 18.9600000000000 38905.4834220586 0
96 18.9600000000000 38283.4480766478 0
97 18.9600000000000 38094.9525174324 0
98 18.9600000000000 37849.9082904524 0
99 18.9600000000000 36643.5367114738 0
100 18.9600000000000 35964.9526982984 0
101 18.9600000000000 35983.8022542199 0
102 18.9600000000000 36304.2447048861 0
103 18.9600000000000 35983.8022542199 0
104 18.9600000000000 35870.7049186907 0
105 18.9600000000000 35474.8642443383 0
106 18.9600000000000 35908.4040305337 0
107 18.9600000000000 35380.6164647306 0
108 18.9600000000000 35964.9526982984 0
109 18.9600000000000 35870.7049186907 0
110 18.9600000000000 35663.3598035537 0
111 18.9600000000000 35512.5633561814 0
112 18.9600000000000 35041.3244581429 0
113 18.9600000000000 34871.6784548490 0
114 18.9600000000000 35644.5102476322 0
115 18.9600000000000 35248.6695732798 0
116 18.9600000000000 35927.2535864553 0
117 18.9600000000000 35644.5102476322 0
118 18.9600000000000 35456.0146884168 0
119 18.9600000000000 36209.9969252784 0
120 18.9600000000000 35964.9526982984 0
121 18.9600000000000 35889.5544746122 0
122 18.9600000000000 35946.1031423768 0
123 18.9600000000000 35474.8642443383 0
124 18.9600000000000 36266.5455930430 0
125 18.9600000000000 36473.8907081799 0
126 18.9600000000000 35701.0589153968 0
127 18.9600000000000 36379.6429285722 0
128 18.9600000000000 36228.8464811999 0
129 18.9600000000000 36700.0853792384 0
130 18.9600000000000 20508.3168426355 0
131 18.9600000000000 23448.8475663958 0
132 18.9600000000000 23995.4846881204 0
133 18.9600000000000 22129.3786518880 0
134 18.9600000000000 21281.1486354187 0
135 18.9600000000000 26822.9180763514 0
136 18.9600000000000 35173.2713495937 0
137 18.9600000000000 45634.7748860484 0
138 18.9600000000000 44767.6953136575 0
139 18.9600000000000 28632.4754448193 0
140 18.9600000000000 24768.3164809036 0
141 18.9600000000000 24334.7766947082 0
142 18.9600000000000 39866.8107740571 0
143 18.9600000000000 35286.3686851229 0
144 18.9600000000000 44541.5006425991 0
145 18.9600000000000 34155.3953298305 0
146 18.9600000000000 26559.0242934499 0
147 18.9600000000000 23411.1484545527 0
148 18.9600000000000 22789.1131091419 0
149 18.9600000000000 22883.3608887496 0
150 18.9600000000000 22807.9626650634 1 hello community, I’d like to ask your support to find a solution on how to extrapolate.
my x,y,z data:
xCtT_dtPwrIncr = [3996.106 8501.15 12007.17 17002.3 34004.6 42505.75 46991.94 51006.9 59508.05 68009.2 76491.5 84992.65]; %
yCtT_dtPwrIncr = [-7.04 9.96]’;
zCtT_dtPwrIncr = …
[ 0.064502 0.105005 0.119995 0.130005 0.15 0.169995 0.205005 0.219995 0.230005 0.244995 0.26001 0.269995;
0.064502 0.105005 0.119995 0.13999 0.180005 0.219995 0.23999 0.25 0.26499 0.275 0.280005 0.3;];
for j=1:length(time)
if CtT_flgErr(j)==0 && EnvT_t(j) < 9.96 %
CtTdtIncEng(j,1) = interp2(xCtT_dtPwrIncr,yCtT_dtPwrIncr,zCtT_dtPwrIncr,PhyMod_pwrClntEntry(j),EnvT_t(j));
else
CtTdtIncEng(j,1) = interp2(xCtT_dtPwrIncr,yCtT_dtPwrIncr,zCtT_dtPwrIncr,PhyMod_pwrClntEntry(j),EnvT_t(j),’linear’,’extrap’);
end
in this casa my data doesn’t meet first condition because in my data EnvT_t > 9.96
the second condition gives me this error:
Error using interp2 (line 61)
EXTRAPVAL must be a scalar.
any recomendation on how can I extrapolate my data when EnvT_t(j) > 9.96?
I’m using these vectors/data
time EnvT_t PhyMod_pwrClntEntry CtT_flgErr
1 18.9600000000000 0 0
2 18.9600000000000 0 0
3 18.9600000000000 0 0
4 18.9600000000000 0 0
5 18.9600000000000 0 0
6 18.9600000000000 0 0
7 18.9600000000000 0 0
8 18.9600000000000 0 0
9 18.9600000000000 0 0
10 18.9600000000000 0 0
11 18.9600000000000 0 0
12 18.9600000000000 0 0
13 18.9600000000000 0 0
14 18.9600000000000 0 0
15 18.9600000000000 0 0
16 18.9600000000000 0 0
17 18.9600000000000 0 0
18 18.9600000000000 0 0
19 18.9600000000000 0 0
20 18.9600000000000 0 0
21 18.9600000000000 0 0
22 18.9600000000000 0 0
23 18.9600000000000 0 0
24 18.9600000000000 0 0
25 18.9600000000000 0 0
26 18.9600000000000 0 0
27 18.9600000000000 0 0
28 18.9600000000000 0 0
29 18.9600000000000 0 0
30 18.9600000000000 0 0
31 18.9600000000000 0 0
32 18.9600000000000 0 0
33 18.9600000000000 0 0
34 18.9600000000000 0 0
35 18.9600000000000 0 0
36 18.9600000000000 0 0
37 18.9600000000000 0 0
38 18.9600000000000 0 0
39 18.9600000000000 0 0
40 18.9600000000000 0 0
41 18.9600000000000 0 0
42 18.9600000000000 0 0
43 18.9600000000000 0 0
44 18.9600000000000 0 0
45 18.9600000000000 0 0
46 18.9600000000000 0 0
47 18.9600000000000 0 0
48 18.9600000000000 0 0
49 18.9600000000000 0 0
50 18.9600000000000 0 0
51 18.9600000000000 0 0
52 18.9600000000000 0 0
53 18.9600000000000 0 0
54 18.9600000000000 0 0
55 18.9600000000000 0 0
56 18.9600000000000 0 0
57 18.9600000000000 0 0
58 18.9600000000000 0 0
59 18.9600000000000 0 0
60 18.9600000000000 0 0
61 18.9600000000000 0 0
62 18.9600000000000 0 0
63 18.9600000000000 0 0
64 18.9600000000000 0 0
65 18.9600000000000 0 0
66 18.9600000000000 0 0
67 18.9600000000000 0 0
68 18.9600000000000 0 0
69 18.9600000000000 0 0
70 18.9600000000000 0 0
71 18.9600000000000 0 0
72 18.9600000000000 0 0
73 18.9600000000000 0 0
74 18.9600000000000 0 0
75 18.9600000000000 0 0
76 18.9600000000000 0 0
77 18.9600000000000 0 0
78 18.9600000000000 0 0
79 18.9600000000000 0 – 0
80 18.9600000000000 0 0
81 18.9600000000000 0 0
82 18.9600000000000 0 0
83 18.9600000000000 0 0
84 18.9600000000000 0 0
85 18.9600000000000 0 0
86 18.9600000000000 0 0
87 18.9600000000000 0 0
88 18.9600000000000 74587.6927815338 0
89 18.9600000000000 63579.5521233545 0
90 18.9600000000000 49612.0311854933 0
91 18.9600000000000 43033.5361688759 0
92 18.9600000000000 40790.4390142126 0
93 18.9600000000000 39301.3240964109 0
94 18.9600000000000 38924.3329779801 0
95 18.9600000000000 38905.4834220586 0
96 18.9600000000000 38283.4480766478 0
97 18.9600000000000 38094.9525174324 0
98 18.9600000000000 37849.9082904524 0
99 18.9600000000000 36643.5367114738 0
100 18.9600000000000 35964.9526982984 0
101 18.9600000000000 35983.8022542199 0
102 18.9600000000000 36304.2447048861 0
103 18.9600000000000 35983.8022542199 0
104 18.9600000000000 35870.7049186907 0
105 18.9600000000000 35474.8642443383 0
106 18.9600000000000 35908.4040305337 0
107 18.9600000000000 35380.6164647306 0
108 18.9600000000000 35964.9526982984 0
109 18.9600000000000 35870.7049186907 0
110 18.9600000000000 35663.3598035537 0
111 18.9600000000000 35512.5633561814 0
112 18.9600000000000 35041.3244581429 0
113 18.9600000000000 34871.6784548490 0
114 18.9600000000000 35644.5102476322 0
115 18.9600000000000 35248.6695732798 0
116 18.9600000000000 35927.2535864553 0
117 18.9600000000000 35644.5102476322 0
118 18.9600000000000 35456.0146884168 0
119 18.9600000000000 36209.9969252784 0
120 18.9600000000000 35964.9526982984 0
121 18.9600000000000 35889.5544746122 0
122 18.9600000000000 35946.1031423768 0
123 18.9600000000000 35474.8642443383 0
124 18.9600000000000 36266.5455930430 0
125 18.9600000000000 36473.8907081799 0
126 18.9600000000000 35701.0589153968 0
127 18.9600000000000 36379.6429285722 0
128 18.9600000000000 36228.8464811999 0
129 18.9600000000000 36700.0853792384 0
130 18.9600000000000 20508.3168426355 0
131 18.9600000000000 23448.8475663958 0
132 18.9600000000000 23995.4846881204 0
133 18.9600000000000 22129.3786518880 0
134 18.9600000000000 21281.1486354187 0
135 18.9600000000000 26822.9180763514 0
136 18.9600000000000 35173.2713495937 0
137 18.9600000000000 45634.7748860484 0
138 18.9600000000000 44767.6953136575 0
139 18.9600000000000 28632.4754448193 0
140 18.9600000000000 24768.3164809036 0
141 18.9600000000000 24334.7766947082 0
142 18.9600000000000 39866.8107740571 0
143 18.9600000000000 35286.3686851229 0
144 18.9600000000000 44541.5006425991 0
145 18.9600000000000 34155.3953298305 0
146 18.9600000000000 26559.0242934499 0
147 18.9600000000000 23411.1484545527 0
148 18.9600000000000 22789.1131091419 0
149 18.9600000000000 22883.3608887496 0
150 18.9600000000000 22807.9626650634 1 matlab, script, interpolation MATLAB Answers — New Questions
How do I eliminate (minimize) display quantization with imshow?
I see extra quantization when displaying a grayscale uint8 image. For example:
inRamp = uint8 ( round ( repmat( linspace(0,60,1200), 600, 1 ) ) );
imshow ( inRamp)
imwrite ( inRamp, ‘inputRamp.tif’ )
If I display this tif image in another display application, I see a series of steps. The image displayed in MATLAB using imshow has a couple of steps that are double-wide and double-deep. I have verified this using Windows screen captures of the image as displayed by other software and as displayed in MATLAB.
The plots of this data show a clear stairstep pattern, with the MATLAB showing a couple of steps (near pixel value 10 and 40) that are double width and double height. I can email plots to anyone interested in seeing them.I see extra quantization when displaying a grayscale uint8 image. For example:
inRamp = uint8 ( round ( repmat( linspace(0,60,1200), 600, 1 ) ) );
imshow ( inRamp)
imwrite ( inRamp, ‘inputRamp.tif’ )
If I display this tif image in another display application, I see a series of steps. The image displayed in MATLAB using imshow has a couple of steps that are double-wide and double-deep. I have verified this using Windows screen captures of the image as displayed by other software and as displayed in MATLAB.
The plots of this data show a clear stairstep pattern, with the MATLAB showing a couple of steps (near pixel value 10 and 40) that are double width and double height. I can email plots to anyone interested in seeing them. I see extra quantization when displaying a grayscale uint8 image. For example:
inRamp = uint8 ( round ( repmat( linspace(0,60,1200), 600, 1 ) ) );
imshow ( inRamp)
imwrite ( inRamp, ‘inputRamp.tif’ )
If I display this tif image in another display application, I see a series of steps. The image displayed in MATLAB using imshow has a couple of steps that are double-wide and double-deep. I have verified this using Windows screen captures of the image as displayed by other software and as displayed in MATLAB.
The plots of this data show a clear stairstep pattern, with the MATLAB showing a couple of steps (near pixel value 10 and 40) that are double width and double height. I can email plots to anyone interested in seeing them. image, uint8, display, imshow MATLAB Answers — New Questions
Trim point of a system is not working, when the system is made into a subsytem
Hello,
i have a 6dof aircraft model in simulink with engine model, 6dof, etc. I trimmed at specific points and linearized it, now my goal is to make this system a subsytem and make the sas and cas for the system. The problem is I cant load the trim point to the new overall system, it will not initialize the overall system. I`m struggling really hard. I hope someone can help me. It should be easy to fix however my knowledge in Simulink is limited.Hello,
i have a 6dof aircraft model in simulink with engine model, 6dof, etc. I trimmed at specific points and linearized it, now my goal is to make this system a subsytem and make the sas and cas for the system. The problem is I cant load the trim point to the new overall system, it will not initialize the overall system. I`m struggling really hard. I hope someone can help me. It should be easy to fix however my knowledge in Simulink is limited. Hello,
i have a 6dof aircraft model in simulink with engine model, 6dof, etc. I trimmed at specific points and linearized it, now my goal is to make this system a subsytem and make the sas and cas for the system. The problem is I cant load the trim point to the new overall system, it will not initialize the overall system. I`m struggling really hard. I hope someone can help me. It should be easy to fix however my knowledge in Simulink is limited. simulink, initialize, subsystem, model MATLAB Answers — New Questions
Different gripper mass but no changing in torques
Hello,
I am currently working with two versions of the UR5 robotic arm: the original version and a modified version where I have only reduced the mass of tool0. However, during simulations using the inverse dynamics block in Simulink, I’ve observed that the torques do not appear to change between the two versions. This is unexpected because reducing the mass should affect the torques.
Could this behavior be considered normal? If not, what could be the possible reasons for not observing any changes? Is it because the tool0 has no inertia maybe ? The trajectories are generated by CHOMP and then fed into Simulink using minjerk polynomial trajectories to obtain the joint variables (q, qd, qdd), which are subsequently used in the inverse dynamics block. The model is quite basic.Hello,
I am currently working with two versions of the UR5 robotic arm: the original version and a modified version where I have only reduced the mass of tool0. However, during simulations using the inverse dynamics block in Simulink, I’ve observed that the torques do not appear to change between the two versions. This is unexpected because reducing the mass should affect the torques.
Could this behavior be considered normal? If not, what could be the possible reasons for not observing any changes? Is it because the tool0 has no inertia maybe ? The trajectories are generated by CHOMP and then fed into Simulink using minjerk polynomial trajectories to obtain the joint variables (q, qd, qdd), which are subsequently used in the inverse dynamics block. The model is quite basic. Hello,
I am currently working with two versions of the UR5 robotic arm: the original version and a modified version where I have only reduced the mass of tool0. However, during simulations using the inverse dynamics block in Simulink, I’ve observed that the torques do not appear to change between the two versions. This is unexpected because reducing the mass should affect the torques.
Could this behavior be considered normal? If not, what could be the possible reasons for not observing any changes? Is it because the tool0 has no inertia maybe ? The trajectories are generated by CHOMP and then fed into Simulink using minjerk polynomial trajectories to obtain the joint variables (q, qd, qdd), which are subsequently used in the inverse dynamics block. The model is quite basic. matlab MATLAB Answers — New Questions
fminsearch and rcond with exponentials did not find expected results..i dont know if im doing something wrong or not,..please help
clc;
c44 = 436+9;
e15 = -0.48;
e11 = 7.616-11;
u11 = 100;
d11 = 2.6;
p = 5700;
%c44e = 533.34;
e11e = 5.02e-11;
q = 1.602e-19;
uo = 1e20;
%i=sqrt(-1);
c44E = c44/e15;
E11E = e11 / e15;
d11E = d11 / (uo * u11);
h = 1;
m = uo * u11;
m1 = p * e11 * d11;
m2 = c44 * e11 * e15^2;
m3 = c44 * q * uo * u11;
m4 = uo * u11 * q;
a = d11 * m2;
omega_range = linspace(1, 10, 10); % Define your omega range
results = zeros(size(omega_range));
rcond_results = zeros(size(omega_range)); % Initialize array to store rcond results
for jj = 1:length(omega_range)
current_w = omega_range(jj);
% Define the objective function for fminsearch
objective_fn = @(k_vals) calculate_rcond(k_vals, current_w, h, c44, c44E, d11, e11, E11E, d11E, e15, m, m1, m2, m3, m4, a, p,e11e);
options=optimset(‘MaxIter’,10000,’MaxFunEvals’,1000);
% Initial guess for [k_real, k_imag]
initial_guess = [10, 10];
% Use fminsearch to find the values that minimize rcond
best_k = fminsearch(objective_fn, initial_guess,options);
% Store the best k value for the current omega
results(jj) = complex(best_k(1), best_k(2));
% Calculate rcond for the best_k found
rcond_A = calculate_rcond(best_k, current_w, h, c44, c44E, d11, e11, E11E, d11E, e15, m, m1, m2, m3, m4, a, p,e11e);
% Store the rcond value
rcond_results(jj) = rcond_A;
end
% Calculate phase velocity (omega / real(k))
c_real = omega_range ./ real(results);
% Plot omega vs. phase velocity
plot(omega_range, c_real, ‘LineWidth’, 2);
xlabel(‘omega’);
ylabel(‘c_real’);
title(‘c_real vs. omega’);
% Display or plot the results as needed
disp(‘Results:’);
disp(results);
% Check if there are roots (rcond close to zero)
tolerance = 1e-6; % Define a tolerance level for determining if rcond is "zero"
is_root = rcond_results < tolerance;
if any(is_root)
disp(‘Found roots for the determinant of the matrix A.’);
disp(‘Corresponding omega and k values:’);
for idx = find(is_root)
fprintf(‘Omega: %.2f, k: %.2f + %.2fi, rcond(A): %.2en’, omega_range(idx), real(results(idx)), imag(results(idx)), rcond_results(idx));
end
else
disp(‘No roots found for the determinant of the matrix A within the specified tolerance.’);
end
function rcond_A = calculate_rcond(k_vals, current_w, h, c44, c44E, d11, e11, E11E, d11E, e15, m, m1, m2, m3, m4, a, p,e11e)
k_real = k_vals(1);
k_imag = k_vals(2);
% Calculate intermediate values b and c
b = m1 * current_w^2 / (k_real + k_imag*1i)^2 + current_w * m2 * 1i / (k_real + k_imag*1i)^2 – m3 / (k_real + k_imag*1i)^2;
c = (e11 * current_w * 1i – m4) * p * current_w^2 / (k_real + k_imag*1i)^4;
% Calculate s3 and s5 values for the current omega
s3_val = sqrt(1+(-b-sqrt(b^2-4*a * c)) /(2*a));
s5_val = sqrt(1+(-b+sqrt(b^2-4*a*c))/(2*a));
% Calculate p3, p5, q3, and q5 values for the current omega
p3_val = -e15*(s3_val^2-1)/(c44*(s3_val^2-1)+p*current_w^2/(k_real+k_imag*1i)^2);
p5_val = -e15*(s5_val^2-1)/(c44*(s5_val^2-1) + p*current_w^2/(k_real+k_imag*1i)^2);
q3_val = -m*(s3_val^2-1)/(d11 * (s3_val^2-1) + current_w*1i/ (k_real+k_imag*1i)^2);
q5_val = -m*(s5_val^2-1)/(d11 * (s5_val^2-1) + current_w*1i/ (k_real+k_imag*1i)^2);
% Define exp_kh and exp_minus_kh based on k_real and k_imag
exp_kh = exp((k_real+1i *k_imag)*h);
exp_minus_kh = exp(-(k_real+1i*k_imag)*h);
exp_s3=exp(s3_val*(k_real+1i*k_imag)*h);
exp_s4=exp(-s3_val*(k_real+1i*k_imag)*h);
exp_s5=exp(s5_val*(k_real+1i*k_imag)*h);
exp_s6=exp(-s5_val*(k_real+1i*k_imag)*h);
% Define matrix A
A = [exp_kh,exp_minus_kh,(c44E*p3_val+1)*s3_val*exp_s3,(c44E*p3_val+1)*(-s3_val)*exp_s4, …
(c44E*p5_val+1)*s5_val*exp_s5,(c44E*p5_val+1)*(-s5_val)*exp_s6,0,0;
-E11E * exp_kh,E11E*exp_minus_kh, (p3_val-E11E)*s3_val * exp_s3, (p3_val – E11E) * (-s3_val) * exp_s4, …
(p5_val-E11E) *s5_val * exp_s5, (p5_val – E11E) * (-s5_val) * exp_s6, 0, 0;
exp_kh,- exp_minus_kh, (1 – d11E * q3_val) * s3_val * exp_s3, (1 – d11E * q3_val) * (-s3_val) * exp_s4, …
(1 – d11E * q5_val) * s5_val * exp_s5, (1 – d11E * q5_val) * (-s5_val) * exp_s6, 0, 0;
1, -1, (1 – d11E * q3_val) * s3_val, (1 – d11E * q3_val) * (-s3_val), …
(1 – d11E * q5_val) * s5_val, (1 – d11E * q5_val) * (-s5_val), 0, 0;
1, -1, (c44E * p3_val + 1) * s3_val, (c44E * p3_val + 1) * (-s3_val), …
(c44E * p5_val + 1) * s5_val, (c44E * p5_val + 1) * (-s5_val), (-c44E * s3_val) / e15, 0;
0, 0, p3_val, p3_val, p5_val, p5_val, -1, 0;
-E11E, E11E, (p3_val – E11E) * s3_val, (p3_val – E11E) * (-s3_val), …
(p5_val – E11E) * s5_val, (p5_val – E11E) * (-s5_val), 0, e11e / e15;
1, 1, 1, 1, 1, 1, 0, -1];
% Compute the reciprocal condition number of the matrix A
rcond_A = rcond(A);
endclc;
c44 = 436+9;
e15 = -0.48;
e11 = 7.616-11;
u11 = 100;
d11 = 2.6;
p = 5700;
%c44e = 533.34;
e11e = 5.02e-11;
q = 1.602e-19;
uo = 1e20;
%i=sqrt(-1);
c44E = c44/e15;
E11E = e11 / e15;
d11E = d11 / (uo * u11);
h = 1;
m = uo * u11;
m1 = p * e11 * d11;
m2 = c44 * e11 * e15^2;
m3 = c44 * q * uo * u11;
m4 = uo * u11 * q;
a = d11 * m2;
omega_range = linspace(1, 10, 10); % Define your omega range
results = zeros(size(omega_range));
rcond_results = zeros(size(omega_range)); % Initialize array to store rcond results
for jj = 1:length(omega_range)
current_w = omega_range(jj);
% Define the objective function for fminsearch
objective_fn = @(k_vals) calculate_rcond(k_vals, current_w, h, c44, c44E, d11, e11, E11E, d11E, e15, m, m1, m2, m3, m4, a, p,e11e);
options=optimset(‘MaxIter’,10000,’MaxFunEvals’,1000);
% Initial guess for [k_real, k_imag]
initial_guess = [10, 10];
% Use fminsearch to find the values that minimize rcond
best_k = fminsearch(objective_fn, initial_guess,options);
% Store the best k value for the current omega
results(jj) = complex(best_k(1), best_k(2));
% Calculate rcond for the best_k found
rcond_A = calculate_rcond(best_k, current_w, h, c44, c44E, d11, e11, E11E, d11E, e15, m, m1, m2, m3, m4, a, p,e11e);
% Store the rcond value
rcond_results(jj) = rcond_A;
end
% Calculate phase velocity (omega / real(k))
c_real = omega_range ./ real(results);
% Plot omega vs. phase velocity
plot(omega_range, c_real, ‘LineWidth’, 2);
xlabel(‘omega’);
ylabel(‘c_real’);
title(‘c_real vs. omega’);
% Display or plot the results as needed
disp(‘Results:’);
disp(results);
% Check if there are roots (rcond close to zero)
tolerance = 1e-6; % Define a tolerance level for determining if rcond is "zero"
is_root = rcond_results < tolerance;
if any(is_root)
disp(‘Found roots for the determinant of the matrix A.’);
disp(‘Corresponding omega and k values:’);
for idx = find(is_root)
fprintf(‘Omega: %.2f, k: %.2f + %.2fi, rcond(A): %.2en’, omega_range(idx), real(results(idx)), imag(results(idx)), rcond_results(idx));
end
else
disp(‘No roots found for the determinant of the matrix A within the specified tolerance.’);
end
function rcond_A = calculate_rcond(k_vals, current_w, h, c44, c44E, d11, e11, E11E, d11E, e15, m, m1, m2, m3, m4, a, p,e11e)
k_real = k_vals(1);
k_imag = k_vals(2);
% Calculate intermediate values b and c
b = m1 * current_w^2 / (k_real + k_imag*1i)^2 + current_w * m2 * 1i / (k_real + k_imag*1i)^2 – m3 / (k_real + k_imag*1i)^2;
c = (e11 * current_w * 1i – m4) * p * current_w^2 / (k_real + k_imag*1i)^4;
% Calculate s3 and s5 values for the current omega
s3_val = sqrt(1+(-b-sqrt(b^2-4*a * c)) /(2*a));
s5_val = sqrt(1+(-b+sqrt(b^2-4*a*c))/(2*a));
% Calculate p3, p5, q3, and q5 values for the current omega
p3_val = -e15*(s3_val^2-1)/(c44*(s3_val^2-1)+p*current_w^2/(k_real+k_imag*1i)^2);
p5_val = -e15*(s5_val^2-1)/(c44*(s5_val^2-1) + p*current_w^2/(k_real+k_imag*1i)^2);
q3_val = -m*(s3_val^2-1)/(d11 * (s3_val^2-1) + current_w*1i/ (k_real+k_imag*1i)^2);
q5_val = -m*(s5_val^2-1)/(d11 * (s5_val^2-1) + current_w*1i/ (k_real+k_imag*1i)^2);
% Define exp_kh and exp_minus_kh based on k_real and k_imag
exp_kh = exp((k_real+1i *k_imag)*h);
exp_minus_kh = exp(-(k_real+1i*k_imag)*h);
exp_s3=exp(s3_val*(k_real+1i*k_imag)*h);
exp_s4=exp(-s3_val*(k_real+1i*k_imag)*h);
exp_s5=exp(s5_val*(k_real+1i*k_imag)*h);
exp_s6=exp(-s5_val*(k_real+1i*k_imag)*h);
% Define matrix A
A = [exp_kh,exp_minus_kh,(c44E*p3_val+1)*s3_val*exp_s3,(c44E*p3_val+1)*(-s3_val)*exp_s4, …
(c44E*p5_val+1)*s5_val*exp_s5,(c44E*p5_val+1)*(-s5_val)*exp_s6,0,0;
-E11E * exp_kh,E11E*exp_minus_kh, (p3_val-E11E)*s3_val * exp_s3, (p3_val – E11E) * (-s3_val) * exp_s4, …
(p5_val-E11E) *s5_val * exp_s5, (p5_val – E11E) * (-s5_val) * exp_s6, 0, 0;
exp_kh,- exp_minus_kh, (1 – d11E * q3_val) * s3_val * exp_s3, (1 – d11E * q3_val) * (-s3_val) * exp_s4, …
(1 – d11E * q5_val) * s5_val * exp_s5, (1 – d11E * q5_val) * (-s5_val) * exp_s6, 0, 0;
1, -1, (1 – d11E * q3_val) * s3_val, (1 – d11E * q3_val) * (-s3_val), …
(1 – d11E * q5_val) * s5_val, (1 – d11E * q5_val) * (-s5_val), 0, 0;
1, -1, (c44E * p3_val + 1) * s3_val, (c44E * p3_val + 1) * (-s3_val), …
(c44E * p5_val + 1) * s5_val, (c44E * p5_val + 1) * (-s5_val), (-c44E * s3_val) / e15, 0;
0, 0, p3_val, p3_val, p5_val, p5_val, -1, 0;
-E11E, E11E, (p3_val – E11E) * s3_val, (p3_val – E11E) * (-s3_val), …
(p5_val – E11E) * s5_val, (p5_val – E11E) * (-s5_val), 0, e11e / e15;
1, 1, 1, 1, 1, 1, 0, -1];
% Compute the reciprocal condition number of the matrix A
rcond_A = rcond(A);
end clc;
c44 = 436+9;
e15 = -0.48;
e11 = 7.616-11;
u11 = 100;
d11 = 2.6;
p = 5700;
%c44e = 533.34;
e11e = 5.02e-11;
q = 1.602e-19;
uo = 1e20;
%i=sqrt(-1);
c44E = c44/e15;
E11E = e11 / e15;
d11E = d11 / (uo * u11);
h = 1;
m = uo * u11;
m1 = p * e11 * d11;
m2 = c44 * e11 * e15^2;
m3 = c44 * q * uo * u11;
m4 = uo * u11 * q;
a = d11 * m2;
omega_range = linspace(1, 10, 10); % Define your omega range
results = zeros(size(omega_range));
rcond_results = zeros(size(omega_range)); % Initialize array to store rcond results
for jj = 1:length(omega_range)
current_w = omega_range(jj);
% Define the objective function for fminsearch
objective_fn = @(k_vals) calculate_rcond(k_vals, current_w, h, c44, c44E, d11, e11, E11E, d11E, e15, m, m1, m2, m3, m4, a, p,e11e);
options=optimset(‘MaxIter’,10000,’MaxFunEvals’,1000);
% Initial guess for [k_real, k_imag]
initial_guess = [10, 10];
% Use fminsearch to find the values that minimize rcond
best_k = fminsearch(objective_fn, initial_guess,options);
% Store the best k value for the current omega
results(jj) = complex(best_k(1), best_k(2));
% Calculate rcond for the best_k found
rcond_A = calculate_rcond(best_k, current_w, h, c44, c44E, d11, e11, E11E, d11E, e15, m, m1, m2, m3, m4, a, p,e11e);
% Store the rcond value
rcond_results(jj) = rcond_A;
end
% Calculate phase velocity (omega / real(k))
c_real = omega_range ./ real(results);
% Plot omega vs. phase velocity
plot(omega_range, c_real, ‘LineWidth’, 2);
xlabel(‘omega’);
ylabel(‘c_real’);
title(‘c_real vs. omega’);
% Display or plot the results as needed
disp(‘Results:’);
disp(results);
% Check if there are roots (rcond close to zero)
tolerance = 1e-6; % Define a tolerance level for determining if rcond is "zero"
is_root = rcond_results < tolerance;
if any(is_root)
disp(‘Found roots for the determinant of the matrix A.’);
disp(‘Corresponding omega and k values:’);
for idx = find(is_root)
fprintf(‘Omega: %.2f, k: %.2f + %.2fi, rcond(A): %.2en’, omega_range(idx), real(results(idx)), imag(results(idx)), rcond_results(idx));
end
else
disp(‘No roots found for the determinant of the matrix A within the specified tolerance.’);
end
function rcond_A = calculate_rcond(k_vals, current_w, h, c44, c44E, d11, e11, E11E, d11E, e15, m, m1, m2, m3, m4, a, p,e11e)
k_real = k_vals(1);
k_imag = k_vals(2);
% Calculate intermediate values b and c
b = m1 * current_w^2 / (k_real + k_imag*1i)^2 + current_w * m2 * 1i / (k_real + k_imag*1i)^2 – m3 / (k_real + k_imag*1i)^2;
c = (e11 * current_w * 1i – m4) * p * current_w^2 / (k_real + k_imag*1i)^4;
% Calculate s3 and s5 values for the current omega
s3_val = sqrt(1+(-b-sqrt(b^2-4*a * c)) /(2*a));
s5_val = sqrt(1+(-b+sqrt(b^2-4*a*c))/(2*a));
% Calculate p3, p5, q3, and q5 values for the current omega
p3_val = -e15*(s3_val^2-1)/(c44*(s3_val^2-1)+p*current_w^2/(k_real+k_imag*1i)^2);
p5_val = -e15*(s5_val^2-1)/(c44*(s5_val^2-1) + p*current_w^2/(k_real+k_imag*1i)^2);
q3_val = -m*(s3_val^2-1)/(d11 * (s3_val^2-1) + current_w*1i/ (k_real+k_imag*1i)^2);
q5_val = -m*(s5_val^2-1)/(d11 * (s5_val^2-1) + current_w*1i/ (k_real+k_imag*1i)^2);
% Define exp_kh and exp_minus_kh based on k_real and k_imag
exp_kh = exp((k_real+1i *k_imag)*h);
exp_minus_kh = exp(-(k_real+1i*k_imag)*h);
exp_s3=exp(s3_val*(k_real+1i*k_imag)*h);
exp_s4=exp(-s3_val*(k_real+1i*k_imag)*h);
exp_s5=exp(s5_val*(k_real+1i*k_imag)*h);
exp_s6=exp(-s5_val*(k_real+1i*k_imag)*h);
% Define matrix A
A = [exp_kh,exp_minus_kh,(c44E*p3_val+1)*s3_val*exp_s3,(c44E*p3_val+1)*(-s3_val)*exp_s4, …
(c44E*p5_val+1)*s5_val*exp_s5,(c44E*p5_val+1)*(-s5_val)*exp_s6,0,0;
-E11E * exp_kh,E11E*exp_minus_kh, (p3_val-E11E)*s3_val * exp_s3, (p3_val – E11E) * (-s3_val) * exp_s4, …
(p5_val-E11E) *s5_val * exp_s5, (p5_val – E11E) * (-s5_val) * exp_s6, 0, 0;
exp_kh,- exp_minus_kh, (1 – d11E * q3_val) * s3_val * exp_s3, (1 – d11E * q3_val) * (-s3_val) * exp_s4, …
(1 – d11E * q5_val) * s5_val * exp_s5, (1 – d11E * q5_val) * (-s5_val) * exp_s6, 0, 0;
1, -1, (1 – d11E * q3_val) * s3_val, (1 – d11E * q3_val) * (-s3_val), …
(1 – d11E * q5_val) * s5_val, (1 – d11E * q5_val) * (-s5_val), 0, 0;
1, -1, (c44E * p3_val + 1) * s3_val, (c44E * p3_val + 1) * (-s3_val), …
(c44E * p5_val + 1) * s5_val, (c44E * p5_val + 1) * (-s5_val), (-c44E * s3_val) / e15, 0;
0, 0, p3_val, p3_val, p5_val, p5_val, -1, 0;
-E11E, E11E, (p3_val – E11E) * s3_val, (p3_val – E11E) * (-s3_val), …
(p5_val – E11E) * s5_val, (p5_val – E11E) * (-s5_val), 0, e11e / e15;
1, 1, 1, 1, 1, 1, 0, -1];
% Compute the reciprocal condition number of the matrix A
rcond_A = rcond(A);
end fminsearch, rcond, exponetials MATLAB Answers — New Questions
Can Matlab cellular functions -like cellfun- work with non linearly spaced indices ?
Hi,
I would like to affect a value to some non linearly indexed elements of a vector with using a cell array.
At the moment I index a for loop with a non linearly spaced row index. Let’s say :
N = 8;
id = find(randi(2,1,N)-1); % non zeros positions in a random vector of binaries
u = true(1,N);
for k = id
u(1,k:k:end) = false;
end
How would I do the same affectations with cellfun for instance ?
Thank you for help.
Cheers.
NicolasHi,
I would like to affect a value to some non linearly indexed elements of a vector with using a cell array.
At the moment I index a for loop with a non linearly spaced row index. Let’s say :
N = 8;
id = find(randi(2,1,N)-1); % non zeros positions in a random vector of binaries
u = true(1,N);
for k = id
u(1,k:k:end) = false;
end
How would I do the same affectations with cellfun for instance ?
Thank you for help.
Cheers.
Nicolas Hi,
I would like to affect a value to some non linearly indexed elements of a vector with using a cell array.
At the moment I index a for loop with a non linearly spaced row index. Let’s say :
N = 8;
id = find(randi(2,1,N)-1); % non zeros positions in a random vector of binaries
u = true(1,N);
for k = id
u(1,k:k:end) = false;
end
How would I do the same affectations with cellfun for instance ?
Thank you for help.
Cheers.
Nicolas indexing, index, cellular, element wise, non linear MATLAB Answers — New Questions