[問題] swith_case 用法

作者: totemist (totem)   2015-06-02 15:36:47
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Code::Block
寫C
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
matlab的fdatool
問題(Question):
因為我接下來要做的是有45個case
自己用2個case來做是成功的
我想知道該何做能更簡潔
餵入的資料(Input):
input是相同的512筆data
經由case去選擇不同的處理方式
預期的正確結果(Expected Output):
目前測試是正確的 沒有錯誤
只是想要知道有沒有更好的方法
錯誤結果(Wrong Output):
目前測試是正確的 沒有錯誤
只是想要知道有沒有更好的方法
程式碼(Code):(請善用置底文網頁, 記得排版)
void A (void);
void D (void);
char c;
printf("enter A=120_480 or D=180_480 = ");
scanf ("%c", &c);
switch (c)
{
case 'A':
break;
case 'D':
break;
defult break;
}
補充說明(Supplement):
因為我是要做濾波器(fir filter - bandpass)
我希望能給使用者自己選擇頻率(0~540hz,每60hz為一單位)
所以我總共要做C10取2 有45個case要做
這裡再補充一下:
因為選擇的範圍可以是
0~60, 0~120, 0~180, .... ,0~540
60~120, 60~180, 60~240, ... ,60~540
...
...
420~480, 420~540
480~540
而每一個範圍經由matlab的fdatool都會產生一個fdacoefs.h
而每一個.h檔裡面會有一個陣列
我目前作法就是把 matlab的fdatool所產生的45個fdacoefs.h合併為一個.h檔
然後在使用者介面直接寫死
ex:
printf("enter A=120_480 or D=180_480 = ");
就是直接給使用者看著指令選擇
但是我想做到的是給使用者自動輸入想要的頻寬
只是覺得這樣對使用者比較方便,不用把我45個代號看完就可以自動輸入這樣
這樣的作法會比較省時間和空間嗎?
另外對於我上述想做的方式,我該找甚麼資料參考呢?
謝謝
作者: Feis (永遠睡不著 @@)   2015-06-02 16:21:00
C or C++ ?. 不過其實應該好好想想真的有 45 cases 嗎先退一萬步來想, 你 fdacoefs.h 裡面是只有陣列嗎?如果是的話, 你怎麼將 45 個陣列合併?然後最後再想想你可以把這個選擇問題變成一個索引對照問題嗎
作者: Frozenmouse (*冰之鼠*)   2015-06-02 18:36:00
所以輸入會轉變兩個頻率,A=100,200、D=500,600我有理解錯嗎?@@
作者: Feis (永遠睡不著 @@)   2015-06-02 21:54:00
我的意思是要你把它變成一個類似二維陣列, 用頻率去索引更實際的做法其實應該是自己算 coef, 不過我想就算了
作者: jackylu63 (J)   2015-06-03 01:03:00
這個問,聽起來建一個表就可以了
作者: Frozenmouse (*冰之鼠*)   2015-06-03 08:06:00
所以跟我之前想的應該差不多,只是我沒表達清楚 Orz你可以考慮把coefs弄成三維表格,概念上以兩個頻率為前兩個維度,第三維就是係數輸入也讓使用者直接給頻率就好,非60倍數再處理啊,其實就是tropical72大說的方法…XD
作者: WYchuang (愛賴床的黃金獵犬)   2015-06-03 09:50:00
現在我遇到這種的都會想搞個xml檔案 有人跟我一樣嗎 xD
作者: MOONRAKER (㊣牛鶴鰻毛人)   2015-06-03 11:10:00
並不會

Links booklink

Contact Us: admin [ a t ] ucptt.com