顯示具有 林書如 標籤的文章。 顯示所有文章
顯示具有 林書如 標籤的文章。 顯示所有文章

1/12/2007

12/29/2006

林書如: 人體受外力牽拉後引發之姿勢反應_肌肉活化情形_rev.2

延續上禮拜的程式
本週新加入了:(1)各個牽拉強度下3次測試IEMG平均值及標準差計算;以及(2)Missing data的處理。

12/22/2006

林書如: 人體受外力牽拉後引發之姿勢反應_肌肉活化情形_rev.1

延續上禮拜的程式內容,更新了onset時間輸入方式,並且在新程式中加入"可同時計算多位受試者以及多個測試的IEMG結果"的功能。

12/08/2006

林書如:學生期中考成績分佈情形

因為脫離物理這門學科太久了
所以老師網頁上的題目都讓我覺得很陌生....
因此,我是以網頁內跟統計較相關的程式"度數分配程式"做了一些修正以及增加一些小指令,以敘述統計方式呈現學生期中考成績分佈情形。

11/02/2006

林書如:您的體重過重嗎

前言:
BMI指數可以反映出體重是否處於理想狀態。過去已有許多文獻指出BMI指數過高往往是造成糖尿病、高血壓,甚至是心血管疾病的危險因子。因此,適度地監控自己的BMI指數是否處於正常值內是很重要的。

問題:
試寫出一個函數,當輸入體重和身高的數值後,能計算出其身體質量指數BMI值。並且依據其BMI值判斷其是否有體重過重或過輕的問題。(18.5<=BMI<24時顯示"體重標準",BMI>24時顯示"體重過重",BMI<18.5時顯示"體重過輕")

指令:

一開始我寫了一個比較簡單敘述檔案(Script file)

function [A]=BMI(w,h)
% BMI(Body Mass Index) calculation
A=w/h^2; % A means BMI
if 18.5<=A & A<24
fprintf('BMI=%0.2f 體重標準\n',A)
elseif A<18.5
fprintf('BMI=%0.2f 體重過輕\n',A)
else
fprintf('BMI=%0.2f 體重過重\n',A)
end

模擬輸出結果:

>> BMI(60,1.5)
BMI=26.67 體重過重

ans =

26.6667

結果顯示,一位體重60公斤,身高150公分的人,其BMI指數為26.67,有體重過重的傾向

==============================================

但是,為了能夠加上交談的功能,讓使用者更能清楚地了解應該輸入的內容
例如,輸入之體重應以公斤為單位,輸入之身高應以公尺為單位
因此我又改寫成另一個函數檔(function file),如下

% BMI2.m
% BMI(Body Mass Index) calculation
a=input('Please keyin your body weight? (kg)');
if isnumeric(a)
b=input('Please keyin your body height? (m)');
B=a/b^2; % B means BMI
if 18.5<=B & B<24
fprintf('BMI=%0.2f 體重標準\n',B)
elseif B<18.5
fprintf('BMI=%0.2f 體重過輕\n',B)
else
fprintf('BMI=%0.2f 體重過重\n',B)
end
end

模擬輸出結果:

>> BMI2
Please keyin your body weight? (kg)60
Please keyin your body height? (m)1.5
BMI=26.67 體重過重

結果同上,一位體重60公斤,身高150公分的人,其BMI指數為26.67,有體重過重的傾向

討論:

我是以簡單的if-elseif指令來撰寫這兩個小程式
程式中如果還有可以補強的地方(例如發現程式的bias,或是其實還有更簡單的寫法),還麻煩大家提供意見 :p

10/05/2006

Problem #2 林書如

>> % Quesiotn 1
>> % 題旨:將華氏溫度轉換為攝氏溫度,並且定義出溫度大於38度c者為1
>> B=[98 100 102 104 98.4 98.2 98.5 101 102 99.5]; % 所有被測者的華氏體溫
>> c=(B-32)*5/9 % 將華氏溫度換算為攝氏溫度

c =

Columns 1 through 8

36.6667 37.7778 38.8889 40.0000 36.8889 36.7778
36.9444 38.3333

Columns 9 through 10

38.8889 37.5000

>> D=c>38 % 將攝氏溫度大於38度c者定義為1,得一新矩陣D

D =

0 0 1 1 0 0 0 1 1 0

>> % 執行結果: 換算後的攝氏溫度為[36.6667 37.7778 38.8889 40.0000 36.8889 36.7778
>> 36.9444 38.3333 38.8889 37.5000]; 定義體溫大於38度c的matrix D=[0 0 1 1 0 0
>> 0 1 1 0]
>> % 討論: 定義出高體溫者之後,若現實上受測者有編號,則可以利用尋找索引值的方式輕易找出高體溫者為誰

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>> % Quesiotn 2
>> % 題旨:比較矩陣A與矩陣B
>> A=[-10 8 6 4 -5 20];
>> B=[2 8 5 10 -6 3];
>> D=A>B % 矩陣A與矩陣B一對一比較,A>B者定義為1,其餘為0

D =

0 0 1 0 1 1

>> D=A>5 % 矩陣A中數值>5者定義為1,其餘為0

D =

0 1 1 0 0 1

>> D=A+B % 將矩陣A與矩陣B相加

D =

-8 16 11 14 -11 23

>> % 執行結果: (1) D=[0 0 1 0 1 1] (2) D= [0 1 1 0 0 1] (3) D=[-8 16 11 14 -11 23]
>> % 討論:矩陣A與矩陣B排列相同,因此兩者可以直接做比較與計算

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>> % Quesiotn 3
>> % 題旨:進行矩陣x與矩陣y之計算
>> x=[10 20 30];
>> y=[1 4 6];
>> A=3*x+y

A =

31 64 96

>> B=5*y./x

B =

0.5000 1.0000 1.0000

>> C=4*2*y

C =

8 32 48

>> D=sin(x).*cos(y)

D =

-0.2939 -0.5967 -0.9487

>> E=5*x.*sin(2*y)

E =

45.4649 98.9358 -80.4859

>> % 執行結果: A= [31 64 96], B= [0.5000 1.0000 1.0000], C=[8 32 48], D=
>> [-0.2939 -0.5967 -0.9487], E= [45.4649 98.9358 -80.4859]
>> % 討論:重點在於元素對元素的計算符號是在矩陣的計算符號之前加上"."

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
% Quesiotn 3
% 題旨:撰寫一個計算多個電阻分別串聯與並聯後之總電阻的M-file
R=[10 30 200 400];
R1=sum(R) % 串聯後之總電阻R1為四個電阻之總合 R1=r1+r2+r3+r4
R2=1/sum(1./R) % 並聯後之總電阻R2=1/(1/r1+1/r2+1/r3+1/r4)
>> % 在command window下執行M-file

>> % 執行結果: 串聯後之總電阻R1為640歐姆; 並聯後之總電阻R2為7.1006歐姆
>> % 討論:計算R矩陣中各個element的倒數不能單純以1/R指令執行,而需在/之前加上.才可順利算出數值

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>> % Question 5
>> % 將矩陣A(1x24)轉置為B (3x8), C(6x4), D(2x12)三種不同排列方式之矩陣
>> A=[1:24];
>> B=reshape(A,3,8)

B =

1 4 7 10 13 16 19 22
2 5 8 11 14 17 20 23
3 6 9 12 15 18 21 24

>> C=reshape(A,6,4)

C =

1 7 13 19
2 8 14 20
3 9 15 21
4 10 16 22
5 11 17 23
6 12 18 24

>> D=reshape(A,2,12)

D =

1 3 5 7 9 11 13 15 17 19 21 23
2 4 6 8 10 12 14 16 18 20 22 24

>> % 執行結果:如上所示之B、C、D三矩陣
>> %


>> 討論:使用reshape(A,m,n)方式將陣列A的元素由上到下,由左到右的次序重新排列成一個新的m×n的矩陣。使用reshape函數時,重排後矩陣元素的個數必須與原矩陣相同。

9/30/2006

Problem #01 林書如

今天才加簽成功所以補交上禮拜作業

>> ===========================================================================
>> % Question 1
>> % To find out the power of the tractor
>> f=200; % 曳引機(tractor)拉力f為200公斤
>> d=20; % 向前拉動20m
>> J=0.101972; % 單位換算1 J=0.101972kgm
>> t=60; % 需時60秒
>> p=f*d/J/t % 功率p=f*d/J/t

p =

653.7742

>> % 執行結果:所需之功率為653.7742瓦特

>> ===========================================================================
>> % Question 2
>> % Find the line current and power consumption
>> r=1+20+200; % 三電阻器串聯後之總電阻r
>> i=110/r; % 110伏特之電源除以總電阻得流經之電流i
>> p=i*110; % 電流與電壓之乘積得消耗功率
>> i

i =

0.4977

>> p

p =

54.7511
>> % 執行結果: 流經之電流為0.4977安培及所耗之功率為54.7511瓦特
>> % 討論: 第一、二題透過已有之物理基礎,了解消耗功率計算之方式,再加以MATLAB語法逐步計算求得解答,並非難事。

>> ===========================================================================
>> % Question 3
>> % To calculate the area of a trangle
>> a=650;
>> b=428;
>> c=282; % 三角形三邊長分別為650、428、282公分
>> r=(a+b+c)/2;
>> area=(r*(r-a)*(r-b)*(r-c))^(1/2) % 以海龍公式計算三角形面積

area =

4.5233e+004

>> % 執行結果: 三角形面積為(4.5233e+004)平方公分

>> ===========================================================================
>> % Quesiotn 4
>> % How many hogs this house can raise?
>> a=52000+84300; % 每小時總散熱量為a
>> h=(a-25000)/600; % 每小時總散熱量a減去照明及設備操作所產生的熱量為所有豬隻能產生的最大熱量
>> % 所有豬隻能產生的最大熱量除以每隻豬每小時產熱後得一數值h
>> floor(h) % 取出小於或等於數值h的最大數目即為合適的豬隻量,以floor(x)指令執行

ans =

185
>> % 執行結果: 豬舍中養185隻豬最合適

>> ===========================================================================
>> % Question 5
>> % Find the flow rate Q
>> L=4; % 堰口寬度L為4呎
>> H=0.9; % 堰口溢流水頭高度H為0.9呎
>> Q=3.33*(L-0.2*H)^(3/2) % 流量為Q

Q =

24.8622
>> % 討論:
>> 一剛開始看到已有公式,不加多想變複製至MATLAB視窗中執行,出現error訊息後才驚覺須以MATLAB語法重新闡述方可順利計算求解,程式語法之撰寫實在需要多加謹慎小心
>> :p

9/29/2006

林書如r94428004

Dear 馮老師:

我是今天matlab課程加簽的學生,我已經申請了blog,想邀請老師幫我加入帳號。 謝謝老師。

姓名: 林書如
帳號: ShuRuLin
信箱:r94428004@ntu.edu.tw

祝 心怡

書如