Arrays 将向量的输出显示为向量

Arrays 将向量的输出显示为向量,arrays,matlab,matrix,vector,Arrays,Matlab,Matrix,Vector,使用Matlab,我将显示以下21x4矢量数据的第1列和第3列、第2列和第3列、第4列和第3列之间的差异,并以21x3矢量显示输出 有人能帮忙吗 -48.0000-46.0000-38.0000-39.0000 -51.0000-49.3333-41.5218-48.0000 -49.0000-51.6667-44.0206-49.0000 -55.0000-53.3333-45.9588-49.0000 -56.0000-54.3333-47.5424-52.0000 -52.0000-53.

使用Matlab,我将显示以下21x4矢量数据的第1列和第3列、第2列和第3列、第4列和第3列之间的差异,并以21x3矢量显示输出

有人能帮忙吗

-48.0000-46.0000-38.0000-39.0000

-51.0000-49.3333-41.5218-48.0000

-49.0000-51.6667-44.0206-49.0000

-55.0000-53.3333-45.9588-49.0000

-56.0000-54.3333-47.5424-52.0000

-52.0000-53.6667-48.8814-52.0000

-53.0000-51.0000-50.0412-48.0000

-48.0000-51.6667-51.0643-48.0000

-54.0000-52.0000-51.9794-48.0000

-54.0000-52.6667-52.8073-50.0000

-50.0000-52.3333-53.5630-50.0000

-53.0000-54.3333-54.2583-50.0000

-60.0000-54.6667-54.9020-51.0000

-51.0000-54.0000-55.5012-51.0000

-51.0000-51.6667-56.0618-51.0000

-53.0000-52.3333-56.5884-51.0000

-53.0000-55.6667-57.0849-53.0000

-61.0000-58.6667-57.5545-53.0000

-62.0000-61.0000-58.0000-60.0000

-60.0000-60.0000-58.4238-58.0000


-58.0000-59.6667-58.8279-58.0000

第x列和第y列之间的差异可通过以下方式实现:

disp(myMatrix(:,x)-myMatrix(:,y));
disp()
函数实际上只是一个屏幕打印函数,该代码的核心依赖于
myMatrix
的括号内的内容:冒号操作符
通过调用圆括号中的第一个索引标识行,而第二个索引标识列来表示所有内容,说
myMatrix(:,x)
意味着“返回myMatrix的所有行和第x列”

因此,在您的具体案例中:

  • 第1列和第3列之间的差异
  • 第2列和第3列之间的差异
  • 第4列和第3列之间的差异
可以(分别)实现为

其中
myMatrix
,显然是您的21x4矩阵

如果要在矩阵中串联这些值,可以通过简单的数组串联轻松实现:

myOutput=[myMatrix(:,1)-myMatrix(:,3) , myMatrix(:,2)-myMatrix(:,3) , myMatrix(:,4)-myMatrix(:,3)];

其中每个结果列都将是
myOutput
中的一列。最后,您还可以通过
disp()
命令显示整个
myOutput
矩阵。

第x列和第y列之间的差异可以通过以下方式实现:

disp(myMatrix(:,x)-myMatrix(:,y));
disp()
函数实际上只是一个屏幕打印函数,该代码的核心依赖于
myMatrix
的括号内的内容:冒号操作符
通过调用圆括号中的第一个索引标识行,而第二个索引标识列来表示所有内容,说
myMatrix(:,x)
意味着“返回myMatrix的所有行和第x列”

因此,在您的具体案例中:

  • 第1列和第3列之间的差异
  • 第2列和第3列之间的差异
  • 第4列和第3列之间的差异
可以(分别)实现为

其中
myMatrix
,显然是您的21x4矩阵

如果要在矩阵中串联这些值,可以通过简单的数组串联轻松实现:

myOutput=[myMatrix(:,1)-myMatrix(:,3) , myMatrix(:,2)-myMatrix(:,3) , myMatrix(:,4)-myMatrix(:,3)];

其中每个结果列都将是
myOutput
中的一列。最后,还可以使用
disp()
命令显示整个
myOutput
矩阵。

首先,将值保存到变量中,如下所示:

var = [...
-48.0000 -46.0000 -38.0000 -39.0000
-51.0000 -49.3333 -41.5218 -48.0000
-49.0000 -51.6667 -44.0206 -49.0000
-55.0000 -53.3333 -45.9588 -49.0000
-56.0000 -54.3333 -47.5424 -52.0000
-52.0000 -53.6667 -48.8814 -52.0000
-53.0000 -51.0000 -50.0412 -48.0000
-48.0000 -51.6667 -51.0643 -48.0000
-54.0000 -52.0000 -51.9794 -48.0000
-54.0000 -52.6667 -52.8073 -50.0000
-50.0000 -52.3333 -53.5630 -50.0000
-53.0000 -54.3333 -54.2583 -50.0000
-60.0000 -54.6667 -54.9020 -51.0000
-51.0000 -54.0000 -55.5012 -51.0000
-51.0000 -51.6667 -56.0618 -51.0000
-53.0000 -52.3333 -56.5884 -51.0000
-53.0000 -55.6667 -57.0849 -53.0000
-61.0000 -58.6667 -57.5545 -53.0000
-62.0000 -61.0000 -58.0000 -60.0000
-60.0000 -60.0000 -58.4238 -58.0000
-58.0000 -59.6667 -58.8279 -58.0000 ];
其次,您可以通过var的第一个参数访问列,并使用特殊字符“:”选择所有行值;即:

变量(:,1)将选择列1中的所有值

var(:,1)-var(:,2) 
将给出这两列之间的差异

剩下的你可以算出来

您的ourput可以更简单地显示为:

output = [var(:,1)-var(:,3) var(:,2)-var(:,3) var(:,4)-var(:,3)]

首先,将值保存到变量中,如下所示:

var = [...
-48.0000 -46.0000 -38.0000 -39.0000
-51.0000 -49.3333 -41.5218 -48.0000
-49.0000 -51.6667 -44.0206 -49.0000
-55.0000 -53.3333 -45.9588 -49.0000
-56.0000 -54.3333 -47.5424 -52.0000
-52.0000 -53.6667 -48.8814 -52.0000
-53.0000 -51.0000 -50.0412 -48.0000
-48.0000 -51.6667 -51.0643 -48.0000
-54.0000 -52.0000 -51.9794 -48.0000
-54.0000 -52.6667 -52.8073 -50.0000
-50.0000 -52.3333 -53.5630 -50.0000
-53.0000 -54.3333 -54.2583 -50.0000
-60.0000 -54.6667 -54.9020 -51.0000
-51.0000 -54.0000 -55.5012 -51.0000
-51.0000 -51.6667 -56.0618 -51.0000
-53.0000 -52.3333 -56.5884 -51.0000
-53.0000 -55.6667 -57.0849 -53.0000
-61.0000 -58.6667 -57.5545 -53.0000
-62.0000 -61.0000 -58.0000 -60.0000
-60.0000 -60.0000 -58.4238 -58.0000
-58.0000 -59.6667 -58.8279 -58.0000 ];
其次,您可以通过var的第一个参数访问列,并使用特殊字符“:”选择所有行值;即:

变量(:,1)将选择列1中的所有值

var(:,1)-var(:,2) 
将给出这两列之间的差异

剩下的你可以算出来

您的ourput可以更简单地显示为:

output = [var(:,1)-var(:,3) var(:,2)-var(:,3) var(:,4)-var(:,3)]

要计算给定列的差异,可以使用以下方法:

x = [-48.0000 -46.0000 -38.0000 -39.0000
     -51.0000 -49.3333 -41.5218 -48.0000
     -49.0000 -51.6667 -44.0206 -49.0000
     -55.0000 -53.3333 -45.9588 -49.0000
     -56.0000 -54.3333 -47.5424 -52.0000]; %// data
c = 3; %// index of reference column
y = bsxfun(@minus, x(:, [1:c-1 c+1:end]), x(:,c));

y =
  -10.0000   -8.0000   -1.0000
   -9.4782   -7.8115   -6.4782
   -4.9794   -7.6461   -4.9794
   -9.0412   -7.3745   -3.0412
   -8.4576   -6.7909   -4.4576

要计算给定列的差异,可以使用以下方法:

x = [-48.0000 -46.0000 -38.0000 -39.0000
     -51.0000 -49.3333 -41.5218 -48.0000
     -49.0000 -51.6667 -44.0206 -49.0000
     -55.0000 -53.3333 -45.9588 -49.0000
     -56.0000 -54.3333 -47.5424 -52.0000]; %// data
c = 3; %// index of reference column
y = bsxfun(@minus, x(:, [1:c-1 c+1:end]), x(:,c));

y =
  -10.0000   -8.0000   -1.0000
   -9.4782   -7.8115   -6.4782
   -4.9794   -7.6461   -4.9794
   -9.0412   -7.3745   -3.0412
   -8.4576   -6.7909   -4.4576

var(:,[1 2 4])-var(:,3)
应该做同样的事情,对吗?@bicker In Octave是;-)在Matlab
bsxfun(@减号,var(:,[1,2,4])中,var(:,3))
。你们是最棒的<代码>变量(:,[1 2 4])-变量(:,3)应该做同样的事情,对吗?@bicker In Octave yes;-)在Matlab
bsxfun(@减号,var(:,[1,2,4])中,var(:,3))
。你们是最棒的!谢谢你们是最棒的!谢谢你们是最棒的!谢谢你们是最棒的!谢谢你们是最棒的!