我是第一次接触Matplotlib和Python。我主要使用Matlab。目前,我正在使用Python代码,我想在其中运行一个循环。在每个循环中,我将进行一些数据处理,然后根据处理后的数据显示图像。当我进入下一个循环时,我希望关闭之前存储的图像,并基于最新数据生成一个新图像。
换句话说,我想要一个等同于以下Matlab代码的python代码:
x = [1 2 3];
for loop = 1:3
close all;
y = loop * x;
figure(1);
plot(x,y)
pause(2)
end
我尝试了以下python代
我试图在Python中复制一些Matlab代码,下面是我的Matlab代码:
for k = 1:N
if x(k) > 0.6 %triggers, when Amplitude is above 0.6
timeOver = ['Abnormal reading detected at Time ', num2str(t(k)), 's. Please change cutting tool !!']; % creating a warning sign to display when abnormality is present
我一直在将MATLAB代码移植到Python上,经过大量的工作,我已经有了可以工作的东西。然而,缺点是Python比MATLAB运行我的代码更慢。我知道使用优化的ATLAS库会加快速度,但实际上实现这一点会让我感到困惑。下面是正在发生的事情:
我在没有安装BLAS的情况下启动ipython会话:
import numpy.distutils.system_info as sysinfo
import time
In [11]: sysinfo.get_info('atlas')
Out[11]: {}
timeit( eig(randn(1E2,1E2)) )
100 loo
我试图用for循环在一个matplotlib图上绘制多个不同的图。目前,在matlab中一切正常,如下图所示,然后可以将图形保存为视频帧。Here是在matlab中生成的10帧样本视频的链接。 ? 在python中,尝试如下所示 import matplotlib.pyplot as plt
for frame in range(FrameStart,FrameEnd):#loop1
# data generation code within a for loop for n frames from source video
array1 = np.zeros((200, 3800)
我正在寻求将工作流从MATLAB迁移到Python。我将做大量的大图像过滤,并立即遇到一个性能障碍。在MATLAB R2022a中,用10西格玛高斯滤波器对11587乘13744进行滤波需要少于2秒的时间:
tic, imgf=imgaussfilt(im,10); toc
Elapsed time is 1.792801 seconds.
我在scipy 1.8.0和skimage 0.19.1中尝试了同样的方法,两者都要慢得多:
%timeit scipy.ndimage.gaussian_filter(im, 10, truncate=2)
4.89 s ± 15.4 ms per lo
不久前,我偶然发现了这个。它评估了python中几种级联方法的性能。下面是它比较的6种方法中的4种:
Python字符串连接方法
方法1:朴素附加
def method1():
out_str = ''
for num in xrange(loop_count):
out_str += `num`
return out_str
方法4:构建一个字符串列表,然后加入它
def method4():
str_list = []
for num in xrange(loop_count):
str_list.append(`nu
为了更好地理解串口通信,我尝试编写一些示例代码,其中Matlab有一个循环运行,它连续地将数据发送到串口,而运行在同一台windows机器上的Python脚本侦听此端口,然后接收和打印任何接收到的数据。
在Matlab中,我编写了一个简单的循环,它向端口COM1发送99个测试信号,
% Setup a serial port and open it
tep=serial("COM1", "Baudrate", 9600);
fopen(tep);
% this loop is supposed to send a number to a serial port
我最近问了。我得到了两个答案,这对我有很大帮助,但根据我的计时,似乎所有的Matlab解决方案都比Numpy解决方案慢得多。不同函数的代码可以在我前面的问题中找到,但是为了了解我正在做什么,我给出了Numpy“循环”解决方案,这个解决方案当然不是最快的,但它可能是最简单的:
def dealiasing2d(where, data):
nk, n0, n1 = data.shape
for i0 in xrange(n0):
for i1 in xrange(n1):
if where[i0, i1]:
d
在我的代码中,有一个矩阵是动态增加大小的。Matlab中的伪码如下:
cnt = 0
for ii = 1:M
for jj = 1:N
if (condition satisfied)
cnt = cnt + 1
A(cnt, :, :) = I # I is a matrix that is created within the loop
end
end
end
如何使用NumPy在Python语言中实现此功能?
我对Matlab还是个新手。我使用parfor循环来完成一个非常耗时的任务。请参见下面的代码片段。然而,我从Matlab得到了错误信息。有人能帮上忙吗?我读了关于parfor的文档,但不知道该怎么办……
谢谢。
The parfor loop cannot run due to the way variable "M" is used
The parfor loop cannot run due to the way variable "T" is used
Explanation
MATLAB runs loops in parfor function
我正在尝试将一些代码从MATLAB移植到Python。MATLAB使用abs(数据)来获得数据中复数的绝对值。我使用h5py模块将其放入ndarray(dim - (151402, 16, 64))中。这个数组包含实数和图像的值,我想要计算它们的绝对值。Numpy文档建议使用np.abs函数,但在此ndarray上使用时,我会得到以下结果 error --> `numpy.core._exceptions.UFuncTypeError: ufunc 'absolute' did
not contain a loop with signature matching ty
可能重复:
当Matlab用户切换到python时,我感到很沮丧,因为我不知道所有的窍门,直到代码正常运行时才会被困在一起。下面是一个示例,其中我有一个要添加虚拟列的矩阵。当然,下面有一种比zip vstack方法更简单的方法。这很有效,但这完全是一次尝试。请指点我。提前感谢您抽出时间进行本教程。
# BEGIN CODE
from pylab import *
# Find that unlike most things in python i must build a dummy matrix to
# add stuff in a for loop.
H = ones(
我正在尝试使用Python运行Matlab代码。我试着按照这个上给出的说明去做。
当尝试通过Python导入Matlab时,它是使用pip install matlab安装的。
但是,导入matlab.engine会产生错误No module named 'matlab.engine'; 'matlab' is not a package。它也不能使用pip install engine安装。
如何让代码运行?我正在运行的Python代码如下:
import matlab.engine
eng = matlab.engine.start_matlab()
eng
我有用户Matlab函数。这是别人写的。该文件中有多个函数,但我尝试调用的第一个函数与.m文件itsel同名。它有4个参数(字符串,布尔值)。在Matlab中,我通常这样调用它: function('string','string,true)当在Python中尝试时,我使用以下代码。 def CodeGenerationAndResim(self, Models=None, Resim=False, Type='TW'):
""" This function will start Matlab and generates
我似乎已经把一切都安装好了。我可以在jupyter中运行disp('statement')。内核框显示的是Matlab。
但在Jupyter我还是得到了
import matlab.engine
错误:
The import statement 'import matlab.engine' cannot be found or cannot be imported. Imported names must end with '.*' or be fully qualified.
在MATLAB端,在我的conda环境中,我能够进入Python3.
我有一个用Python创建的计算,我试图将其转换为Octave 4.2.2,这与Matlab代码类似。
Python代码:
def gcd(a,b):
if b == 0:
return a
else:
return gcd(b,a%b)
def lcm(a,b):
return a*b//gcd(a,b)
def NumberOfShifts(m,n):
N = 1
l = min(-(-m//2),-(-n//2))
for k in range(1,l):
N = lcm(N,2+m+n-4*k)
return 2*N
如果m和n都
我需要安装MATLAB引擎,以便Python调用python函数。
我试着用帮助的步骤
我用的是MATLAB 2015a
我不能从CMD运行setup.py
在帮助说明中,他们要求我在这个dir上找到setup.py:
C:\Program Files\MATLAB\MATLAB Production Server\R2015a\matlabroot\extern\engines\python
but when I searched on matlab dir I found it on this dir :
C:\Program Files\MATLAB\MATLAB Product
我只是编写了这个非常简单的函数来测试Julia和MATLAB的性能。我刚刚注意到,在MATLAB中执行时间要短得多。下面是简单的代码:
MATLAB:
tic
aa = 0;
for loop =1:1e6
aa = aa+loop;
end
toc
经过的时间是0.004628秒。
朱莉娅:
function sum_test(a)
for i = 1:1e6
a = a + i
end
return a
end
经过的时间为0.093886155 s: 93毫秒。
我还用Julia编写了一个函数,以避免使用全局变量,从而提