不支持将脚本 axis 作为函数执行
时间: 2023-06-15 22:07:01 浏览: 60
这个错误通常会发生在使用 Matplotlib 绘图时,可能是由于代码中尝试将 `axis` 对象作为函数执行,而不是使用正确的方法来访问其属性或方法。
例如,如果你想设置 `x` 轴的标签,应该使用 `set_xlabel()` 方法,而不是将 `ax.xaxis.label` 作为函数执行。
以下是一个示例代码,展示如何使用 `set_xlabel()` 方法来设置 `x` 轴标签:
```python
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 5, 6])
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_title('Title')
plt.show()
```
在这个示例中,我们创建了一个 `axis` 对象 `ax`,并将它和 `fig` 对象一起使用 `plt.subplots()` 方法创建。然后,我们使用 `ax` 对象的 `plot()` 方法绘制了一条直线。最后,我们使用 `set_xlabel()`、`set_ylabel()` 和 `set_title()` 方法来设置 `x` 轴标签、`y` 轴标签和图表标题。
请注意,我们没有试图将 `ax.xaxis.label` 或任何其他 `axis` 对象的属性作为函数执行,而是使用了正确的方法来修改 `axis` 对象的属性和方法。
相关问题
上述代码出现报错:不支持将脚本 vl_sift 作为函数执行C:\Users\王霸\AppData\Roaming\MathWorks\MATLAB Add-Ons\Collections\vlfeat_vlfeat\toolbox\sift\vl_sift.m 该如何处理
这个报错的原因是因为在MATLAB中尝试将脚本vl_sift作为函数执行,而vl_sift是一个脚本文件,不是一个函数文件。解决方法是将vl_sift.m文件重命名为其他名称,例如vl_sift_script.m,然后重新运行代码即可。另外,如果你的MATLAB文件夹中存在与函数名称axis()相同的m文件,也需要将其重命名,否则会导致代码出现其他报错。
脚本中的函数定义必须出现在文件的结尾。 请将 "ExtractPowerSpectralFeature" 函数定义后面的所有语句都移到第一个局部函数定义前面。
好的,下面是修改后的代码:
```python
import numpy as np
import librosa
def ExtractPowerSpectralFeature(audio_path):
y, sr = librosa.load(audio_path)
# STFT, short-term Fourier transform
n_fft = 2048
hop_length = 512
S = np.abs(librosa.stft(y, n_fft=n_fft, hop_length=hop_length))
# power spectrogram
power = S**2
# spectral centroid
spectral_centroids = librosa.feature.spectral_centroid(S=S)
# spectral bandwidth
spectral_bandwidths = librosa.feature.spectral_bandwidth(S=S)
# spectral contrast
spectral_contrasts = librosa.feature.spectral_contrast(S=S)
# spectral rolloff
spectral_rolloff = librosa.feature.spectral_rolloff(S=S)
# mel-frequency cepstral coefficients (MFCCs)
n_mfcc = 20
mfccs = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=n_mfcc)
# concatenate all features
features = np.concatenate((power, spectral_centroids, spectral_bandwidths, spectral_contrasts, spectral_rolloff, mfccs), axis=0)
return features
def ExtractFeatures(audio_path):
features = ExtractPowerSpectralFeature(audio_path)
return features
```
请注意,修改后的代码中,函数 `ExtractPowerSpectralFeature` 的定义出现在了文件的开头,并且在 `ExtractFeatures` 函数中被调用。这样做是因为在 `ExtractFeatures` 函数中调用 `ExtractPowerSpectralFeature` 函数,所以 `ExtractPowerSpectralFeature` 函数的定义需要在 `ExtractFeatures` 函数之前。