📄 mathfaq.txt
字号:
检查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/7/23. BigGreen/en_Matlab#
matlab中用ginput来取得图像上的一点。注意:image()/imagesc()对象
的y轴是和一般图的y轴反的。
如果复杂的话,可以在ButtonDownFcn中get(0,'PointerLocation')
===================================
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的整数部分
>************************************************************************<
> 第三节: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,内容全面,循序渐近,非常容易学习使用
。其他所见到的一些中文书籍基本上都是直接翻译帮助的内容,没有
什么新意。
===================================
4)请问在Mathematica中如何画极坐标图?
:#FangQ(Qianqian.Fang@Dartmouth.Edu), 2002/6/4. SMTH/MathTools #
<< Graphics`Graphics`
PolarPlot[]
PolarListPlot[]
===================================
5)Mathematica中如何对离散点作积分?
:#FangQ(Qianqian.Fang@Dartmouth.Edu), 2002/5/9. SMTH/MathTools#
离散的点通过插值或者拟合就可以得到连续的函数,然后可以对该函
数求积分和微分。下面是一个例子:
f[x_] := NIntegrate[Sin[Cos[x]], {x, 0, a}];
data = Table[{a, f[x]}, {a, 0, 10}];
expr = Interpolation[data];
Plot[expr[a], {a, 0, 10}];
Plot[Evaluate[D[expr[a], a]], {a, 0, 10}]
如果想实现Matlab中的cumsum的功能:
Drop[FoldList[Plus, 0, {a1,a2,…,an}], 1]
===================================
6)在Mathematica中创立palette?
:#FangQ(Qianqian.Fang@Dartmouth.Edu), 2002/6/18. SMTH/MathTools#
在帮助中查找"Creating Palettes (Windows)"
===================================
7)Mathematica可以作用户界面吗?
:#FangQ(Qianqian.Fang@Dartmouth.Edu), 2002/5/31. SMTH/MathTools#
Mathematica的GUI设计是通过它的交互式的NoteBook实现的,可以参
考Mathematica帮助文件中的demo例子,或参考帮助2.10.6
===================================
8)Mathematica中如何使用中文?
:#FangQ(Qianqian.Fang@Dartmouth.Edu), 2002/7/23. BigGreen/en_Mathematica#
Mathematica3/4/4.1中如果使用中文,需要先选中所在的cell,或者选中
输入的中文乱码,在菜单format font中选中对应的中文字体后才能正确
显示。
最新的4.2在国际化有较大的改进,可以直接输入中文,参见
http://www.wolfram.com/products/mathematica/newin42/publishing.html
>************************************************************************<
> 第四节:Matcom的常见问题
>************************************************************************<
===================================
1)什么是Matcom?它与Matirx/MIDEVA的关系是什么?
:#FangQ(Qianqian.Fang@Dartmouth.Edu), 1999/11/2. SMTH/MathTools#
Matcom是MathTools公司(UPenn)开发的一个基于C++矩阵函数
库Matrix的一个matlab m文件与cpp文件的转换程序。MIDEVA为他
的一个集成调试编译环境(界面)。
Matcom独立于matlab之外,但需要外部的c++ compiler,在安装时需要
指定c++ compiler的未知,否则无法工作。安装的时候需要指定matlab
的位置主要是为了编译文件中需要的一些系统函数来找到路径用的。
现在MathTools公司已经被生产Matlab的MathWorks公司兼并,Matcom
最后版本为4.5,之后部分matcom的内容被合并到mathworks的visual
matlab中。
===================================
2)如何取出matcom矩阵的元素的值并交给C语言变量?
:#FangQ(Qianqian.Fang@Dartmouth.Edu), 1999/11/2. SMTH/MathTools#
double mydata[3][3];
dMm(amatrix);
amatrix=rand(3);
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
mydata[i-1][j-1]=amatrix.r(i,j);
//or mydata[i-1][j-1]=amatrix.fastindex(i,j);
也可以用memcpy() 把amatrix.pr指针的内容读出来,交给mydata,但行
列可能要转置。
如果amatrix=sparse(…),用amatrix.r()方法不能取出需要的值
===================================
3)Matcom中有多个输出的函数在C++中应该怎么调用?
:#FangQ(Qianqian.Fang@Dartmouth.Edu), 1999/11/2. SMTH/MathTools#
使用i_o作为分割符
meshgrid(colon(0.0,1.0),colon(0.0,1.0),i_o,xi,yi);
与matlab中的
[xi,yi]=meshgrid(0:1,0:1);
是等价的
===================================
4)如何在VC或C++Builder中使用matcom数学库?
:#FangQ(Qianqian.Fang@Dartmouth.Edu), 1999/11/2. SMTH/MathTools#
1.在Project\Add to project\选择\lib\v4500.lib
2.文件头写#include "matlib.h"
然后就可以用了
===================================
5)使用了matcom4.5数学库的VC/C++Builder程序如何发布?
:#FangQ(Qianqian.Fang@Dartmouth.Edu), 1999/11/2. SMTH/MathTools#
在VC/CB中调用了matcom库,通过编译生成独立执行的程序,所以,
不需要matlab系统,但一些必要的dll文件还是需要的,这
些dll在window\system\下面,(在4.5版本中)大概
有ago4500.dll,v4500v.dll,opengl32.dll,glu32.dll等
四个文件
===================================
6)安装matcom在搜索matlab路径时说找不到matcom.m,怎么办?
:#FangQ(Qianqian.Fang@Dartmouth.Edu), 2002/6/22. SMTH/MathTools#
原因是matlab 6.x
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -