问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

matlab 如何使用矩阵运算代替for循环?

发布网友 发布时间:2022-04-19 01:40

我来回答

2个回答

懂视网 时间:2022-04-19 06:01

比如求一个平面稳态导热问题,控制方程就是拉普拉斯方程:


 
abla^{2}=0
(我才发现原来有[插入公式]这个功能)

按照最简单的毅种循环来写就是:

def laplace(u):
 nx, ny = u.shape
 for i in xrange(1,nx-1):
  for j in xrange(1, ny-1):
  u[i,j] = ((u[i+1, j] + u[i-1, j]) * dy2 + (u[i, j+1] + u[i, j-1]) * dx2) / (2*(dx2+dy2))

你们都不知道numexpr的么←_←
比numpy还黑的科技→_→

虽然能用的运算没多少吧但是对大矩阵的整体运算还是很快的←_← 最近正好在学numpy这个模块。题主可以看看这个教程,不是很全,但是科学计算方面还是有不少东西的:NumPy-快速处理数据
引用教程中的代码:

import time
import math
import numpy as np
x = [i * 0.001 for i in xrange(1000000)] # 初始化数组0.000~999.999 
start = time.clock()
for i, t in enumerate(x):  # 用循环计算正弦值
 x[i] = math.sin(t)  
print "math.sin:", time.clock() - start

x = [i * 0.001 for i in xrange(1000000)]
x = np.array(x)    # 初始化矩阵(这里是一维)
start = time.clock()
np.sin(x,x)    # numpy的广播计算(代替循环)
print "numpy.sin:", time.clock() - start
# 
输出 # math.sin: 1.15426932753 # numpy.sin: 0.0882399858083

用numpy, Cython, 或者 weave
Speed up Python
SciPy官网有关于如何提高Python Performance的教程
PerformancePython
用Pyrex/Cython或者weave基本上可以达到C++的速度。
Laplace的例子,500*500矩阵,100次循环。
numpy和pandas.DataFrame的矩阵运算可以广播,可以map。 第一个技巧是,用map和lambda表达式来生成你要的迭代参数,比如生成一个平方表:map(lambda x: x*x, xrange(100)),这是个黑科技,可以很快速的生成你需要的循环参数;
第二个技巧是,熟练使用矩阵掩膜(mask)来简化循环,比如把矩阵a中小于100的值都置零:a[a<100] = 0,比循环快很多;
第三个技巧是,多使用各种库,如numpy, scipy(signal库简直好顶赞),如果你做图像,opencv库是唯一的选择。
大致是这样,实际应用中更多的是前两个trick混合使用。 想要快,就内嵌C,Python是解释性语言,会比较慢。
有成熟的计算软件时用的C/C+++python的模式,核心算法和耗时最多的逻辑用C/C++,其他用python.

热心网友 时间:2022-04-19 03:09

clear;
clc;
a=[ 1 1;
1 1;
1 0;
2 0;
2 1;
2 1;
3 1;
3 1;
3 1];

a1 = a(:,1);
a2 = a(:,2);
index1 = (a1(:,1)==1);
index2 = (a1(:,1)==2);
index3 = (a1(:,1)==3);
sum1 =sum(a2(index1,:));
sum2 = sum(a2(index2,:));
sum3 = sum(a2(index3,:));
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
生产车间员工岗位职责及权限、任职要求分别是什么 车间普工岗位职责(集合6篇) "上海"的地名是谁起的,什么意思? 老公的爸妈是表亲,我爸妈也是表兄妹,孩子会怎么样吗? 爸妈是近亲结婚他们是表兄妹 我生孩子会有问题吗? 爸妈是亲表兄妹结婚对这代没事。。不知道下一代有问题没。。。_百度... 鉴证实录 法证女朋友怎么死的0 沈阳御通实业有限公司怎么样? 玉环御通广告有限公司御通服务 问御石通效果怎么样啊,治疗结石的 win7系统怎么看无线密码是多少 win7系统怎么查看连接到电脑上的无线网络密码 win7 怎么查看电脑无线网密码 如何在网上营业厅查询积分? 梦上联,华夏儿女放飞中国梦下联 中国梦 我的梦 征文 要求原创 800字 谢谢 华夏儿女放飞中国梦上联,华夏儿女放飞中国梦下联 《我的梦,中国梦》书信700字左右,快点6:00要 华夏儿女共筑中国梦对联 网上营业厅如何查询积分? 中国梦上联,华夏儿女放飞中国梦下联 我的中国梦作文600字求解&#x25C9;&#x203F;&#x25C9; 我的中国梦,为题写1000字作文 我的中国梦 1000字左右 急!急! 作文:中国梦800字 作文:中国梦800字, 炎帝大舞台,有梦你就来,,,的歌词?谢谢 上议院、下议院指得都是什么啊? 绿都澜湾10号楼到高铁路有多远 今年第13号台风“天鸽”升至强台风级别了吗? 在家里,哪些地方不适合摆上植物?有什么风水的说法吗? 家里的植物都有哪些风水作用 近十年来中国遭受很大自然灾害有哪些 进几十年世界上发生的自然灾害 过去十年是有记录以来最热十年,十年间因为气温上升引发的灾难有哪些? 求我国近十年重大自然灾害的记录 在阿里上面怎么知道我付款的时候是担保交易的 收费范围: 1、直接登录支付宝网站使用 “我要收款”、“担保交易收款”、“我要付款”、“交房租”、“送 不是淘宝 是私下QQ聊的 用支付宝担保交易收款,买家付款收到货后 不满意怎么办啊 在python里用loop做矩阵的置换 请问这个贴纸是什么软件 女生说“呼呼”什么是意思啊? 把你的树叶贴画画出来再用几句话写写你的树叶贴画 gba蜡笔小新2 怎么过 猪猪侠点读笔有些什么功能? 猪猪侠点读笔对于爱玩的孩子,学习上会有帮助吗? 有用过猪猪侠点读笔的可以说说吗?它的质量与性能如何? 购买基金主要看什么指标?是否单位净值越低越应考虑买入?收益和什么有关? 求一部古希腊或者古埃及电影的名字 猪猪侠点读笔具有哪些DIY功能?贵不贵?