[爆卦]matlab fwrite用法是什麼?優點缺點精華區懶人包

為什麼這篇matlab fwrite用法鄉民發文收入到精華區:因為在matlab fwrite用法這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者totemist (totem)看板C_and_CPP標題[問題] fopen讀相同檔名時間Su...


開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
code::block

額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
matlab

問題(Question):
fopen對於同樣的檔名不會自動讀最新的

餵入的資料(Input):
matlab生成一筆data 名稱叫point.txt

預期的正確結果(Expected Output):
fopen讀最新的一筆data

錯誤結果(Wrong Output):
還是停留在上一筆data

程式碼(Code):(請善用置底文網頁, 記得排版)

float z;
int k;
FILE *fptr;

if((fptr=fopen("point.txt","r"))!=NULL)
{
for (k=0;k<3200;k++){
fscanf(fptr,"%f",&z);
input[k] = z;
printf("%f\n",input[k]);
}
}
fclose(fptr);

補充說明(Supplement):

就是我因為方便,所以每次在matlab調變參數後的結果,都存在point.txt這個檔案
反正相同檔名就意同直接把舊的覆蓋
所以我以為C的fopen也是會直接讀最新的point.txt
結果後來檢驗過程中還是只讀到上一筆已經被覆蓋掉的point.txt

自行解決的方法就是在matlab存成檔案的時候就存成不同名字,這樣C就可以讀到
但是麻煩點就在這樣每次存檔案,讀取檔案都要手動改檔案名稱

謝謝大大

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.228.236.142
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1433066088.A.729.html
Feis: 這情況蠻有趣的. 可以請問詳情嗎. 例如你怎麼知道有覆蓋 05/31 21:10
matlab會生成一個新的txt檔阿~ 只要看txt檔裡的資料有沒有變 甚至看"txt"的時間就知
道有變化啦~~

我的matlab部分code :

save('point.mat','point');
fid = fopen('C:\Users\totem\Desktop\filter_project\point.txt', 'a');
fprintf(fid, '%f \n', point );
fclose(fid);
※ 編輯: totemist (36.228.236.142), 05/31/2015 21:52:58
Feis: 你 C 的部分是獨立程式? 在 Matlab "後" 執行? 05/31 22:04
對對對 一切皆由手動操作 不是一次搞定的!!! 抱歉這部分我沒說清楚!!!
步驟如下
1. matlab生成一個名為point.txt的檔案
2. 手動切換到C去讀取這個point.txt
EdisonX: 聽起來像是 c 那裡要收到通知或延遲或其他機制再讀檔 05/31 22:13
抱歉 這部分我沒說清楚
※ 編輯: totemist (36.228.236.142), 05/31/2015 22:17:58
EdisonX: 雖然感覺不太可能..matlab 產生的 point.txt , 和 C 讀到 05/31 23:11
EdisonX: 的 point.txt , 確定是同一個(路徑是一樣的)嗎? 05/31 23:12
一樣的,因為我其實都是有直接設路徑,只是貼code把這部份去掉
EdisonX: 另外小挑一下下,fclose 要放在 if 裡面. 05/31 23:12
好的,謝謝提醒 已改
Feis: 意思是你 Matlab 跑完->打開point.txt 是新的-> C開起來是舊 05/31 23:37
Feis: 的? 05/31 23:38
是的,沒錯。
※ 編輯: totemist (36.228.236.142), 06/01/2015 04:25:46
remizu: matlab不太熟 不過fopen的'a'是append 每次新資料都寫在 06/01 05:04
remizu: 檔案最後 而讀取則是從頭讀 所以每次都會讀到前3200筆一樣 06/01 05:05
remizu: 的資料 06/01 05:05
remizu: 所以我猜應該是像F大猜想的 沒有"覆蓋" 06/01 05:08
!!!!! 我今天又再看一次 !!! 沒錯,你和F大是對的!!!
他並沒有覆蓋前3600筆資料,而是加在3600筆資料後,我這才發現昨天測試的txt檔裡有破
萬筆data!!!
謝謝 兩位 我大該知道該怎麼處理了!!
※ 編輯: totemist (36.228.236.142), 06/01/2015 16:48:46

修正成功!!!
只要把'a'改成'w+t'就可以了!!!
昨天既然被困惑了!!!
謝謝大大們的提點~
※ 編輯: totemist (36.228.236.142), 06/01/2015 16:53:55

你可能也想看看

搜尋相關網站