matlab下的并行循环

简介: 解决matlab多层for导致运行速度慢的问题

我们知道,matlab 更适合的处理对象是矩阵,而不是大规模的循环运算。当有时不得不使用 for 循环时,如果提高 for 循环的执行效率呢。这就是 parfor 的用武之地了,既然是并行运算,就是一次可以执行多次 iterations 处理(类似于操作系统的多线程作业),以加快循环的速度。与传统 for 循环最大的不同在于,parfor 执行迭代时并不按照一个确定的顺序(因此,需要求不同的迭代之间,彼此独立,不存在 A(i) = A(i-1)/A(i+1) 的情况,)。

i=1:100000;
j=1:100000;
Y=0;
parfor i=1:100000
    for j=1:1:100000
        Y=Y+i+j;
    end    
end

parfor注意事项?

  • matlab默认是不能在parfor里面使用save函数的。因为matlab不知道要把工作区的哪个变量保存到内存中。但是有时候,你的实验里确实需要保存中间的结果,那么matlab还是有解决方案的:1)你可以将需要保存文件的操作放进另一个函数里进行操作,然后再当前的parfor循环体内调用这个函数parsave[1, 2](链接中有具体的代码参考)。2)你也可以不用save的操作,在需要保存的数据后断点,然后自己实现保存操作。
  • 用parfor循环的下标必须为连续的递增整数。
    ————————————————

    图形化使用方法

    简单步骤如下:

1.点击matlab最底下左边的正三角标号,选择“start parallel pool”(当然用其他方式开启也可以);

2.将符合条件的循环for改成parfor即可开始并行运算。

3.payfor不可循环嵌套

parfor要求循环中的数据没有上下依赖,每个循环之间相互独立,这样才能在多个处理器上运行并行任务。

% 读取数据
path1="C:\Users\32649\Desktop\nc\test\Brother\+0.1\differ_+0.1.nc";
nlat=double(ncread(path1,'lat')); %读取纬度变量,为二维数据省略meshgrid
nlon=double(ncread(path1,'lon')); %读取经度变量
pr=double(ncread(path1,'discharge')); %获取变量数据
[mlat,mlon]=meshgrid(nlat,nlon);
mkdir('img') %创建img子文件夹
par=parpool('local', 6); %设置6个处理器
% 展示
parfor day=1:size(pr,3) %展示第几层的数据,数据依赖于nc文件,层数代表时间`
    m_proj('miller','lon',[85 131],'lat',[18 38]); %设置投影方式,经纬度范围,经纬度范围可以提前在arcgis中查看(这里对应的经度:85-131;纬度:18-38)
    m_contourf(mlon,mlat,pr(:,:,day),'linestyle','none'); 
    % colormap(flipud(m_colmap('hsv')));%设置颜色legend
    color=cbrewer2('div','RdBu',10,'linear');% 生成PuBu的配色方案的color矩阵,10就是把色带分为10份 
    colormap(color);%将color配色用于colormap
    hold on
    m_coast('line','Color', [.5 .5 .5]);% 只保留轮廓线
    % m_grid('linestyle','none','box','fancy','tickdir','out','LineWidth',0.5); %设置网格
    m_grid %设置网格
    colorbar;
    % set(gca,'CLim',[-60,20]) %指定颜色范围,这里是-60到20
    title(['time: ', num2str(day)]) %设置标题
    hold off
    saveas(gcf, ['img\', num2str(day), '.jpg'])
end

参考文章:Matlab并行计算(新手)

目录
相关文章
|
10月前
|
机器学习/深度学习 传感器 算法
Matlab 蛇算法优化门控循环单元(SO-GRU)的数据回归预测
Matlab 蛇算法优化门控循环单元(SO-GRU)的数据回归预测
|
10月前
|
机器学习/深度学习 传感器 算法
Matlab 哈里斯鹰算法优化门控循环单元(HHO-GRU)的数据回归预测
Matlab 哈里斯鹰算法优化门控循环单元(HHO-GRU)的数据回归预测
|
2月前
EI级 | Matlab实现VMD-TCN-GRU变分模态分解结合时间卷积门控循环单元多变量光伏功率时间序列预测
EI级 | Matlab实现VMD-TCN-GRU变分模态分解结合时间卷积门控循环单元多变量光伏功率时间序列预测
EI级 | Matlab实现VMD-TCN-GRU变分模态分解结合时间卷积门控循环单元多变量光伏功率时间序列预测
|
10月前
|
机器学习/深度学习 传感器 算法
【GRU分类】基于注意力机制门控循环单元attention-GRU实现数据多维输入单输出分类附matlab代码
【GRU分类】基于注意力机制门控循环单元attention-GRU实现数据多维输入单输出分类附matlab代码
|
10月前
|
机器学习/深度学习 传感器 算法
Matlab 向量加权算法优化门控循环单元(INFO-GRU)的数据回归预测
Matlab 向量加权算法优化门控循环单元(INFO-GRU)的数据回归预测
|
6天前
|
机器学习/深度学习 数据可视化 算法
探索MATLAB世界:掌握基础知识与实用技能(1. MATLAB环境与基本操作 2. 数据类型与变量 3. 条件与循环,1. 数据分析与统计 2. 图像处理与计算机视觉 3. 信号处理与控制系统)
探索MATLAB世界:掌握基础知识与实用技能(1. MATLAB环境与基本操作 2. 数据类型与变量 3. 条件与循环,1. 数据分析与统计 2. 图像处理与计算机视觉 3. 信号处理与控制系统)
8 0
|
2月前
|
机器学习/深度学习 算法
m基于GA-GRU遗传优化门控循环单元网络的电力负荷数据预测算法matlab仿真
在MATLAB 2022a中,一个基于遗传算法优化的GRU网络展示显著优化效果。优化前后的电力负荷预测图表显示了改进的预测准确性和效率。GRU,作为RNN的一种形式,解决了长期依赖问题,而遗传算法用于优化其超参数,如学习率和隐藏层单元数。核心MATLAB程序执行超过30分钟,通过迭代和适应度评估寻找最佳超参数,最终构建优化的GRU模型进行负荷预测,结果显示预测误差和模型性能的提升。
138 4
|
21天前
|
机器学习/深度学习 算法
m基于PSO-GRU粒子群优化长门控循环单元网络的电力负荷数据预测算法matlab仿真
摘要: 在MATLAB 2022a中,对比了电力负荷预测算法优化前后的效果。优化前为"Ttttttt111222",优化后为"Tttttttt333444",明显改进体现为"Tttttttttt5555"。该算法结合了粒子群优化(PSO)和长门控循环单元(GRU)网络,利用PSO优化GRU的超参数,提升预测准确性和稳定性。PSO模仿鸟群行为寻找最优解,而GRU通过更新门和重置门处理长期依赖问题。核心MATLAB程序展示了训练和预测过程,包括使用'adam'优化器和超参数调整,最终评估并保存预测结果。
20 0
|
2月前
|
人工智能 算法
Matlab中用内建函数代替for循环
Matlab中用内建函数代替for循环
46 2
|
9月前
|
机器学习/深度学习 算法
基于GRU门控循环网络的时间序列预测matlab仿真,对比LSTM网络
基于GRU门控循环网络的时间序列预测matlab仿真,对比LSTM网络

热门文章

最新文章