2017-07-15 638 views
0

这是我的第二个问题,所以请告诉我,如果我可以改进问的方式。matlab从数组中减去数组

我有一个角度数组,名为'度0'。现在我想计算(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
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 

功能大小回报甚至两个值的向量。你应该使用numel而不是大小作为循环变量,所以你可以避免这种问题。

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

+0

谢谢你的回答。这可能是一个原因,但我试图使用numel,并没有改变。 如果您确定,第一种方法没有错误,我将继续使用该方法。 – JustMe