Arrays matlab从数字中减去数组
这是我的第二个问题,请告诉我,如果我能改进提问方式 我有一个带角度的数组,名为'degree0'。现在我想计算(1-cos(度))。因此,我使用了两种选择: 方法1:Arrays matlab从数字中减去数组,arrays,matlab,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的概
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);
如果你非常确定,这一定会做同样的事情,我也很感谢你提供的信息,那么其他地方正在发生有趣的事情
谢谢你抽出时间
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而不是size作为循环变量,这样可以避免此类问题
顺便说一下,这是因为您使用了错误的函数。它与数组的减法无关。谢谢您的回答。这可能是一个原因,但我尝试使用numel替代,但没有任何改变。如果您确定第一种方法没有错误,我将继续使用该方法。