[運算] 請問程式可以跑一次,卻無法跑第二次?

作者: irene54510 (irene)   2015-12-28 03:31:53
我有一個問題想要請問:
我有一個程式碼,當我按下run的時候,可以跑,但是,結果跑出來之後,再按一次,
就會出現error。
可是把matlab關掉之後,又可以跑,我試著抓錯誤,發現裡面有一個程式碼怪怪的。
但是,不知道該怎麼修改,請問是否有人可以協助我?
% theta為 N by 1 的矩陣
% a、b、c為 1 by n 的矩陣
[n]=size(a,2);
[N]=size(theta);
sum=(ones(N,1)*a).*(theta*ones(1,n))-(ones(N,1)*b);
Information =100000* (ones(N,1)*a) .* (ones(N,1)*a) .* ((exp(sum) ./
(1-exp(sum))) .^2) .*((1-(ones(N,1)*c))/((ones(N,1)*c)+exp(sum)));
最後的那個information是否可以告訴我,他是否有錯誤?若有錯誤?為什麼又可以跑第
一次呢?
謝謝
作者: irene54510 (irene)   2014-01-13 17:30:00
謝謝celestialgod您所改寫的程式碼,真的跑的比較快
作者: celestialgod (天)   2014-01-13 17:39:00
不客氣
作者: wxtab019 (天霜凝月)   2015-12-28 13:07:00
把資料先清空再跑第二次看看?
作者: celestialgod (天)   2015-12-28 13:55:00
sum是內建函數的名稱,先把這個改掉試試看另外 [N]=size(theta, 1);((1-(ones(N,1)*c))/((ones(N,1)*c)+exp(sum)))出來是14 x 14的矩陣前面都是 14 X 10更正 出來是 N x N的矩陣前面是 N x n建議都改成用bsxfun處理
作者: rex0707 (我就是我)   2015-12-29 00:33:00
我用matlab都會在最前面加 clear all
作者: profyang (prof)   2015-12-29 01:01:00
clear; clc; close all; fclose all;
作者: irene54510 (irene)   2015-12-29 16:39:00
謝謝大家,請問celestialgod,我會試試bsxfun,那麼,請問有沒有人知道為什麼同一支程式碼,小數據可以跑,大數據卻不可以跑呢?例如:n=10可以,但n=1000,卻不行
作者: celestialgod (天)   2015-12-29 18:35:00
很少有這種情況出現,除非記憶體不足沒有發生錯誤的程式,也無法斷言是什麼原因
作者: s4300026 (s4300026)   2015-12-29 19:00:00
你先看左下角有沒有busy 按複製快捷建(ctrl+c) 有無紅字可能是寫法效率很差,造成短時間內跑不出結果。
作者: irene54510 (irene)   2015-12-30 17:38:00
謝謝大家,celestialgodu,應該不是記憶題的關係,有趣的是,n=10沒有error,n=1000就有error了!s4300026/,說得很有可能,但我不知道該怎麼改善?
作者: profyang (prof)   2015-12-30 18:32:00
s43大講的case是不會出現error的 只會是還沒跑完在那邊busy 你要不要貼一夏你的error code?
作者: celestialgod (天)   2015-12-30 18:37:00
http://pastebin.com/HBnidmn3 先改這樣試試看a .^ 2那裏也可以改用bsxfun算,我忘了改XDbsxfun(@times, a.^2, ((exp(s) ./(1-exp(s))).^2))你最後的 /我改成 ./了因為dimension對不起來除非n=N

Links booklink

Contact Us: admin [ a t ] ucptt.com