? 發問時間: 電腦與網際網路程式設計 · 1 0 年前

matlab 讀取TXT相加

假設我有一個TXT檔,裡面有40筆資料假設為

1

2

3

..40

假設A1為那個TXT檔

要如何 把裡面的40筆資料 以每4筆相加

故為 1+2+3+4 為一個 5+6+7+8 為一個以此類推

再把 它存成 ㄧ個TXT資料

10(第一個總和)

26(第2個總和)

..以次類推

因為我寫出來都變成只讀取第4筆資料

請高手幫幫忙

已更新項目:

不好意思

我要matlab的@@

vb目前沒有用到 不過還是謝謝你的回答

2 個已更新項目:

我好像沒安裝Fscanf 這toolbox

我再找時間安裝一次看看

順便請問一下

我想用Plot顯示a.txt(x軸)b.txt(Y軸)

load c:\a.txt -ascii

load c:\b.txt -ascii

plot(a,b)

這樣只跑出PLOT的視窗,卻沒有圖形產生

是資料的點數太多嗎,還是使用的方法錯誤

a.txt的總和為180(度)(1800個資料點)

還是用方法把1800弄成顯示18.36.54.72.108.126.144.162.180這樣呢

感激

3 個已更新項目:

我只要程式碼有fscanf 就會顯示

??? Error using ==> fscanf

Invalid file identifier. Use fopen to generate a valid file identifier.

繪圖我有把資料較近來 WHOS 檢查後沒錯 可是一樣有plot可是沒圖形

是因為我的資料是1行的原因嗎

我資料存儲格式為

1

2

3

不是 1 2 3

4 個已更新項目:

我到matlab ->file -> set path ->去設定成C:

結果跑玩為

??? Index exceeds matrix dimensions.

似乎是索引超過矩陣的尺寸

我用whos 查詢fip 他只顯示一個10

不太懂.

5 個已更新項目:

還是不行 還是顯示

??? Index exceeds matrix dimensions.

2 個解答

評分
  • Chaos
    Lv 7
    1 0 年前
    最佳解答

    下面程式讓你參考 應該沒問題 我試過了

    fip=fopen('A1.txt');

    A=fscanf(fip,'%i');

    for k=1:10

    B(k)=sum(A(4*(k-1)+1:4*k));

    end

    fid=fopen('B1.txt','wt');

    fprintf(fid,'%i\n', B);

    2008-07-05 11:51:19 補充:

    fscanf應該是標準內含程式 你鍵入help fscanf

    如有東西出來就表示有此公式 所有都是小寫 不能用大寫

    此外你要畫圖 依你方法應該正確

    請先檢查是不是數據都取進來 也就是

    load c:\a.txt -ascii

    load c:\b.txt -ascii

    whos

    看看有沒有 a, b這兩個變數 且其size是不是相同 若是

    plot(a,b) 應該可以畫出來

    2008-07-05 16:53:29 補充:

    我只要程式碼有fscanf 就會顯示

    ??? Error using ==> fscanf

    Invalid file identifier. Use fopen to generate a valid file identifier.

    這是表示你沒有先寫一個A1.txt的資料檔

    妳要先把這個資料檔建立好 並放在目前的工作檔案路徑才可以

    2008-07-05 22:49:21 補充:

    我到matlab ->file -> set path ->去設定成C:

    結果跑玩為

    ??? Index exceeds matrix dimensions.

    這些可能是檔案的問題,fip是一個檔案的代號,表示當用該代號時,是針對該檔案進行讀寫,我建議你乾脆自己先產生一個新的檔案,把你的path設定取消,如下鍵入會先產生一個AA.txt檔,其中會有1 2 3 ....40的資料

    >>C=1:40;C=C(:);fid=fopen('AA.txt','wt');fprintf(fid,'%i\n', C);

    之後按照我給程式做 (但把A1.txt改AA.txt) 應該可以

    參考資料: 教學經驗
  • 1 0 年前

    Private Sub Form_Activate()

    Dim a(40) As Integer, b(20) As Integer

    Open "C:\A1.txt" For Input As #2

    Do While Not EOF(2)

    i = i + 1

    Input #2, a(i)

    Loop

    i = 1

    For j = 1 To 40

    If j Mod 4 <> 0 Then

    b(i) = b(i) + j

    Else

    b(i) = b(i) + j

    i = i + 1

    End If

    Next j

    For k = 1 To i - 1

    Print "第" & k & "組 = " & b(k)

    Next k

    Close

    End Sub

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

    直接複製會有亂碼...

    直接下載表單吧

    http://www.badongo.com/file/10211139

    參考資料: 我自己.....
還有問題?馬上發問,尋求解答。