小编Dou*_*ubt的帖子

MATLAB for循环索引的最佳实践

我很惊讶地发现在运行MATLAB for循环之间存在以下差异成本:

ksize = 100;
klist = 1:ksize;

tic
for m = 1:100000        
    for k = 1:ksize

    end        
end
toc

tic
for m = 1:100000        
    for k = klist

    end        
end
toc
Run Code Online (Sandbox Code Playgroud)

唯一的区别是索引列表的创建方式.我怀疑第二个版本会更快,但是!

Elapsed time is 0.055400 seconds.
Elapsed time is 1.695904 seconds.
Run Code Online (Sandbox Code Playgroud)

我的问题有两个:对上述结果负责的是什么,以及在MATLAB编程中这种细微差别(或类似的)发生在哪里?我希望将来能够更好地发现这些低效率.谢谢大家.

indexing performance matlab for-loop

11
推荐指数
1
解决办法
5949
查看次数

如何mpf数组?

我有:

import numpy as np
from mpmath import *

mpf(np.array(range(0,600)))
Run Code Online (Sandbox Code Playgroud)

但它不会让我这样做:

TypeError: cannot create mpf from array
Run Code Online (Sandbox Code Playgroud)

那我该怎么办?

基本上我将使用这个数组,并根据环境(例如1.35626567e10846.2345252e-2732)因此需要mpf ,以元素方式乘以非常大或令人难以置信的小数.

更具体地说,我将使用besseli和besselk函数创建令人难以置信的大而令人难以置信的小值.

如何获得一个mpf数组来保存这些数字?

python arrays numpy mpf mpmath

10
推荐指数
1
解决办法
5307
查看次数

gnuplot将终端重置为默认输出

在gnuplot中,使用命令

set term pdf
set out 'filename.pdf'
plot sin(x)
Run Code Online (Sandbox Code Playgroud)

允许我将图像写入pdf.在这样做之后,如何重置输出以便plot sin(x)使用内置的gnuplot显示创建图像(因为它在没有set out首先使用的情况下).

现在我只能通过重启gnuplot来实现这个目标.该reset命令似乎没有帮助.谢谢大家!

gnuplot

5
推荐指数
2
解决办法
2万
查看次数

mpmath中的元素操作

我期待mpmath在Python数组上执行元素操作.例如,

import mpmath as mpm
x = mpm.arange(0,4)
y = mpm.sin(x)        # error
Run Code Online (Sandbox Code Playgroud)

或者,使用mpmath矩阵

x = mpm.matrix([0,1,2,3])
y = mpm.sin(x)             # error
Run Code Online (Sandbox Code Playgroud)

mpmath在这个领域是否有任何能力,或者是否有必要循环参赛作品?

python mpmath

5
推荐指数
1
解决办法
1194
查看次数

numpy.savetxt的分隔符

我正在尝试使用一个numpy数组写入.txt文件numpy.savetxt.我可以说,以下代码遵循文档:

z = np.array([1,2,3])
np.savetxt('testdata.txt',z,delimiter='hi')
Run Code Online (Sandbox Code Playgroud)

但是,使用记事本打开的输出文件显示

1.000000000000000000e+002.000000000000000000e+003.000000000000000000e+00
Run Code Online (Sandbox Code Playgroud)

没有hi值之间的分隔符.任何想法为什么会这样?我的目标是在每个值之间添加新行.

python file-io numpy python-3.x

5
推荐指数
1
解决办法
3806
查看次数

MATLAB中的矩阵运算

我试图简化我的代码,我遇到了一个小问题.让

v  = [1; 2; 3];
a1 = [4; 5; 6];
a2 = [7; 8; 9];
A  = [a1, a2];
Run Code Online (Sandbox Code Playgroud)

我的目标是计算

u = [v.*a1, v.*a2]
Run Code Online (Sandbox Code Playgroud)

只使用v一次.这可能吗?

matlab matrix vectorization

2
推荐指数
1
解决办法
102
查看次数

带元素操作的MATLAB符号输出

有没有将MATLAB的符号表达式转换为可以按元素方式计算的表达式的函数或技术?

例如,命令

a = solve('x^2 + a*x + b == 0')
Run Code Online (Sandbox Code Playgroud)

给出输出

a = 
   (a^2 - 4*b)^(1/2)/2 - a/2
 - a/2 - (a^2 - 4*b)^(1/2)/2
Run Code Online (Sandbox Code Playgroud)

然而,允许ab成为数组的所需输出是

a = 
   (a.^2 - 4*b).^(1/2)/2 - a/2
 - a/2 - (a.^2 - 4*b).^(1/2)/2
Run Code Online (Sandbox Code Playgroud)

matlab symbolic-math

2
推荐指数
1
解决办法
589
查看次数

将数组从MATLAB转换为numpy

我正在定义一个两个数组,两端都有一个.在MATLAB中,这可以通过以下方式实现

x = [1 2*ones(1,3) 1]
Run Code Online (Sandbox Code Playgroud)

然而,在Python中,numpy提供了一些完全不同的东西:

import numpy
numpy.array([[1],2*numpy.ones(3),[1]])
Run Code Online (Sandbox Code Playgroud)

在Python中执行此MATLAB命令的最有效方法是什么?

python arrays matlab numpy

1
推荐指数
1
解决办法
146
查看次数