Calculation result issue
Describe the bug A clear and concise description of what the bug is.
To Reproduce Steps to reproduce the behavior:
- Go to '...'
- Click on '....'
- Scroll down to '....'
- See error
Expected behavior A clear and concise description of what you expected to happen.
Screenshots If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
- pyoma2 version: [e.g. 0.1.0 or latest]
- OS: [e.g. iOS]
- Version [e.g. 22]
Additional context or possible solutions Add any other context about the problem here.
Why are there only points from 0 to 20Hz in the calculation results? At what step were the higher frequency points removed? I look forward to your answer, thank you.
Why are there only points from 0 to 20Hz in the calculation results? At what step were the higher frequency points removed? I look forward to your answer, thank you.
What do you mean? Please give us some more context. Are you referring to one of the examples?
Thank you very much for answering my question. It gave me great encouragement. I am a beginner. When I ran my own response data, I found that the points in the stability graph disappeared when it was above 20Hz. I don't know whether the stability graph was originally like this or it was eliminated in a certain step. I attached the stability graph result generated by my data. Thank you for your guidance. Thank you
I cannot know just from the stabilisation chart, could you paste your code here? What is the sampling frequency?
Hello teacher, this is the python code I run, and I put the simulated response data in the appendix, thank you very much :
from pyoma2.algorithms import FSDD, SSIcov, SSIdat from pyoma2.setup import SingleSetup
import pandas as pd data = pd.read_excel(r'D:\桌面\代码\塔数据\风载荷20000步45°\az.xlsx') # 'r'是转义字符,避免路径中的''被转译
加载数据
Pali_ss = SingleSetup(data.values, fs=400)
#Pali_ss.detrend_data() Pali_ss.filter_data(Wn=(0.1), order=8, btype="highpass") Pali_ss.decimate_data(q=4)
Initialise the algorithms
fsdd = FSDD(name="FSDD", nxseg=1024, method_SD="cor")#频率-空间域分解法 #ssidat = SSIdat(name="SSIdat", br=30, ordmax=100, calc_unc=True, nb=5) ssicov = SSIcov(name="SSIcov", br=50, ordmax=100, calc_unc=True)
Overwrite/update run parameters for an algorithm
fsdd.run_params = FSDD.RunParamCls(nxseg=2048, method_SD="per", pov=0.5)
Add algorithms to the single setup class
Pali_ss.add_algorithms(ssicov, fsdd)
Run all or run by name
Pali_ss.run_by_name("SSIcov") Pali_ss.run_by_name("FSDD") #Pali_ss.run_by_name("SSIdat")
Pali_ss.run_all()
save dict of results
ssi_res = ssicov.result.model_dump() fsdd_res = dict(fsdd.result)
plot Singular values of PSD
_, _ = fsdd.plot_CMIF(freqlim=(1,30))
plot frequecy-damping clusters for SSI
#_, _ = ssidat.plot_stab(freqlim=(0,20),hide_poles=False)
plot Stabilisation chart for SSI
_, _ = ssicov.plot_stab(freqlim=(1, 30), hide_poles=False)
_, _ = ssicov.plot_freqvsdamp(freqlim=(1,30))
import matplotlib.pyplot as plt plt.show()
Ok so your Nyquist frequency should be 50hz (sampling frequency 400hz with a decimation factor of 4). One thing that I see is that when you are plotting the stabilisation diagram you’re passing to the keyword argument “freqlim” the tuple (0,20) which means that you’re restricting the frequencies to be in that range. However this should not remove the poles above 20Hz just restrict the x axis in the plotting. Please provide also the plot from the FDD algorithm so that we can see the signal.
This is a drawing of my FDD algorithm, thanks
@dfdffbdf from the spectrum plot it seems like you have quite a flat signal above 20hz. Are you expecting to find modes above this level? Try using the plots without the freqlim argument. Also in general nb=5 is very low for uncertainty propagation (it means that you divide your signal into only 5 blocks). Let me know if you’re still struggling