[运算] 请问程式可以跑一次,却无法跑第二次?

楼主: 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