MATLAB中的矩阵连接

时间:2011-02-13 16:07:53

标签: matlab wolfram-mathematica

我在Mathematica中有这个代码:

nxBin = Table[{-5 sX + (i - 0.5)*step, nBin[[i]]}, {i, 1, Length[nBin]}]

我在MATLAB中做到了这一点:

a=zeros(length(nBin),1);
nxBin=zeros(length(nBin),1);
for i=1:length(nBin)
    anew=a*step*(i-0.5) -5*sX;
    b=zeros(length(nBin(i)),1);
nxBin(i,:)=[anew , b]
end

但是MATLAB说

  

???使用==>时出错horzcat
  CAT参数维度不一致。

     

==>中的错误从52开始   nxBin(i,:)= [anew,b]

有谁能告诉我为什么会收到此错误?另外,我可以用更少的行来做到这一点吗?

1 个答案:

答案 0 :(得分:2)

你想用步骤(可能是直方图的x值)来连接n-by-1数组nBin。因此,您可以简单地创建“x-vector”并将它们组合起来。

nxBin = [ -5*sX + ((1:length(nBin))' - 0.5) * nStep, nBin(:)]

这是一步一步的

%# make a vector with values from 1 to nBin
x = 1:length(nBin);
%# transpose, since it's 1-by-n and we want n-by-1
x = x'; %'#
%# apply the modification to x
x = -5*sX + (x-0.5)*nStep;
%# catenate with nBin (the colon operator guarantees it's n-by-1
nxBin = [x, nBin(:)];

编辑

如果你想绘制这个,你可以做

plot(nxBin(:,1),nxBin(:,2),'.')

或者,如果我猜对了,那就是直方图

bar(nxBin(:,1),nxBin(:,2))