📄 mtx2str.m
字号:
function [strg]=mtx2str(mtx,place)
% Create strings of polynomials/exponentials from matrices
%-------------------------------------------------------------
strg='';
if place==1 | place==3
vrb='x(';
else
vrb='y(';
end
if place==1 | place==2
temp=mtx;
[r,n]=size(temp);
mtx=[];
power=zeros(r,1);
for i=1:r
if isempty(mtx)
mtx=temp(i,:);
power(i)=1;
else
same=0;
[l,m]=size(mtx);
for j=1:l
if temp(i,:)==mtx(j,:)
same=1;
power(j)=power(j)+1;
end
end
if ~same
mtx=[mtx;temp(i,:)];
[l,m]=size(mtx);
power(l)=1;
end
end
end
[r,n]=size(mtx);
for i=1:r
strow=[];
for j=1:n
if mtx(i,j)~=0
% if strcmp(strow,[])
if size(strow,1)==0
if j<=n-2
if real(mtx(i,j))==1
strow=['s^' num2str(n-j)];
elseif real(mtx(i,j))==-1
strow=['-s^' num2str(n-j)];
elseif imag(mtx(i,j)) > 0
strow=[vrb num2str(imag(mtx(i,j))) ')*s^' num2str(n-j)];
elseif imag(mtx(i,j)) < 0
strow=['-' vrb num2str(-imag(mtx(i,j))) ')*s^' num2str(n-j)];
else
strow=[num2str(mtx(i,j)) '*s^' num2str(n-j)];
end
elseif j==n-1
if real(mtx(i,j))==1
strow='s';
elseif real(mtx(i,j))==-1
strow='-s';
elseif imag(mtx(i,j)) > 0
strow=[vrb num2str(imag(mtx(i,j))) ')*s'];
elseif imag(mtx(i,j)) < 0
strow=['-' vrb num2str(-imag(mtx(i,j))) ')*s'];
else
strow=[num2str(mtx(i,j)) '*s'];
end
elseif j==n
if imag(mtx(i,j)) > 0
strow=[vrb num2str(imag(mtx(i,j))) ')'];
elseif imag(mtx(i,j)) < 0
strow=['-' vrb num2str(-imag(mtx(i,j))) ')'];
else
strow=num2str(mtx(i,j));
end
end
else
if j<=n-2
if real(mtx(i,j))==-1
strow=[strow '-' 's^' num2str(n-j)];
elseif real(mtx(i,j))<0
strow=[strow num2str(mtx(i,j)) '*s^' num2str(n-j)];
elseif imag(mtx(i,j)) > 0
strow=[strow '+' vrb num2str(imag(mtx(i,j))) ')*s^' num2str(n-j)];
elseif imag(mtx(i,j)) < 0
strow=[strow '-' vrb num2str(-imag(mtx(i,j))) ')*s^' num2str(n-j)];
else
if j==1
if real(mtx(i,j))==1
strow=['s^' num2str(n-j)];
else
strow=[num2str(mtx(i,j)) '*s^' num2str(n-j)];
end
else
if real(mtx(i,j))==1
strow=[strow '+' 's^' num2str(n-j)];
else
strow=[strow '+' num2str(mtx(i,j)) '*s^' num2str(n-j)];
end
end
end
elseif j==n-1
if real(mtx(i,j))==-1
strow=[strow '-' 's'];
elseif real(mtx(i,j))<0
strow=[strow num2str(mtx(i,j)) '*s'];
elseif imag(mtx(i,j)) > 0
strow=[strow '+' vrb num2str(imag(mtx(i,j))) ')*s'];
elseif imag(mtx(i,j)) < 0
strow=[strow '-' vrb num2str(-imag(mtx(i,j))) ')*s'];
else
if real(mtx(i,j))==1
strow=[strow '+' 's'];
else
strow=[strow '+' num2str(mtx(i,j)) '*s'];
end
end
elseif j==n
if real(mtx(i,j))<0
strow=[strow num2str(mtx(i,j))];
elseif imag(mtx(i,j)) > 0
strow=[strow '+' vrb num2str(imag(mtx(i,j))) ')'];
elseif imag(mtx(i,j)) < 0
strow=[strow '-' vrb num2str(-imag(mtx(i,j))) ')'];
else
strow=[strow '+' num2str(mtx(i,j))];
end
end
end
end % if mtx<>0
end % for j
if ~strcmp(strow,[])
if nnz(mtx(i,:))>=2 |...
( min(mtx(i,:))<0 & ~strcmp(strg,[]) ) |...
( min(imag(mtx(i,:)))<0 & ~strcmp(strg,[]) )
if power(i)==1
strow=['(' strow ')'];
else
strow=['(' strow ')^' num2str(power(i))];
end
end
if strcmp(strg,[])
strg=strow;
else
if i==1
strg=[strow];
else
strg=[strg '*' strow];
end
end
end
end % for i
elseif place==3 | place==4 %if place
if ~isempty(mtx)& mtx~=0
if imag(mtx) ~= 0
strg=['exp(-' vrb num2str(abs(imag(mtx))) ')*s)'];
else
strg=['exp(-' num2str(abs(mtx)) '*s)'];
end
else
strg='';
end
end %if place
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -