【发布时间】:2014-03-18 22:37:32
【问题描述】:
我的问题在于 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')
谢谢
【问题讨论】:
-
请用行号发布整个错误消息,以便我们查看它发生的位置。你做过任何调试吗?错误是在调用
Nielsennewupdated之前、在Nielsennewupdated内部还是在Nielsennewupdated返回值之后发生?如果Nielsennewupdated返回该向量,也不需要预先分配thresh_strain(尽管您可能需要在Nielsennewupdated中预先分配)。 -
我认为您在
nelements = hist(thresh_strain(:),myUniqueValues);中遇到了错误。如果是,则意味着您不能有一个向量(在您的情况下为myuniquevalues),其中值在任何时间点都会减小。不过令人惊讶的是,您在此之前使用的是unique,它将按升序对值进行排序。
标签: matlab function histogram montecarlo