下面是matlab程式,為什麼執行結果不是正確的結果,正確的結果應該是y 138 這是為什麼啊?求高手解答

2022-12-28 14:55:47 字數 1726 閱讀 7946

1樓:匿名使用者

fid = fopen('temp.txt', 'wb');%把wt換成wb,以和rb對應,或者都改成wt,總之要對應

這個問題與主要和文字檔案的編碼有關,具體的我也不是很清楚,裡面應該是很複雜的,何況還有數值溢位的問題和matlab函式的內部執行機制有關。

wt中的t表示文字檔案是ansi編碼,儲存時存的是字元的acsii值,對於數字佔1個位元組

你新建一個txt檔案,裡面寫一個1,儲存時儲存的是1的ascii值49的二進位制表示,儲存後檔案大小是1位元組,如果是12,他有兩個字元,分別是1和2的ascii值的二進位制表示,檔案大小就是2位元組

你可以試試。

wb中的b表示二進位制檔案,他直接存的是這個數的二進位制表示,即對於12,他直接存的是12的二進位制表示,而非存兩個字元,1和2,因此一般來說二進位制檔案更小,對計算機來說效率更高。

實際上你不用搞得那麼清楚,只要保證你讀和寫的方式是一致的,基本就不會出現你那樣的問題。

僅供參考,滿意請採納,謝謝

2樓:

zhaodashiba

同樣一個matlab程式,有時候執行結果正確,有時候執行結果錯誤,這是為什麼呢?

3樓:皮皮蝦來旯

我也遇到過。而且我也加了clc; close all;clear;

4樓:匿名使用者

貼出來看看。可能跟你執行之前是否有其他變數有關。如果你的**最前面總是有clc和clear,那麼應該是不會出現有時成功有時錯誤的情況的。

因為clear清除了workspace裡面的變數,使得執行環境都一樣。

matlab的for迴圈和if條件語句下面**為什麼執行結果不對?

5樓:匿名使用者

第二個end的位置不對,直接拖到最後一個end後面就可以了a=[1 2 3;4 5 6;7 8 9];

for i=1:2

for j=1:2

if abs(a(i,j))

6樓:莫名漢堡大亨

是不是陣列越界了啊

j=n-1時

a(i,j+1)不會越界嗎?

matlab中為什麼每次這個程式執行結果不一樣?

7樓:

因為unifrnd函式產生的是連續均布分佈的隨機數,每次迴圈,每次執行,x1,x2都是不一樣的。

matlab程式除錯顯示結果,不知道是什麼意思?請高手指教?執行的結果不符合約束條件。

8樓:匿名使用者

意思是說:

警告:用於大型優化問題的信賴域方法不能解決樓主這種型別問題,請改為中內型優化演算法(線性搜尋容演算法);

已經超過了最大目標函式計算次數,請調高此設定,即options.maxfunevals

事實上,很可能是你的優化模型有問題,沒有最有解。

options=optimset('largescale','off','display','iter','maxfunevals',100000);

用上面這句代替原程式中的**,仍然沒有最優結果,基本上是你的模型的問題,你有很多等式約束,這種優化不好搞,能不能消掉幾個設計變數,減少等式約束的個數。

9樓:活躍的信義

好難啊,我也不知道。

求問下面matlab程式的解釋,每一行都是什麼意思

前四行 定義m 1 陣列a b c 三個for 對陣列的每個元素進行迴圈 if 是如果 下標之和等內於9 那麼 d m 就定義容為 對應的a b c 的元素的和 並把當前下表存在e的第m行 然後把 m加一,用來儲存下一個 等於9 的位置 maxnum用來存陣列d的最大值 取出d的第一個元素,如果d ...

下面程式段的輸出結果是為什麼c語言

a的資料型別是什麼?不管了,我就當是 int 型的了。a 100,a 120不成立,所以while 不執行,而while後面的內內 容是容 分號,也就是 while的內容為 空 所以結束while後執行a a 1 得a 101,列印a 101 a 100 while a 120 請注意這裡有沒有ba...

請問MATLAB大神,這個程式的res是什麼意思,為什麼執行出來顯示缺少引數

res 就是一個返回值,這 個函式的功能是根據x,y資料來插值rho,所以你要正常執行的話,你得給出專x,y,rho的資料啊。你不屬給資料,只寫x rho當然提示你引數不足啊。例如可以這麼呼叫 x 1 5 y x.2 rand rho 1.5,2.5,3.5,4.5 x rho x,y,rho ma...