我在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]
有谁能告诉我为什么会收到此错误?另外,我可以用更少的行来做到这一点吗?
答案 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))