Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays matlab从数字中减去数组_Arrays_Matlab - Fatal编程技术网

Arrays matlab从数字中减去数组

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的概

这是我的第二个问题,请告诉我,如果我能改进提问方式

我有一个带角度的数组,名为'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);
如果你非常确定,这一定会做同样的事情,我也很感谢你提供的信息,那么其他地方正在发生有趣的事情

谢谢你抽出时间

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替代,但没有任何改变。如果您确定第一种方法没有错误,我将继续使用该方法。