MATLAB:带复数的printmat
我想使用MATLAB的MATLAB:带复数的printmat,matlab,Matlab,我想使用MATLAB的printmat显示带有标签的矩阵。但这不适用于复数: N = 5; x = rand(N,1); y = rand(N,1); z = x + 1i*y; printmat([x,y,z],'fftdemo','N=1 2 3 4 5','x y x+iy'); 输出: fftdemo = x y x+iy N=1 0.84072 0.34998
printmat
显示带有标签的矩阵。但这不适用于复数:
N = 5;
x = rand(N,1);
y = rand(N,1);
z = x + 1i*y;
printmat([x,y,z],'fftdemo','N=1 2 3 4 5','x y x+iy');
输出:
fftdemo =
x y x+iy
N=1 0.84072 0.34998 0.84072
2 0.25428 0.19660 0.25428
3 0.81428 0.25108 0.81428
4 0.24352 0.61604 0.24352
5 0.92926 0.47329 0.92926
如您所见,z
的虚部未打印
有没有一种方法可以让Matlab显示复数,或者另一种方法可以实现这一点?Matlab中的任何打印函数都只打印虚数的实数。要获得这两个部分,您必须显式地调用它们。因此正确的用法是
printmat([x,y,real(z),imag(z)],'fftdemo','N=1 2 3 4 5','x y x iy');
但是现在这没有任何用处,因为这两个部分都要打印两次。matlab中的任何打印函数都只打印虚数的实数。要获得这两个部分,您必须显式地调用它们。因此正确的用法是
printmat([x,y,real(z),imag(z)],'fftdemo','N=1 2 3 4 5','x y x iy');
但是现在这已经没有任何用处了,因为这两个部分都要打印两次。这里有一个稍微修改过的
printmat
版本,可以打印复数。为了更好的外观,您可以随意多摆弄一下:)
function[]=printmat2(a,name,rlab,clab)
%PRINTMAT打印带有标签的矩阵。
%PRINTMAT(A、名称、RLAB、CLAB)打印带有行标签的矩阵A
%RLAB和列标签CLAB。NAME是一个字符串,用于命名
%矩阵。RLAB和CLAB是包含行的字符串变量
%和由空格分隔的列标签。例如,字符串
%
%RLAB='α-β-γ';
%
%将“alpha”定义为第一行的标签,将“beta”定义为第一行的标签
%第二行和第三行的“gamma”。RLAB和CLAB必须
%包含相同数量的空格分隔标签
%分别为行和列。
%
%PRINTMAT(A,名称)打印带有数字行和数字列的矩阵A
%标签。PRINTMAT(A)打印矩阵A,但不带名称。
%
%另见:PRINTSYS。
%克莱·汤普森9-24-90
%版权所有1986-2002 MathWorks公司。
%$Revision:1.10$$日期:2002/04/10 06:32:35$
错误(nargchk(1,4,nargin));
空格=“”;
[nrows,ncols]=尺寸(a);
如果nargin这里有一个稍微修改过的printmat
版本,它将打印复数。为了更好的外观,您可以随意多摆弄一下:)
function[]=printmat2(a,name,rlab,clab)
%PRINTMAT打印带有标签的矩阵。
%PRINTMAT(A、名称、RLAB、CLAB)打印带有行标签的矩阵A
%RLAB和列标签CLAB。NAME是一个字符串,用于命名
%矩阵。RLAB和CLAB是包含行的字符串变量
%和由空格分隔的列标签。例如,字符串
%
%RLAB='α-β-γ';
%
%将“alpha”定义为第一行的标签,将“beta”定义为第一行的标签
%第二行和第三行的“gamma”。RLAB和CLAB必须
%包含相同数量的空格分隔标签
%分别为行和列。
%
%PRINTMAT(A,名称)打印带有数字行和数字列的矩阵A
%标签。PRINTMAT(A)打印矩阵A,但不带名称。
%
%另见:PRINTSYS。
%克莱·汤普森9-24-90
%版权所有1986-2002 MathWorks公司。
%$Revision:1.10$$日期:2002/04/10 06:32:35$
错误(nargchk(1,4,nargin));
空格=“”;
[nrows,ncols]=尺寸(a);
如果narginPRINTMAT不是MathWorks提供的函数(至少不是在核心MATLAB中)。你或你的同事一定是从什么地方弄来的。试着运行help printmat
,看看创建者是否记录了它。“Matlab在控制系统工具箱中有一个名为printmat的函数。它位于目录“ctrlobsolete”中,因此我们可以假设它被认为是“过时的”,但它仍然有效。”我没有找到用于此目的的新函数。请在命令窗口中键入edit printmat
,以查看代码。制作副本并创建新版本。编辑此新版本以打印复杂值。利润!PRINTMAT不是MathWorks提供的函数(至少不是在核心MATLAB中)。你或你的同事一定是从什么地方弄来的。试着运行help printmat
,看看创建者是否记录了它。“Matlab在控制系统工具箱中有一个名为printmat的函数。它位于目录“ctrlobsolete”中,因此我们可以假设它被认为是“过时的”,但它仍然有效。”我没有找到用于此目的的新函数。请在命令窗口中键入edit printmat
,以查看代码。制作副本并创建新版本。编辑此新版本以打印复杂值。利润!我建议进行编辑,修复一些问题,以防复数为负数或给定列中的所有数字都是复数。但是标签仍然关闭,到目前为止我找不到解决方法。我建议进行编辑,以解决一些问题,以防复数为负数或给定列中的所有数字都是复数。标签仍然关闭,但是,我找不到一个办法来解决这个问题。