Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB:带复数的printmat_Matlab - Fatal编程技术网

MATLAB:带复数的printmat

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

我想使用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      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
,以查看代码。制作副本并创建新版本。编辑此新版本以打印复杂值。利润!我建议进行编辑,修复一些问题,以防复数为负数或给定列中的所有数字都是复数。但是标签仍然关闭,到目前为止我找不到解决方法。我建议进行编辑,以解决一些问题,以防复数为负数或给定列中的所有数字都是复数。标签仍然关闭,但是,我找不到一个办法来解决这个问题。