Заметки электроника
Простое - надёжнее!
Меню
  • Главная
  • Погода
  • Заметки
  • Календарь
  • Фотогалерея
  • Песни
  • Чтиво
  • Программы
  • Скачать
  • Связь и ссылки
  • Чехия
  • Lavka

Живёшь в Чехии?

MATLAB: Анализ пиков

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Родительская категория: Заметки
Категория: Программирование
Создано: 07 апреля 2022
Обновлено: 25 апреля 2025
Просмотров: 1568
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
В этом примере показано, как выполнить базовый анализ пиков. Он поможет вам ответить на такие вопросы, как: Как найти пики в сигнале? Как измерить расстояние между пиками? Как измерить амплитуду пиков сигнала, на который влияет тренд? Как найти пики в зашумленном сигнале? Как найти локальные минимумы?

https://www.mathworks.com/help/signal/ug/peak-analysis.html

https://m.citytours.sg/3Rs_ppg-signal-processing-using-matlab_Ie56xP4.pdf

example: PPG -> FFT -> Peak detector -> bpm measure

 

% --Design Chebyshev Type II bandpass filter with a stopband attenuation of 40 dB
Wp = [0.02 0.10];  % Stopband Frequency (Normalised)
Ws = [0.015 0.2];  % Passband Frequency (Normalised)
Rp =   0.5;   % Passband Ripple (dB)
Rs =  50;     % Stopband Ripple (dB)
[n,Ws] = cheb2ord(Wp,Ws,Rp,Rs); % Filter Order

[A,B,C,D] = cheby2(n,40,[0.02 0.4]);

[sos,g] = ss2sos(A,B,C,D); % Convert To Second-Order-Section For Stability
PPG = filtfilt(sos, g, PPG); %-- filter by band-pass filter (noise and trend)

%[p,s,mu] = polyfit((1:numel(PPG)),PPG,6);
%f_y = polyval(p,(1:numel(PPG)),[],mu);
%PPG = PPG - f_y;        % Detrend data

%--find peaks
maxPPG = max(PPG); %-- find maximum
minPPG = min(PPG); %-- find minimum
thresholdPPG = 0.155; %-- setup threshold for peak detection

Prominence = (maxPPG - minPPG)*thresholdPPG;
[pks, locs]  = findpeaks(PPG,'MinPeakProminence',Prominence); %-- peak detection
TF_t = (fs/mean(diff(locs)))*60; %-- mean interval bpm


the frequency domain approach:

F=fft(PPG);
Nfft=length(PPG);
df=fs/Nfft;
f=(0:(Nfft-1))*df;
freqs=f(f<fs/2);
ampSpec=abs(F(1:length(freqs)));
[~,mxi] = max(ampSpec(2:length(freqs)));  %filtrate zero freq and find number of max value (cutting subzero freq.)

TF_f = freqs(mxi)*60; %-- bpm

LoraWAN with LoRa-E5 collection

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Родительская категория: Заметки
Категория: Программирование микроконтроллеров
Создано: 14 июня 2022
Обновлено: 25 апреля 2025
Просмотров: 1092
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
1 https://github.com/topics/lora-e5
2 https://forum.digikey.com/t/using-the-low-level-sub-ghz-radio-driver-for-the-stm32wl-series/18253
3 https://github.com/punee995/LoRa-E5-Examples/tree/main/LoRa_E5_WAN/LoRaWAN/App
4. https://doc.riot-os.org/group__boards__lora-e5-dev.html
5. https://www.seeedstudio.com/blog/2021/10/21/invigorate-your-inspiration-for-iot-with-lora-e5-and-free-seeed-fusion-pcba-prototypes/?gclid=CjwKCAjw46CVBhB1EiwAgy6M4qZXE6N8lW2qnEXVLsIf2Bdsdr47nmkqiHogMtf8VgvbYg0beh9hEhoC7AgQAvD_BwE
6. https://www.seeedstudio.com/LoRa-E5-Wireless-Module-p-4745.html
7. https://wiki.seeedstudio.com/LoRa_E5_Dev_Board/
8. https://github.com/danak6jq/Seeed-LoRa-E5
9. https://github.com/bertrik/ttnhabbridge/issues/4 (MQTT at Helium and TTNv3)
10. https://learn.adafruit.com/the-things-network-for-feather/payload-decoding
11.https://npm.devtool.tech/@crapougnax/cayennelpp

VBA: finding description on another list of workbook and fill in current

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Родительская категория: Заметки
Категория: Программирование
Создано: 17 августа 2022
Обновлено: 25 апреля 2025
Просмотров: 1048
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
Sub AddDescription_Click()
Set CurrentWorkbook = Workbooks(ActiveWorkbook.Name)
Set REF_SHEET = CurrentWorkbook.Sheets("REF_SHEET")
Set CURRENT_SHEET = CurrentWorkbook.Sheets("CURRENT_SHEET")

CURRENT_SHEET.Select
Set Rng = Range(Cells(2, 2), Cells(55, 2))

For Each cell In Rng
If IsEmpty(cell.Value) = False Then
 MNP = cell.Value
 REF_SHEET.Select

 Set Rng = Range(Cells(2, 2), Cells(38, 2))
    For Each cell2 In Rng
        If cell2.Value = MNP Then
        cell.Offset(0, 2).Value = cell2.Offset(0, 2).Value
        End If
    Next cell2
End If
Next cell

STM32 HAL: таймер не стартует после программирования через CUBE

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Родительская категория: Заметки
Категория: Программирование микроконтроллеров
Создано: 03 сентября 2022
Обновлено: 25 апреля 2025
Просмотров: 1353
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
Итак вы запрограммировали свой TIM16 таймер, но после запуска с удивлением обнаруживаете, что прерывания не происходят?
Всего пару вещей нужно добавить ( например, в main.c):

1. Определить коллбэк

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

{
   if (htim == &htim16)
   {
      HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_9);
   }
}

2. Вызвать
  //  __HAL_TIM_ENABLE_IT(&htim16, TIM_IT_UPDATE);
  HAL_TIM_Base_Start_IT(&htim16);
HAL_NVIC_SetPriority(TIM16_IRQn, 0, 0); HAL_NVIC_EnableIRQ(TIM16_IRQn); __HAL_TIM_ENABLE_IT(&htim16, TIM_IT_UPDATE);

VBA - скрипт для MS Excel - ищем текст во всех файлах внутри папки

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Родительская категория: Заметки
Категория: Программирование
Создано: 03 июля 2023
Обновлено: 25 апреля 2025
Просмотров: 1124
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
Attribute VB_Name = "search_in_files"

Public Sub SearchFolders()
    Dim fso As Object
    Dim fld As Object
    Dim strSearch As String
    Dim strPath As String
    Dim strFile As String
    Dim wOut As Worksheet
    Dim wbk As Workbook
    Dim wks As Worksheet
    Dim lRow As Long
    Dim rFound As Range
    Dim strFirstAddress As String

    On Error GoTo ErrHandler
    Application.ScreenUpdating = False

    'Change as desired
    strPath = "C:\Components"  'write your folder path here
    
    strSearch = InputBox("String to search:", "Search a string", "")
  
    If strSearch = "" Then
     Exit Sub
    End If

    Set wOut = Worksheets.Add
    lRow = 1
    With wOut
        .Cells(lRow, 1) = "Workbook"
        .Cells(lRow, 2) = "Worksheet"
        .Cells(lRow, 3) = "Cell"
        .Cells(lRow, 4) = "Text in Cell"
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set fld = fso.GetFolder(strPath)

        strFile = Dir(strPath & "\*.xls*")
        Do While strFile <> ""
            Set wbk = Workbooks.Open _
              (Filename:=strPath & "\" & strFile, _
              UpdateLinks:=0, _
              ReadOnly:=True, _
              AddToMRU:=False)

            For Each wks In wbk.Worksheets
                Set rFound = wks.UsedRange.Find(strSearch)
                If Not rFound Is Nothing Then
                    strFirstAddress = rFound.Address
                End If
                Do
                    If rFound Is Nothing Then
                        Exit Do
                    Else
                        lRow = lRow + 1
                        .Cells(lRow, 1) = wbk.Name
                        .Cells(lRow, 2) = wks.Name
                        .Cells(lRow, 3) = rFound.Address
                        .Cells(lRow, 4) = rFound.Value
                    End If
                    Set rFound = wks.Cells.FindNext(After:=rFound)
                Loop While strFirstAddress <> rFound.Address
            Next

            wbk.Close (False)
            strFile = Dir
        Loop
        .Columns("A:D").EntireColumn.AutoFit
    End With
    MsgBox "Done"

ExitHandler:
    Set wOut = Nothing
    Set wks = Nothing
    Set wbk = Nothing
    Set fld = Nothing
    Set fso = Nothing
    Application.ScreenUpdating = True
    Exit Sub

ErrHandler:
    MsgBox Err.Description, vbExclamation
    Resume ExitHandler
End Sub

  1. Создаём приложения с красочным и управляемым интерфейсом в Visual Studio Code
  2. Турбины Фибоначчи
  3. Maker Faire Brno
  4. Meshtastic: WisMesh Basic Device Setup Guide, MQTT Gateway Setup Guide

Страница 10 из 197

  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

Back to Top

© 2026 Заметки электроника

Top.Mail.Ru