如果由于某种原因我必须停止迭代,在 Matlab 中保存结果的有效方法是什么?

2024-04-11

我试图通过运行迭代来最小化我的目标函数,这可能需要很长时间(可能是一天或更长时间)。如果由于某种原因我必须停止程序或者它被挂起,那么保存迭代结果的有效方法是什么,这些迭代可能一直运行到程序因某种原因停止时。

我要保存的变量是: best_obj_fun and k_to_perturb_annealing_best

NOTE:我正在存储我的best_obj_fun在矩阵中,我只想要最后一次迭代时的值k_to_perturb_annealing_best

请参阅以下代码中的最后一个循环,了解当程序以某种方式停止时我想要拥有的变量(例如 CTRL+C):

%% Running iterations to find minimum objective function value

accept_iter=1;
for iter=1:100
    %# Choosing 'nRandomPoints' random points on the grid to sample from 'fixed_underlying_distribution'
    nRandomPoints=100;
    random_grid_points=randi(sqrt(nCell),[nRandomPoints,2]); %# two columns with x and y coord resp.
    repeated_set_of_coord=ismember(random_grid_points,fixed_grid_coordinates,'rows'); %# find repeated sets of coordinates

    while any(repeated_set_of_coord)
        random_grid_points(repeated_set_of_coord,:)=randi(sqrt(nCell),[sum(repeated_set_of_coord),2]); %# create new set of coordinates
        repeated_set_of_coord(repeated_set_of_coord)=ismember(random_grid_points(...
            repeated_set_of_coord,:),fixed_grid_coordinates,'rows'); %# check the new coordinates
    end
    linear_index_for_perturbation=sub2ind([sqrt(nCell),sqrt(nCell)],random_grid_points(:,1),...
        random_grid_points(:,2)); %# get a linear index into matrix to be perturbed
    k_to_perturb_annealing_initial=k_sisim_for_annealing;

    k_to_perturb_annealing_initial(linear_index_for_perturbation)=emprand(k_20_sampledata_sisim,nRandomPoints,1);

    %# computing the value of objective function for perturbed perm values
    [new_obj_fun,new_k_geomean]=obj_fun_for_gibbs_sampling(k_to_perturb_annealing_initial,x_200x200_gslib_format_vector...
        ,y_200x200_gslib_format_vector,gamma_k_underlying,mean_gamma_k_underlying,k_eff_WT);

    if  new_obj_fun < best_obj_fun(accept_iter)
        best_obj_fun(accept_iter+1)=new_obj_fun;
        k_to_perturb_annealing_best=k_to_perturb_annealing_initial;
        best_k_geomean=new_k_geomean;
        accept_iter=accept_iter+1;
    end
end

您可以尝试使用save-append循环内的选项。

假设您在循环开始之前已经初始化了变量,则可以在循环开始之前创建一个文件,并每次更新它。这是一个例子。

A=zeros(...);%# this is an example of your variables that are initialized before the loop
save('filename','A');%# this creates a .mat file with the initialized variables

%#begin loop
for i=...
    ...
    ... %# some computations here

    save('filename','A','-append') %# this just replaces the variables in the .mat file with their current values
end
%# end loop

您必须将整个变量保存到文件中,即,您不能这样做

save('filename','A(i)','-append')

您也可以每隔n第 次迭代,而不是每次迭代。如果您正在处理非常大的数据集并且一次只有一个元素发生变化,那么我建议只在每个n迭代,或者更好的是编写您自己的二进制文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果由于某种原因我必须停止迭代,在 Matlab 中保存结果的有效方法是什么? 的相关文章

  • 有没有办法分析 WCF 应用程序的性能?

    我们正在尝试测量我们的系统的性能 该系统是一个使用 WCF 调用的 NET 3 5 应用程序 问题是到目前为止 我们无法分析这些调用中的方法 编写了一个 winforms 客户端应用程序来测试我们的系统 我们尝试使用ANTS 4 Profi
  • 渲染 ThreeJS 应用程序第一帧时的性能问题

    目前 当我渲染以下内容时 我的 ThreeJS 应用程序的性能受到很大影响第一帧 它会导致 Edge 和 IE 11 浏览器冻结 5 秒 并弹出窗口指示 此窗口没有响应 这可能会吓到我的用户 使用 Chrome 的性能分析器 问题似乎来自几
  • 如何为已编译的 MATLAB 创建安装程序并要求用户接受我们的许可条款?

    我正在 MATLAB 中编写程序分发给 Windows 用户 我使用 MATLAB 编译器和 MATLAB r2014a 版本来创建程序 我可以使用 MATLAB 应用程序编译器创建 Windows 安装程序 并且它的工作效果可以接受 但是
  • 有效地生成所有排列

    我需要尽快生成所有排列 https en wikipedia org wiki Permutation整数的0 1 2 n 1并得到结果作为NumPy https numpy org 形状数组 factorial n n 或者迭代此类数组的
  • getappdata 在 MATLAB 中返回空矩阵

    我有一段代码 我在其中使用setappdata然后我使用以下方式调用数据getappdata即使它不为空 它也会返回一个空矩阵 我的一段简化代码如下 function edit1 Callback hObject eventdata han
  • 为什么 pandas 在简单的数学运算上比 numpy 更快?

    最近 我观察到 pandas 的乘法速度更快 我在下面的例子中向您展示了这一点 如此简单的操作怎么可能做到这一点 这怎么可能呢 pandas 数据帧中的底层数据容器是 numpy 数组 测量 我使用形状为 10k 10k 的数组 数据框 i
  • 确定向量中是否存在元素的最有效方法

    我有几种算法取决于确定元素是否存在于向量中的效率 在我看来 这 in 这相当于is element 应该是最有效的 因为它只返回一个布尔值 在测试了几种方法之后 令我惊讶的是 这些方法是迄今为止效率最低的 以下是我的分析 随着向量大小的增加
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN
  • 主目录 不允许下载媒体

    尝试将 PDF 文件保存在下载目录中 但之后getExternalStoragePublicDirectory在 Android Q 后完全弃用 无法将文件保存在 DCIM 或 Pictures 文件夹之外的任何其他位置 因为尝试在此处保存
  • 为什么 Java 11 中对于空白字符串 String.strip() 比 String.trim() 快 5 倍

    我遇到过一个有趣的场景 因为某些原因strip 针对空白字符串 仅包含空格 明显快于trim 在Java 11中 基准 public class Test public static final String TEST STRING 3 w
  • 大数组上的 SSE 性能较慢

    我是 SSE 编程新手 所以我希望有人可以帮助我 我最近使用 GCC SSE 内在函数实现了一个函数来计算 32 位整数数组的总和 下面给出了我的实现代码 int ssum const int d unsigned int len stat
  • 在 MATLAB 中模拟 C++ 模板

    我试图找出创建 C 模板或 Java 通用对象的替代方案的最佳方法 出于多种不同的原因 我过去曾多次想这样做 但现在我想做的是为几个相关的类创建 saveobj 和 loadobj 函数 我的想法是 我想要一组通用的例程来创建默认结构 然后
  • Matlab 图像数据的 hist 函数

    我是 Matlab 新手 我想制作自己的函数 与 imhist 显示图像数据的直方图 完成相同的工作 但我对此完全是新手 我不知道如何做开发这样的功能 我开始做一些东西 但它非常不完整 function output args myhist
  • 在所有浏览器中启用我的网站的平滑滚动

    我正在开发一个视差滚动网站Stellar http markdalgleish com projects stellar js and Skrollr https github com Prinzhorn skrollr图书馆 该网站在 F
  • JavaFX 中 WebView 的性能

    我有一个 HTML5 UI 和一个 Java 后端 并且希望避免在纯 java 中重建 HTML ui 所以我的想法是运行本地 Web 服务器并使用 WebView 在 本机 窗口中呈现它 解决方案似乎是使用可以嵌入到 swing 中的 J
  • linq2sql,存储库模式 - 如何从两个或多个表查询数据?

    我使用存储库模式 和 linq2sql 作为数据访问 并拥有例如 ProductsRep 和 CustomersRep 在非常简单的场景中 数据库有两个表 产品 产品 ID 客户 ID 产品名称 日期 和顾客 客户 ID 名字 姓氏 每个存
  • Android 性能:SharedPreferences 的成本

    当我的应用程序启动时 我使用分片首选项中的值填充容器类 这个想法是处理 SharedPreferences 和 PreferenceManager 一次 因为我猜它们很重 这是一个示例 SharedPreferences prefs Pre
  • 当我使用可变参数而不是常量参数时,为什么我的内联表 UDF 慢得多?

    我有一个表值内联 UDF 我想过滤该 UDF 的结果以获得一个特定值 当我使用常量参数指定过滤器时 一切都很好 并且性能几乎是瞬时的 当我使用可变参数指定过滤器时 它会花费明显更大的时间块 大约是逻辑读取的 500 倍和持续时间的 20 倍
  • 在matlab中,如何读取python pickle文件?

    在 python 中 我生成了一个 p 数据文件 pickle dump allData open myallData p wb 现在我想在Matlab中读取myallData p 我的Matlab安装在Windows 8下 其中没有Pyt
  • Rails Windows Vagrant 响应时间非常慢

    我在跑 Vagrant 1 7 1 Rails 4 1 4 Thin 1 6 1 Windows 7 每个静态文件的发送时间都超过一秒 在我的 PC 上加载一个页面可能需要大约 20 秒 而在同事的 Linux 机器上则只需瞬间 有一些帖子

随机推荐