我的问题在于MCsolutionupdated()函数,因为我无法运行它超过20,000次迭代,因为我获得了错误“边缘向量必须单调非递减”。有时,我甚至为final_matrix获得了Inf元素(当我没有得到这个错误时),这也没有意义。当我运行Nielsennewupdated(casechoice,no_iterations)时,我可以运行它进行多次模拟,但我从未获得过Inf元素。所以,我认为MCsolutionupdated()必定存在问题。
function [final_matrix, thresh_strain] = MCsolutionupdated()
no_iterations = input('No. of iterations?:');
thresh_strain = zeros(1,no_iterations*16);
casechoice =input('Enter 1 for 1st Layup and 2 for 2nd layup:');
J = Nielsennewupdated(casechoice, no_iterations);
thresh_strain = J;
roundedValues = round(thresh_strain/.0001)*0.0001;
myUniqueValues = unique(roundedValues);
i = numel(myUniqueValues);
nelements = hist(thresh_strain(:),myUniqueValues);
for i=1:i
percent(i) = (nelements(1,i)/numel(thresh_strain))*100;
end
final_matrix = [myUniqueValues' percent'];
% uniqueValues,~,uniqueIndex] = unique(ans);
% frequency = accumarray(uniqueIndex(:),1)./numel(ans);
header = {'Threshold Strain' 'Probability of occurrence'};
xlswrite('results.xlsx', header)
xlswrite('results.xlsx', final_matrix,'A2')
由于
答案 0 :(得分:0)
你的错误就在这一行上(错误信息甚至可能说得那么多):
nelements = hist(thresh_strain(:),myUniqueValues);
问题是myUniqueValues
不是“单调不减少”。此示例产生相同的错误:
n = hist(randi(3,[1 10]),[3 2 1]);
导致
Error using histc
Edge vector must be monotonically non-decreasing.
Error in hist (line 92)
nn = histc(y,edges,1);
我不确定这是怎么回事,因为unique
应该对它的输出进行排序。所以我无法在R2013b中完全复制您的错误。也许您正在运行旧版本的Matlab。我会看看myUniqueValues
的价值是什么。
答案 1 :(得分:0)
这种类型的错误主要是由于hist
函数的第二个参数没有单调递减
答案 2 :(得分:0)
将您的unique
行更改为:
myUniqueValues = unique(roundedValues,'sorted');
您可能有一个旧版本,默认情况下不进行排序,而是使用“稳定”排序。