TypeError:' module'对象不可调用

时间:2015-12-08 09:35:58

标签: numpy python-3.4

from __future__ import division
from numpy import *
import matplotlib as plt
import os

clear = lambda: os.system('cls')
clear() # clear screen

meu=1e-05 # exponential form
x1=load(char('neweeg.txt'))
x=x1(arange(1,5000))
xx=x1(arange(5001,10000))
N=length(x)
X=zeros(4,1)
w=rand(4,1)

for n in arange(1,N).reshape(-1):
    X[arange(2,end())]=X(arange(1,end() - 1))
    X[1]=x(n)
    y[n]=w.T * X
    e[n]=x(n) - y(n)
    w=w + meu * e(n) * X
    J[n]=e(n) * e(n)

MSE=mean(J,1)

plt.plot(10 * log10(MSE))
plt.figure
plt.plot(x)
hold(char('on'))
plt.plot(y,char('r'))
plt.figure
plot(xx - (e).T)
hold(char('on'))
plt.plot(xx,char('r'))

错误

file "/home/pi/Documents/final.py", line 10, in <module>
x1=load(char('neweeg.txt'))
typeError: 'module' object is not callable

2 个答案:

答案 0 :(得分:0)

我认为即时错误是因为你使用char()就像它是一个函数一样。你想要的是什么并不明显(在函数chr(​​)中有一个python来生成整数字符)

然后不清楚你想要做什么。 numpy.load()将读取由numpy.save()生成的pickle数组,但如果它是一个文本文件,那么numpy.loadtxt()似乎更相关。但是x1将是一个ndarray,因此在接下来的两行中将它用作x1()的函数是没有意义的。也是length()len()? rand(4,1)random.randint(1,4)或numpy.random.randint(1,4)?正如安东所说,你只需要通过修复错误来解决问题,在文档中查找内容。

最后,如果您没有导入*,它会让您和其他人更清楚,但会为您认为正在使用的模块名称添加前缀。

答案 1 :(得分:0)

这是Matlab代码100%正常工作。并尝试将其转换为Python

clc;
    close all;
    clear all;


    meu = 0.00001;
    x1=load('neweeg.txt');
    x = x1(1:5000);
    xx =x1 (5001:10000);
    N = length(x);

    X = zeros(4,1);
    w = rand(4,1);

    for n = 1:N

        X(2:end) = X(1:end-1);
        X(1) = x(n);

        y(n) = w'*X;
        e(n) = x(n) - y(n);   
        w = w + meu*e(n)*X;
        J(n) = e(n)*e(n);
    end

    MSE = mean(J,1);
    plot(10*log10(MSE))
    title('MSE')

    figure
    plot(x);hold on; plot(y,'r')
    title('X and Y')

    figure;
    plot(xx-(e)')
    hold on
    plot(xx,'r') 
    title('XX-(e) or XX')