我是靠谱客的博主 无聊睫毛,最近开发中收集的这篇文章主要介绍python和matlab矩阵运算效率_MATLAB与Python中矩阵运算的不同结果,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我在一组生成的图像之间实现PCA,并使用选定的主成分抑制图像的背景。我已经在MATLAB中实现了这一点,并收到了我所期望的结果。但当我在Python中实现这一点时,我的结果就大不相同了。过程如下,我首先生成图像数据集,对数据集进行PCA,计算并从数据集中的图像中减去背景,然后重塑数据集并将结果与原始数据进行比较。下面是我对原始数据集执行PCA的函数。在def pca_images(total_images, count, size, num_pcs):

flat_images = np.empty([count, size*size])

# unravel structure of the image

for i in range(0,count):

flat_images[i] = np.ravel(total_images[i])

# calculate covariance matrix

cov_mat = np.cov(flat_images.T)

# eigenvectors and eigenvalues of the covariance matrix

eig_val_cov, eig_vec_cov = np.linalg.eig(cov_mat)

# sort the (eigenvalue, eigenvector) lists from low to high

inds = eig_val_cov.argsort()

# flip around and sort eigenvectors high to low

eig_vec_cov = eig_vec_cov[inds[::-1]]

# take num_pcs number of eigenvectors

components = eig_vec_cov[:,0:num_pcs]

# create list to store background for each image

bg = []

# find principal components

for i in range(0,count):

bg.append(np.dot(np.dot(components.T,flat_images[i]),components.T))

# allocate array to hold filtered images

images_suppressed = []

# filter out background from each image and store

for i in range(0,count):

images_suppressed.append(flat_images[i] - bg[i])

return images_suppressed

当我将其与我的MATLAB代码进行比较时,差异似乎出现在pca_images函数中的bg矩阵中。在MATLAB中,这个矩阵只包含实数,而在Python中则是实值和复值。结果表明,由于从原始图像中减去images_suppressed值,因此images_suppressed像素值都小于原始图像像素值。然而,在Python中,我的一些images_suppressed值比原始图像像素值大,尽管进行了减法处理,但这会导致噪声实际上被添加到图像中。用于查找bg矩阵的MATLAB代码如下:

^{pr2}$

我知道这个问题与这个bg矩阵有关,我还没有找到任何东西来解释为什么我的特征向量与原始数据集相乘会在MATLAB和Python中得到不同的结果。有人能解释一下为什么会这样吗??在

最后

以上就是无聊睫毛为你收集整理的python和matlab矩阵运算效率_MATLAB与Python中矩阵运算的不同结果的全部内容,希望文章能够帮你解决python和matlab矩阵运算效率_MATLAB与Python中矩阵运算的不同结果所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部