?? mathtools faq.txt
字號:
DataFit可以自定義擬合模型,適用于復雜系統的擬合。
===================================
41)..Matlab中為什么我對m文件、simulink模塊,mat文件的修改不起作用呢?
:hyphone,2002/7/6,SMTH/MathTools#
檢查Matlab路徑中是否有與你的m文件、mdl文件或者mat文件同名的m文件、
mdl文件或者mat文件。Matlab執行搜索到的第一個文件。
===================================
42).Matlab中,函數里面怎樣使用基本工作空間中的變量?
為什么inline函數不能使用外面的變量?
:hyphone,2002/7/6,SMTH/MathTools#
函數只能存取它自己的工作空間中的變量。要在函數之間,或者函數與基本
工作空間之間傳遞數值,嘗試以下方法:
1、使用全局變量,用global定義全局變量
2、使用evalin:
evalin('base','v=1;'); %在基本工作空間中執行命令:v=1;
evalin('caller','v=1;');%在調用該函數的函數的工作空間中
執行命令:v=1;
3、參數傳遞
4、使用assignin:
assignin('base','v',v); %將v賦給基本工作空間中的變量v;
assignin('caller','v',v); %將v賦給調用者工作空間中的變量v;
inline函數里面只能出現函數和參數,要傳遞一個可變系數,需要用evalin。
如:fzero('f(evalin(''base'',''x1(i)''),x3)',求解區間)
===================================
43).怎樣在Simulink中調用m文件?
:hyphone,2002/7/6,SMTH/MathTools#
函數m文件可以使用Function & Tables中的Fcn模塊。如果有多個輸入,
用Mux組合成一個向量,然后在Fcn模塊的Expression填
MyFunction(u(1),u(2))"。如果有多個輸出,用Demux分解成多個標量。
===================================
44).Matlab中怎樣進行數制轉換?
:hyphone,2002/7/6,SMTH/MathTools#
參見:hex2dec,oct2dec,bin2dec,dec2bin,dec2oct,dec2hex.
===================================
45).matlab中的*.p是什么文件?怎么用?
:#David Martin(dg.martin@home.deleteme.com), 2000/07/07,comp.soft-sys.matlab#
p文件是pre-parsed的縮寫,即matlab在第一次運行某m文件時,matlab把該
文件先編譯成一種matlab的pseudo-code,當你再次運行該m文件時,節省了
parse的時間。
p文件可以離開m文件單獨運行
:#Mike Robbins (michael.robbins@us.cibc.com),2001/04/20,comp.soft-sys.matlab#
在matlab中用pcode('yourfilename')來生成p文件
===================================
46).在Matlab中有goto語句嗎?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/7/23. BigGreen/en_Matlab#
matlab中沒有提供goto,因為結構化程序設計不推薦使用goto,但在matlab
中,goto的功能可以部分用結構化的異常處理機制來實現,比如從多重循環
中跳出,具體代碼為:
try
for i=1:10
for j=1:10
for k=1:10
do_something;
if(jump_condition)
errorid=-2;
error('I want to get out!');
end
end
end
end
catch
fprintf(1,'catch error:%d',errorid);
end
===================================
47).請問matlab6.X的那個matlab server是做什么的?(matlab開機運行問題)
:#hairhead, 2002/4/3. SMTH/MathTools#
如果你在安裝matlab時選擇了web server的話,在每次重新啟動后系統
進程中就會出現matlab/matlabserver兩個進程,如果你不需要使用
matlab webserver服務的話,建議在安裝時不要選擇web server,
如果已經安裝的話,可以在"控制面板->管理工具->服務"中找到
matlab webserver,然后把它disable掉。
===================================
48).Matlab中如何用鼠標取得坐標?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/11/19. BigGreen/en_Matlab#
matlab中用ginput來取得圖像上的一點。注意:image()/imagesc()對象
的y軸是和一般圖的y軸反的。
如果復雜的話,可以在ButtonDownFcn中get(0,'PointerLocation')
或者get(gcf,'Position');
===================================
49).Matlab中有階乘函數嗎?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/7/23. BigGreen/en_Matlab#
matlab沒有提供直接的階乘函數,但可以用prod(1:n)來求n!
用prod(1:2:2n-1)或者prod(2:2:2n)來求解n!!
===================================
50)..怎樣才能把Maltab學精?
:#energy(長白山), 2002/9/23. SMTH/MathTools#
"帶著問題學,活學活用,學用結合,急用先學,立竿見影,
在'用'字上狠下功夫。"
===================================
51)..Matlab如何計算大階乘?
:#lll, 2002/9/18. SMTH/MathTools#
如果只需要大致的值,取log10,
計算出result=log10(1000!)=log10(1)+log10(2)+...log10(1000)
然后求10^result=10^result的小數部分*10^result的整數部分
===================================
52)..Matlab中怎樣求變上限二重積分?
:#hyphone,2002/9/22, SMTH/MathTools #
對于解析函數,用兩次int即可。
如求x+y在0[返回]
53)..用符號積分算出來Ei是什么意思,怎樣求值?
:#hyphone,2002/9/22, SMTH/MathTools #
Ei是maple中的指數積分函數,表示exp(-x*t)/t^n對t從1到正無窮大的積分。
Ei(n,x) = int(exp(-x*t)/t^n, t=1..infinity)
用命令“mhelp Ei”可以查看詳細說明;用符號計算得到的不明白的函數都可以通過
mhelp命令得到幫助。
求Ei(1,2)可以用maple命令得到:str2num(maple('evalf(Ei(1,2))'))。
===================================
54)..Maltab中使用\n換行在notepad中顯示為小黑塊,為什么?(Randy Poe)
:#Randy Poe,2002/10/21,comp.soft-sys.matlab#
:#Peter J. Acklam(pjacklam@online.no),2002/6/26,comp.soft-sys.matlab#
換行和回車是不同的,而且在不同的操作系統,解釋也不相同。
\n一般會操作系統被翻譯成"行的結束",即LF(Line-Feed)
\r會被翻譯成"回車",即CR(Cariage-Return)
對于文本文件的新行,在UNIX上,一般用\n(LF)來表示,Mac上用\r(CR)來表示,
Windows上是用\n\r(CR-LF)來表示。
所以在matlab中使用\n來寫回車,在windows上打開會出現小方塊。如果想
避免這種情況,打開文件時使用t參數:
fid = fopen('myfile.dat','wt');
===================================
55)..Matlab中能開多大數組?(Steven Lord)
:#Steven Lord (slord@mathworks.com),2002-10-22,comp.soft-sys.matlab#
使用computer命令:
[C,MAXSIZE] = computer
===================================
56)..如何使用整型矩陣來節省內存?(Duane Hanselman)
:#Duane Hanselman (masteringmatlab@yahoo.com),2002/10/22,comp.soft-sys.matlab#
如下方法無需先生成一個double的數組,然后轉換為int8
>> rc=[3 4] % row and column sizes
>> a(prod(rc))=int8(0) % example using int8
>> class(a) % they are all int8s
>> reshape(a,rc) % make it the size you want
同時也可以使用repmat來實現上述功能:
>> repmat(int8(0),rc)
===================================
57).Matlab在P4芯片上無法啟動的解決方案
:#FangQ(Qianqian.Fang@dartmouth),2002/11/10,SMTH/MathTools#
如果不想安裝補丁,只能使用matlab -nojvm的形式啟動
matlab,否則需要參照如下頁面的解決方案來安裝補丁:
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&selm=
NQ8a9.6835%24ob2.611653%40newsread1.prod.itd.earthlink.net
http://www.mathworks.com/support/solutions/data/27293.shtml
===================================
58).如何求解對離散點的最優橢圓擬合?(Andrew Fitzgibbon, et al)
:#Authors: Andrew Fitzgibbon, Maurizio Pilu, Bob Fisher
"Direct Least Squares Fitting of Ellipses", IEEE T-PAMI, 1999#
http://bbs.dartmouth.edu/~fangq/MATH/Source/fitellipse.m
===================================
59).Matlab/Mathematica中如何中斷當前運算?(FangQ)
:#FangQ(Qianqian.Fang@dartmouth),2002/11/19,BigGreen/MathTools#
Mathematica中使用: Alt+./Alt+,
Matlab中使用: Ctrl+C
===================================
60)).Matlab/Mathematica中如何檢查括號匹配?(FangQ)
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/11/11,SMTH/MathTools#
Mathematica中使用: Ctrl+.
Matlab editor中使用: Ctrl+B
===================================
61)..Matlab的GUI中為何無法使用uicontrol的句柄?(FangQ)
:#FangQ(Qianqian.Fang@dartmouth.edu),2002/11/11,SMTH/MathTools#
如果你在執行GUI時出現"handles not defined"的錯誤時,
打開GUIDE,把figure的HandleVisibility設置為on或者callback,
則你可以在各個callback中直接使用handles,而不用聲明global
例如:
dat=get(handles.figure1,'userdata');
dat2=fliplr(dat);
se(handles.edit1,'userdata');
===================================
62)..Matlab中如何把向量拓展成矩陣?(Zealous/FangQ)
:#Zealous/FangQ,2002/11/9,SMTH/MathTools#
可以使用repmat(),例如: repmat([1,2,3]',1,5)
或者使用kron(),例如: kron([1 2 3]',ones(1,5))
===================================
63)..Matlab的GUI中的按鈕如何在運行時移動及改變大小?(FangQ)
:#FangQ(Qianqian.Fang@dartmouth),2002/11/19,refer to comp.soft-sys.matlab#
使用selectmoveresize函數,例如:
figure
h=uicontrol('style','pushbutton');
set(h,'ButtonDownFcn',...
'selectmoveresize;set(h,''selected'',''off'')',...
'Enable','inactive')
===================================
64)..Matlab如何求解維數巨大的稀疏矩陣方程?(FangQ)
:#FangQ(Qianqian.Fang@dartmouth),2002/11/19,BigGreen/MathTools#
Matlab提供了非常豐富的迭代型矩陣求解器,方法包括CG,BiCG,BiCGSTAB,
CGS,GMRES,LSQR,MINRES,P-CG,QMR,SYMMLQ等,為了加快矩陣求解速度,還
提供了兩個Preconditioner函數:luinc(不完全LU分解),和cholinc(不完全
Cholesky分解)。下面是一個使用GMRES求解方程Amat*x=rhs的一個簡單例子:
[L2,U2] = luinc(Amat,1e-3);
tic
x=gmres(Amat,rhs,[],1e-6,100,L2,U2);
toc
>************************************************************************<
> 第三節:Mathematica的常見問題
>************************************************************************<
===================================
1).Mathematica 可以定義變量為實數么?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/en_Mathematica #
1. 在Simplify/FullSimplify可以使用\[Element],如
Simplify[Re[a+b*I],a\[Element]Reals]
2. 可以使用ComplexExpand[]來展開表達式,默認:符號均為實數:
Unprotect[Abs];
Abs[x_] := Sqrt[Re[x]^2 + Im[x]^2];
ComplexExpand[Abs[a + b*I], a]
3. 使用/:,對符號關聯相應的轉換規則
x /: Im[x] = 0;
x /: Re[x] = x;
y /: Im[y] = 0;
y /: Re[y] = y;
Re[x+y*I]
===================================
2).Mathematica中如何中斷運算?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/en_Mathematica#
Alt+. 直接終止當前執行的運算
Alt+, 詢問是否終止或者繼續
如果不能終止,用菜單Kernel\Quit Kernal\Local來退出當前運算
===================================
3).請高手推薦Mathematica參考書
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/en_Mathematica#
我迄今為止看到的最好的一本就是Mathematica自己帶的幫助里面
的The Mathematica Book,內容全面,
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -