1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標題: 問個算法問題 [打印本頁]

作者: Y_G_G    時間: 2023-7-11 12:27
標題: 問個算法問題
之前搞過一個自行車尾燈項目,停工一段時間,現在又重新啟動了目前主要的問題是自動感應剎車的問題
就是硬件上會有一個重力加速器,用來感應剎車,只要單車在行進過程有減速的動作,剎車燈就會亮起
比如:
重力加速器傳回的數據可能是
0.1g
0.2g
0.3
0.6
0.65
1.0g
我想問的是,有沒有什么算法是檢測數據,或者數組的,只要在數據一直上升,或者是一直下降,條件才成立的
只要一個大概的思路,代碼我自己寫
先謝謝了

作者: Hephaestus    時間: 2023-7-11 13:13
如果是速度傳感器才需要判斷一直上升或者下降,你既然用了加速度傳感器,判斷輸出的極性和大小就可以了。
作者: coody_sz    時間: 2023-7-11 13:24
加速度不可能一直上升或下降的。
作者: hhdsdy    時間: 2023-7-11 13:58
設兩個位變量,分別代表上升和下降,一個整型變量用來計數,再用一個變量保存上次的值,初始都為0,取當前值和上次的值進行比較,相等清兩個位變量和計數值,在不相等的處理里,如果大于的并且上升的值也為1,則計數加一;如果小于且下降的值也為1,則計數加一,否則計數清零,然后置位對應的位并將此次值賦給上次的值,取計數值進行判斷,達到數值的進行相應的處理。
作者: lkc8210    時間: 2023-7-11 15:10
新值>舊值 :上升
新值<舊值 :下降
作者: chxelc    時間: 2023-7-11 15:24
用陀螺儀芯片應該更準確吧,用算法也能實現,只要比較前后兩個重力數據的大小,例如上述6個數據(例如為D0-D5),if((D1-D0>0)&&(D2-D1>0)&&(D3-D2>0)&&(D4-D3>0)&&(D5-D4>0)){}//加速度
作者: 飛云居士    時間: 2023-7-11 15:33
可以根據重力加速度數據來判斷單車是否減速并進行剎車燈的控制。  一種簡單的算法是設置一個閾值來判斷減速的情況。當重力加速度超過某個閾值時,認為單車在減速,并點亮剎車燈。  具體步驟如下:  初始化一個閾值(例如0.3g),用來判斷是否減速。 持續接收重力加速度數據。 每次接收到新的數據時,將其與上一次的數據進行比較。 如果新數據與上一次數據之間的差值大于設定的閾值,則觸發剎車燈。 更新上一次數據為當前數據,繼續接收下一個數據。 注意,根據這個算法,當單車在減速過程中,剎車燈將會持續亮起,直到單車加速或者停止減速。  你可以根據具體需求和實際情況來調整閾值的大小,以達到準確判斷減速的目的。此外,為了更精確地判斷減速,請確保重力加速度傳感器的采樣率足夠高,以便捕捉到細微的變化。  這只是一種簡單的算法,如果你有更復雜的需求或者更多的數據,可以考慮使用機器學習算法,如支持向量機(SVM)或者神經網絡,來對減速行為進行分類和判斷。這種方法可能需要更多的訓練數據和模型設計,但可以提供更準確的結果。
作者: 金玉之食    時間: 2023-7-11 15:56
自動感應剎車亮燈不如由剎車動作來進行亮燈
作者: newlined    時間: 2023-7-11 16:04
老大,您的意思是,重力加速器傳回的數據,可能是連續的,不停的變化,當連續上升或下降時,剎車燈開始動作?
如果我猜的對的話,可不可以這樣,需要檢測重力加速器傳回的數據連續上升時,定時(比如說1mS一次)讀取數據,減去上一次讀取的數據,為正,或者連續幾次為正,則啟動剎車燈。檢測重力加速器傳回的數據連續下降時,則相反。
作者: 風158    時間: 2023-7-11 17:24
試試股中的macd方法。能過濾掉震動干擾,還能適應各種速度。
作者: Aurelion    時間: 2023-7-11 17:28
我想的比較簡單,能否用最新收到的數據跟前一個收到的數據一直比較,一直是大于就是遞增,反之就是遞減,如果違反了遞增或者遞減就改變標志位,然后就能通過這個標志位來作為判斷條件
作者: a185980800    時間: 2023-7-11 17:32
減速就亮,關鍵減速不一定是剎車啊(比如有上坡減速,人蹬的力變小減速了,路面不平減速。),沒有減速也不一定沒剎車(比如下坡剎車了速度沒降,邊蹬邊剎車速度沒降)。
作者: a185980800    時間: 2023-7-11 17:33
加速度計算是否剎車,幾乎不可信
作者: 飛云居士    時間: 2023-7-11 21:26
如果磁場強度呈非線性變化且你需要確定兩個典型值進行測量,你可以考慮以下方法來解決這個問題:1. 使用不同強度設定:嘗試在不同的強度設定下測量磁場強度,并記錄相關的數據。這樣可以獲得多個數據點,并在不同強度下觀察磁場強度的變化情況。2. 使用插值方法:如果你已經測量了一些具體設定下的磁場強度值,你可以使用插值方法來推斷其他強度設定下的磁場強度。通過在已知數據點之間建立一個函數模型,可以預測其他設定下的磁場強度。3. 使用標準曲線:某些設備可能附帶有標準曲線或校準曲線。這些曲線可以提供給定設定下的磁場強度值的參考。通過將測量值與標準曲線進行比較,你可以確定磁場強度的近似值。4. 使用專業測量工具:如果磁場強度對于你的應用非常重要,你可以考慮使用專業的磁場測量工具。這些工具能夠提供準確的磁場強度測量,并且可以處理非線性變化的情況。無論使用哪種方法,確保在進行測量之前了解設備的規格和特性,并遵循正確的操作步驟以確保準確測量磁場強度。
作者: lose2836    時間: 2023-7-11 22:03
個人看法,比如以時間間隔0.1s采集數據,然后做曲線,求取斜率。根據斜率就能知道是增還是加速還是減速。規則就是持續0.5s,斜率連續小于0,就是減速,亮燈。持續時間根據實際測試調整就行。如果自行車是碟剎,弄個光電計數就行,簡單實用。
作者: Linini    時間: 2023-7-11 23:27
有一個想法:通過計算一組數據的斜率來判斷,并界定剎車界限,即正負值或者是一定斜率范圍(線性回歸法);或者是對數據做差分計算,并逐一比較大小等等
作者: zsyzdx    時間: 2023-7-12 09:21
兩個條件;1、加速度減少過快 2、加速度為0速度很小,我們以前是這樣做的 有一個編碼器檢測速度配合用的。
作者: sbskywalker    時間: 2023-7-12 10:43
記錄成數組數據,然后通過數學方法分析即可,例如求不同時間段的差或者導數,統計總量作為分析依據
作者: 1600277881    時間: 2023-7-12 11:13
假設輸入為Y

reg<<=1;
if (Y>Y_last) reg++;

reg&=0x3F;  // 假設要檢測連續6次數據上升或下降

if (reg == 0x3F) {
  // 連續6次上升
}
if (reg==0) {
// 連續6次下降
}

Y_last=Y;
作者: Y_G_G    時間: 2023-7-12 12:34
a185980800 發表于 2023-7-11 17:33
加速度計算是否剎車,幾乎不可信

這種單車尾燈在馬云家大把的,而且都是實際測試可行的
作者: ldc2000    時間: 2023-7-13 01:43
這種剎車感覺就不合理,剎車燈是給別人看的,作用是提醒別人我的車要減速了,注意點。應該是由車主的剎車動作來決定亮滅,就象現在的汽車的機械剎車燈控制就很合理,有兩個行程,第一個剎車行程是點亮剎車燈,但并不一定實施剎車的動作,第二個行程才是實施動作。
有時候簡單的控制并不一定非要用到高科技,有錢人除外
作者: 黃youhui    時間: 2023-7-13 08:52
lkc8210 發表于 2023-7-11 15:10
新值>舊值 :上升
新值

你要考慮濾波啊大哥,就是0.1  0.2  0.3  0.2  0.5中間出現個0.3  0.2  0.5這里的0.2你要當做錯誤數據刪掉的啊。你這種算法太容易出錯了。
作者: wellhope    時間: 2023-7-13 10:42
a185980800 發表于 2023-7-11 17:32
減速就亮,關鍵減速不一定是剎車啊(比如有上坡減速,人蹬的力變小減速了,路面不平減速。),沒有減速也不 ...

有道理,
作者: Y_G_G    時間: 2023-7-13 10:51
ldc2000 發表于 2023-7-13 01:43
這種剎車感覺就不合理,剎車燈是給別人看的,作用是提醒別人我的車要減速了,注意點。應該是由車主的剎車動 ...

合理不合理的,不重要
只要是是速度減下來了,剎車燈亮燈幾秒提示就可以了
這是客戶要求的,產品規格書這么寫,咱就這么做
咱就一打工的,客戶就是要自爆,咱也得做呀,畢竟拿了錢的
客戶已經認定了這個功能了,你有時候提出的合理性建議或者可行性分析,在他眼中就是多嘴
作者: Y_G_G    時間: 2023-7-13 14:21
感謝各位網友的熱心幫助,現在心里有個大概的思路了,開始動手畫板了
作者: ldc2000    時間: 2023-7-13 23:18
也是,干活不由東,累死也無功啊!但你要留好這個剎車燈設計是誰決定的證據,防止以后發生事故會有人找設計人員的麻煩!
作者: 君工創    時間: 2023-7-14 06:51
速度下降不一定是剎車。有可能是自然放慢速度的。
作者: ydatou    時間: 2023-7-14 08:19
加速度值變小是增速變小,速度還會增加,不是減速。
減速開始時,加速度方向會反向。
作者: angmall    時間: 2023-7-14 09:15
你可以嘗試使用一個簡單的算法來檢測數據是否一直上升或下降。下面是一個基本的思路:

定義兩個變量,例如increasing和decreasing,并將它們都初始化為True。
遍歷數據數組,從第二個數據點開始。
對于每個數據點,檢查它是否比前一個數據點大(上升)或小(下降)。
如果是上升,檢查decreasing的值。如果為True,則將其設置為False,表示數據不再是一直下降。
如果是下降,檢查increasing的值。如果為True,則將其設置為False,表示數據不再是一直上升。
在檢查完所有數據點后,檢查increasing和decreasing的值。
如果兩者都為False,則表示數據既不是一直上升也不是一直下降。
如果increasing為True,則表示數據一直上升。
如果decreasing為True,則表示數據一直下降。

以下是一個簡單的C語言示例代碼,用于檢測數據是否一直上升或下降:

#include <stdio.h>

int main() {
    float data[] = {0.1, 0.2, 0.3, 0.6, 0.65, 1.0};
    int length = sizeof(data) / sizeof(data[0]);
    float threshold = 0.1;

    int increasing = 1;  // 上升
    int decreasing = 1;  // 下降

    int count = 0;
    float previous_value = 0;

    for (int i = 0; i < length; i++) {
        float value = data[i];

        if (value == previous_value) {
            increasing = 0;
            decreasing = 0;
            count = 0;
        } else if (value > previous_value) {
            decreasing = 0;
            count++;
            if (count > threshold) {
                // 觸發剎車燈
                printf("剎車燈亮起\n");
            }
        } else if (value < previous_value) {
            increasing = 0;
            count++;
            if (count > threshold) {
                // 觸發剎車燈
                printf("剎車燈亮起\n");
            }
        }

        previous_value = value;
    }

    if (!increasing && !decreasing) {
        printf("數據既不是一直上升也不是一直下降\n");
    } else if (increasing) {
        printf("數據一直上升\n");
    } else if (decreasing) {
        printf("數據一直下降\n");
    }

    return 0;
}
請注意,這只是一個簡單的示例算法,并未考慮實際硬件的數據采集和剎車燈的控制。在實際應用中,您需要根據硬件的要求和具體情況進行適當的調整和改進。


作者: 2359515809    時間: 2023-7-23 01:57
根據實際情況連續檢測多次,持續減速就給信號,比如:

# 初始化加速傳感器
accelerometer = accelerometer_library.initialize()

# 讀取加速傳感器數據
while True:
    acceleration_data = accelerometer.read_data()

    # 處理加速度數據
    # 這里可以根據具體需求進行數據處理,比如計算平均加速度、檢測震動等

    # 打印加速度數據
    print(acceleration_data)

    # 等待一段時間后繼續讀取數據
    time.sleep(0.1)
作者: hdfree    時間: 2023-7-23 08:47
a[i++]=g;
for(i=0;i<10;i++)
{if(a[i]< a[i+1]) sc++;
if(a[i]> a[i+1]) sc--; }
判斷abs(sc)>連續減速或連續加速次數,輸出剎車動作

作者: Hephaestus    時間: 2023-7-24 16:19
九年義務教育物理里面教加速度吧?怎么這里大多數人都不知道加速度是個啥???都在指著加速度傳感器說速度。
作者: univers    時間: 2023-7-24 21:30
這個太復雜化了吧,記得摩托車的殺車燈,就是殺車手把有一個開關。
作者: Y_G_G    時間: 2023-7-25 01:56
univers 發表于 2023-7-24 21:30
這個太復雜化了吧,記得摩托車的殺車燈,就是殺車手把有一個開關。

馬云家四五十塊錢一個的,公司買了幾個樣品回來,實際使用是可行,實際的效果比剎車開關好用
你按下剎車了,不一定會減速的,
但你減速了,這個燈就一定會亮,這功能對于汽車來說,可能用處不大
但對于單車來說,這功能很好用
作者: univers    時間: 2023-7-28 11:44
Y_G_G 發表于 2023-7-25 01:56
馬云家四五十塊錢一個的,公司買了幾個樣品回來,實際使用是可行,實際的效果比剎車開關好用
你按下剎車 ...

對啊,我覺是就用殺車開關最好不過了。也不要幾十塊錢一個的,用一個微動開關,或工業上上的一些耐用的開關,但是手把要要設計好,這樣開關才好安裝上去。
開關只是用來做動作查測,不能通大電流,CPU的IO口去中斷這個IO口,或掃描這個口。之后CPU再去行處理即可。簡單又有效,又耐用。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1