📄 mq_gen.m
字号:
function [mq]=mq_gen(mnummt,mdenmt,mdeadmt,qnummt,qdenmt,order,y)
% This function generates mq varaible to be used by qd_mat function
% The two functions must be used together
mq=cell(1,3);
if isempty(mnummt) | isempty(mdenmt) | isempty(qnummt) |isempty(qdenmt)
return
end
if iscell(mnummt)& length(mnummt) > 1
numMs=mt2poly(mnummt{1},y);
numMs=conv(numMs,mt2poly(mdenmt{2},y));
num=conv(numMs,mt2poly(qdenmt,y));
denMs=conv(mt2poly(mdenmt{1},y),mt2poly(mdenmt{2},y));
den=conv(denMs,mt2poly(qnummt,y));
[num1,den1]=zero_cancel(num,den);
if length(den1)==1
num1=num1/den1; den1=1;
mq{1}= ['(' mtx2str(num1,2)];
if length(num1)==1
mq{2}='(';
else
mq{2}=['(' mtx2str(polyder(num1),2) '/' mtx2str(num1,2)];
end
else
mq{1}=['(' mtx2str(num1,2) '/' mtx2str(den1,2) ];
if length(num1)==1
mq{2}=['(-' mtx2str(polyder(den1),2) '/' mtx2str(den1,2)];
else
mq{2}=['(' mtx2str(polyder(num1),2) '/' mtx2str(num1,2)];
mq{2}=[mq{2} '-' mtx2str(polyder(den1),2) '/' mtx2str(den1,2)];
end
end
if ~isempty(mdeadmt{1})& mdeadmt{1}~=0
mq{1}=[mq{1} '*' mtx2str(mdeadmt{1},4) ')'];
mq{2}=[mq{2} '-' mtx2str(mdeadmt{1},2) ')'];
else
mq{1}=[mq{1} ')'];
if length(num1)==1 & length(den1)==1
mq{2}=[mq{2} '0)'];
else
mq{2}=[mq{2} ')'];
end
end
mq{2}=[mq{2} '*' mq{1}];
numMs=mt2poly(mnummt{2},y);
numMs=conv(numMs,mt2poly(mdenmt{1},y));
num=conv(numMs,mt2poly(qdenmt,y));
[num2,den2]=zero_cancel(num,den);
if length(den2)==1
num2=num2/den2;
tmp= ['(' mtx2str(num2,2)];
if length(num2)==1
tmp2='(';
else
tmp2=['(' mtx2str(polyder(num2),2) '/' mtx2str(num2,2)];
end
else
tmp=['(' tmp mtx2str(num2,2) '/' mtx2str(den2,2)];
if length(num1)==1
tmp2=['(-' mtx2str(polyder(den2),2) '/' mtx2str(den2,2)];
else
tmp2=['(' mtx2str(polyder(num2),2) '/' mtx2str(num2,2)];
tmp2=[tmp2 '-' mtx2str(polyder(den2),2) '/' mtx2str(den2,2)];
end
end
if ~isempty(mdeadmt{2}) & mdeadmt{2}~=0
tmp=[tmp '*' mtx2str(mdeadmt{2},4) ')'];
tmp2=[tmp2 '-' mtx2str(mdeadmt{2},2) ')'];
else
tmp=[tmp ')'];
if length(num2)==1 & length(den2)==1
tmp2=[tmp2 '0)'];
else
tmp2=[tmp2 ')'];
end
end
mq{1}=[mq{1} '+' tmp];
mq{2}=[mq{2} '+' tmp2 '*' tmp];
else
num=mt2poly(mnummt,y);
num=conv(num,mt2poly(qdenmt,y));
den=mt2poly(mdenmt,y);
den=conv(den,mt2poly(qnummt,y));
[num1,den1]=zero_cancel(num,den);
if length(den1)==1
num1=num1/den1;den1=1;
mq{1}=['(' mtx2str(num1,2) ];
if length(num1)==1
mq{2}='(';
else
mq{2}=['(' mtx2str(polyder(num1),2) '/' mtx2str(num1,2)];
end
else
mq{1}=['(' mtx2str(num1,2) '/' mtx2str(den1,2) ];
if length(num1)==1
mq{2}=['(-' mtx2str(polyder(den1),2) '/' mtx2str(den1,2)];
else
mq{2}=['(' mtx2str(polyder(num1),2) '/' mtx2str(num1,2)];
mq{2}=[mq{2} '-' mtx2str(polyder(den1),2) '/' mtx2str(den1,2)];
end
end
if ~isempty(mdeadmt)& mdeadmt~=0
mq{1}=[mq{1} '*' mtx2str(mdeadmt,4) ')'];
mq{2}=[mq{2} '-' mtx2str(mdeadmt,2) ')'];
else
mq{1}=[mq{1} ')'];
if length(num1)==1 & length(den1)==1
mq{2}=[mq{2} '0)'];
else
mq{2}=[mq{2} ')'];
end
end
keep=mq{2};
mq{2}=[mq{2} '*' mq{1}];
mq{3}='(';
if length(num1)>2
temp=polyder(polyder(num1));
mq{3}=[mq{3} mtx2str(temp,2) '/' mtx2str(num1,2)];
end
if length(num1)>1
temp=polyder(num1);
mq{3}=[mq{3} '-(' mtx2str(temp,2) '/' mtx2str(num1,2) ')^2'];
end
if length(den1)>2
temp=polyder(polyder(den1));
mq{3}=[mq{3} '-' mtx2str(temp,2) '/' mtx2str(den1,2)];
end
if length(den1)>1
temp=polyder(den1);
mq{3}=[mq{3} '+(' mtx2str(temp,2) '/' mtx2str(den1,2) ')^2'];
end
mq{3}=[mq{3} '+' keep '^2)*' mq{1}];
end % if iscell
function [a,b]=zero_cancel(a,b)
g=gcdpoly(a,b);
a=deconv(a,g);
b=deconv(b,g);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -