0

要求是生成频率范围为 1 Hz 至 10 Hz 的正弦波。

条件是

  1. 所有正弦波频率的幅度为一伏
  2. 1 Hz 信号必须被采样成 100 个波点。
  3. 同样,2 Hz 信号必须每秒采样 200 个样本,3 Hz 信号必须每秒采样 300 个样本,4 Hz 信号必须每秒 400 个样本,依此类推,最高可达 10 Hz。

4.所有这些值必须写入Csv文件并转换为excel文件。

因此,excel 有 10 个列,分别命名为 1 Hz 到 10 Hz。并且每一列都有相应的值。

第 1 列有 100 个样本的值,第 2 列有 200 个样本的值,依此类推,直到第 10 列。

任何人都可以帮助解决这个问题。我编码为 1 Hz 到 10 Hz,采样率相同,所有列的行数相同。

import numpy as np
import pandas as pd
def get_values_for_frequency(freq):
    # sampling information
    Fs = 100    #sample rate- no of samples per second
    T = 1/Fs    #sampling period   %sample per second
    t = 1       #seconds of sampling
    N = Fs*t    #total points in signal
    # signal information
    omega = 2*np.pi*freq # angular frequency for sine waves
    t_vec = np.arange(N)*T # time 
    y = np.sin(omega*t_vec) #sine wave generation
    return y
#columns are created for sine wave frequencies
df = pd.DataFrame(columns =['1Hz','2Hz', '3Hz', '4Hz', '5Hz', '6Hz', '7Hz'])
df['1Hz']=pd.Series(get_values_for_frequency(1))
df['2Hz']=pd.Series(get_values_for_frequency(2))
df['3Hz']=pd.Series(get_values_for_frequency(3))
df['4Hz']=pd.Series(get_values_for_frequency(4))
df['5Hz']=pd.Series(get_values_for_frequency(5))
df['6Hz']=pd.Series(get_values_for_frequency(6))
df['7Hz']=pd.Series(get_values_for_frequency(7))
df = df.round(decimals = 3)                  #Round a table values in DataFrame to3 decimal places
print("created table datatype\n",df.dtypes)  #viewing the datatype of table
df.to_csv("float_csvfile.csv",index=False)   #the raw values are written into the csv file.

我厌倦了将两个输入作为 def

get_values_for_frequency(freq,samplepoints):

并用

df = pd.DataFrame(columns =['1Hz','2Hz', '3Hz', '4Hz', '5Hz', '6Hz', '7Hz'])
df['1Hz']=pd.Series(get_values_for_frequency(1,100))
df['2Hz']=pd.Series(get_values_for_frequency(2,200))
df['3Hz']=pd.Series(get_values_for_frequency(3,300))
df['4Hz']=pd.Series(get_values_for_frequency(4,400))
df['5Hz']=pd.Series(get_values_for_frequency(5,500))
df['6Hz']=pd.Series(get_values_for_frequency(6,600))
df['7Hz']=pd.Series(get_values_for_frequency(7,700))

但我收到的每列的列长度相同。谁能帮我解决不同的列长度。谢谢

4

0 回答 0