matlab从数字中减去数组

时间:2017-07-15 00:45:25

标签: arrays matlab

这是我的第二个问题,所以请告诉我,我是否可以改进提问方式。

我有一个角度数组,命名为' degree0'。现在我想计算(1 - cos(度))。因此我使用了两个选项:

方法1:

mincosd0 = 1 - cosd(degree0);

方法2:

for i=1:size(degree0)
mincosd0(i) = (1 - cosd(degree0(i)));
end

据我所知,Matlab使用数组的方式,这两段代码应该做同样的事情。 但是我在每种情况下得到的结果(当计算mincosd0的概率偏差时)看起来不同,我不能说,为什么存在差异或哪种方式是计算这个的正确方法。

这是情节的代码,但在两种情况下都是相同的:

r2 = pi/500:2*pi/500:2*pi-pi/500; 
mincosx2 = sort((1-cos(r2))); % locations in the centre of each bin

[N20,edges20] = histcounts(mincosd0,'NumBins',500,'BinEdges', 0:2/500:2);
for n = 1:500,  prob1cos(n) = N20(n)/numel(degree0);  end
plot (mincosx2,prob1cos);

如果您非常确定,这必须做同样的事情,我也感谢这些信息,然后在其他地方发生了有趣的事情。

感谢您的时间

1 个答案:

答案 0 :(得分:1)

a = rand(3,1);
for i = 1:size(a), fprintf('%g ', i); end % gives 1 2 3 as expected

a = rand(1,3);
for i = 1:size(a), fprintf('%g ', i); end % gives only 1

函数 size 即使对向量也会返回两个值。您应该使用 numel 而不是 size 作为循环变量,这样您就可以避免这种问题。

顺便说一下,这是因为你使用了错误的功能。它与减去数组无关。