Mathematica笔记
划横线:
用Ctrl+Shift+E展开Cell然后添加:
CellFrame->{{0, 0}, {0, 1}}
再用Ctrl+Shift+E缩起来,就可以搞出横线来啦
多位数分解成一位一位的:
IntegerDigits[158]
{1, 5, 8}
RealDigits
反操作:FromDigits
给出二项式系数
Binomial[10, 3] = 120
Take:
取List中前n个数或后n个数或中间某n个数
DictionaryLookup:
英文词典根据正则表达式查找单词
Total:
对于一维List:所有元素之和
对于矩阵:同列求和
根据List来画三维图:
ListPointPlot3D[Table[Sin[j^2 + i], {i, 0, 3, 0.1}, {j, 0, 3, 0.1}]]
转为小写:
ToLowerCase
XXXXXQ:
判断是否为XXX数,例如:
PrimeQ[17] = True
EvenQ[17] = False
StringMatchQ
计算所有约数:
Divisors[18] = {1, 2, 3, 6, 9, 18}
For循环语句:
For[i = 0, i < 4, i++, Print[i]]
画离散的方格:
ArrayPlot
把文字,表达式转为图片,即栅格化:
Rasterize[x^2 + y^2, RasterSize -> 75, ImageSize -> 200]
得到写着x2+y2的图片
把图片翻转:
ImageReflect
矢量翻转:
Reverse
图片转为二值图像:
Binarize
获取图像的像素值:
ImageData
获取三维数组的元素:
d[[1 ;; 3, 1 ;; 5]] =
{{{221, 139, 66}, {217, 135, 64}, {216, 136, 67}, {219, 139, 70}, {218, 138, 67}},
{{225, 140, 68}, {221, 137, 67}, {219, 138, 69}, {221, 141, 70}, {219, 139, 68}},
{{226, 138, 67}, {224, 138, 68}, {221, 138, 68}, {222, 140, 69}, {223, 141, 71}}}
d[[1 ;; 3, 1 ;; 5, 1]] =
{{221, 217, 216, 219, 218}, {225, 221, 219, 221, 219}, {226, 224, 221,222, 223}}
上一个答案:
%
由数组构造图片:
Image[
{{{221, 139, 66}, {217, 135, 64}, {216, 136, 67}, {219, 139, 70}, {218, 138, 67}},
{{225, 140, 68}, {221, 137, 67}, {219, 138, 69}, {221, 141, 70}, {219, 139, 68}},
{{226, 138, 67}, {224, 138, 68}, {221, 138, 68}, {222, 140, 69}, {223, 141, 71}}}, “Byte”]
数字转ASCII码:
FromCharacterCode
ASCII码转数字:
ToCharacterCode
Do语句:
Do[Print[n], {n, -3, 5, 2}]
Break语句;
Do[Print[i]; If[i > 2, Break[]], {i, 10}]
矩阵变成一维矢量:
Flatten 或去掉指定层数的{}
排序:Sort
Sort[{4, 1, 3, 2, 2}, #1 > #2 &]
清除变量或函数
Clear[]
画图论里面那种连通图
GraphPlot
连接字符串:
“abcd” <> “ABCD” <> “xyz”
StringJoin[{{“AB”, “CD”}, “XY”}]
将图片或者表达式转为Mathematica代码:
InputForm[]
随机数:
整数:RandomInteger
实数:RandomReal
复数:RandomComplex
一个List的随机排序:RandomSample
展开成精确地数值表达形式{如果可以的话}
FunctionExpand[Cos[pi/17]]
绘制等高线:
ContourPlot
制作交互动画:
Manipulate[Plot[Sin[x (1 + a x)], {x, 0, 6}], {a, 0, 2}]
自动播放的动画:
Animate[Plot[Sin[x (1 + a x)], {x, 0, 6}], {a, 0, 2}]
&表明是个函数
#n:传进函数的第n个参数
/@:Map 代入
@@:Apply @@左边那个函数直接作用域右边
/; :附加条件
迭代计算:
Nest[(1 + #)^2 &, 1, 3] = 676
NestWhile[#/2 &, 123456, EvenQ] = 1929
NestWhile[Log, 100, # > 0 &] = Log[Log[Log[Log[100]]]]
NestWhileList[#/2 &, 123456, EvenQ] = {123456, 61728, 30864, 15432, 7716, 3858, 1929}
把式子转为只有小数形式
N[Log[Log[Log[Log[100]]]]] = -0.859384420389173
画出符合不等式的区域:
RegionPlot[x^2 + y^3 < 2 && x + y < 1, {x, -2, 2}, {y, -2, 2}]
RegionPlot[Sin[x] Sin[y] > 1/4, {x, -10, 10}, {y, -10, 10}, BoundaryStyle -> Dashed, PlotStyle -> Yellow]
查看单词信息:
WordData[“fish”]
需找字符串中符合某种模式的部分:
StringCases[“abcadcacb”, “a” ~~ _ ~~ “c”] = {“abc”, “adc”}
注:_表示一个字符,__表示任意多个
StringCases[“abcadcacb”, “a” ~~ x_ ~~ “c” -> x] = {“b”, “d”}
正则表达式:
RegularExpression
List中挑出满足指定条件的数成为一个新的List
Select
字符串转化为单个字符:
Character
一行一行读取文件:
ReadList[“e://aa.txt”, String]
取第一或最后一个元素:
First
Last
找到频率最大的n个数(众数)
Commonest
表达式的部分由别的表达式来代替:
With
函数定义中使用with代替/.可以获得临时变量
w[x_] := With[{t = x + 1}, t + t^3] t就是临时变量
去掉List中的一些数(集合相减)
Complement
去掉重复元素
DeleteDuplicates
矩阵形式显示:
// MatrixForm
// TableForm
前面添加一个元素:
Prepend
尾部添加一个元素:
Append
中间插入:
Insert
展开表达式:
Expand
因式分解:
Factor
上一个结果中的值直接代换:
% /. x -> y
多项式拟合:
InterpolatingPolynomial
三维隐函数画图:
ContourPlot3D
返回小数部分:
FractionalPart
整数部分:
IntegerPart
播放指定乐器指定时间的单音:
Sound[SoundNote[“G”, 1, “Violin”]]
读出句子:
Speak[“hello”]
播放正弦曲线那种构成的声调:
Play
按钮及其相应函数:
Button[“press me”, Speak[“thank you”]]
矩阵倒置:
Transpose
or ESC tr ESC
矩阵求逆:
Inverse
方阵求值:
Det
根据给定约束条件重新化简表达式:Refine
Refine[Sqrt[x^2], x > 0] = x
生成等差序列:
Range
定义函数时对参数做约束:
kk[n_ ? EvenQ] := 2*n;
dd[n_ /; n > 0] := 2*n;
ff[n_ ? (# > 3 &)] := 2*n;
圆周移位:
RotateLeft
返回元素在List中的位置:
Position
删除指定位置的部分元素:
Drop
获取矩阵维数:
Dimensions[]
统计个数:
BinCount
卷积:ListConvolve
如果要实现matlab里面conv的结果,则要ListConvolve[a,b,{1,-1},0];
不动点:
FixedPoint[f,expr]
e.g.FixedPoint[(# + 2/#)/2 &, 1]
按照特定函数生成List:
Array[f,n] = 生成长度为 n、元素为 f[i] 的列表,i = 1,2,3,4,5,6,7
也可生成矩阵
自定义运算:
(a_⊕b_):=…..
⊕输入方法:ESC C+ ESC
稀疏矩阵输入:
SparseArray:只需指定部分位置的数,其余值默认
s = SparseArray[{i_, i_} -> y, {3, 3}, x] // MatrixForm
s = SparseArray[{{i_, i_} -> -2, {i_, j_} /; Abs[i – j] == 1 -> 1}, {5, 5}] // MatrixForm
幂级数(泰勒级数)展开:
Series[f[x], {x, a, 3}]
相等:
SameQ === 表达式也要完全相同
Equal == 值相等
定义函数默认参数:
f[n_:4] := ..
List用某些数来填充List使其达到特定长度:
PadLeft
PadRight
ArrayPad
ImagePad
阶跃函数:UnitStep
克罗内克函数:KroneckerDelta
冲击函数:DiracDelta 广义函数
方波函数:UnitBox
积分运算时可以添加条件:
Integrate[x^n Exp(-x^2), {x, -∞, ∞]}, Assumptions →n >= 0]
Matlab中的stem:
DiscretePlot
一定范围的质数的数目:
PrimePi
While函数:
n = 1;
While[n < 4, Print[n]; n++]
找出符合条件的数:
TakeWhile
LengthWhile返回的是TakeWhile的数量(长度)
指定条件替换:
{6, -7, 3, 2, -1, -2} /. x_ /; x < 0 -> w
/.表示替换
/;表示条件(Condition)
获取用户输入:
Input
FFT:
Fourier
注意!!{ Fourier[a]*Sqrt(Length[a]) }* 才等于Matlab中的FFT函数
对每一个数调用函数f:
Scan
定义参数时使用x__可以不定长
具体参见BlankSequence
下角标:
Subscript
画图论里面的那些图:
Graph
矢量操作:
Grad
Div
Laplacian
Curl
这些函数使用之前要先:Needs[“VectorAnalysis”]
计算保持更新:
Dynamic[x^2]
以后你x改成不同的值,这个计算的结果也会相应地改变
计算函数的最小值和取最小值的位置:
Minimize
无数值解时就用:NMinimize
搜索局部最小值:FindMinimum
MinValue值算出最小值
ArgMin是算出最小值的位置
化简不等式或者消除一个变量:
Reduce
也可用于解不等式:
Reduce[。。。 && 。。。,{x,y}]
播放Wav格式:
a = Import[“aa.wav”,”Data”]
ListPlay[a,SampleRate->44100];
表达式的福利叶变换:
FourierTransform[f,t,w,FourierParameters -> {1, -1}]
FourierParameters->{a,b}.{a,b} 的一些普通选择是 {0,1} (缺省), {-1,1} (数据分析), {1,-1} (信号处理).
解方程,求根:
Solve
NSolve
Roots
Reduce
FindRoot
数据类型:
Head
全组合:
Tuples
检测是否是List中一个元素:
MemberQ
矢量变成矩阵:
Partition
计算投影:
Projection
获取对角线上的元素:
Diagonal
构造对角矩阵:
DiagonalMatrix
直接获得旋转矩阵:
RotationMatrix[theta] // MatrixForm
特征值&特征向量:
Eigenvalues
Eigenvectors
全微分:Dt
偏导:D[f,x]
D[f[x], x] /. x -> 0.5
二阶导数:f”[x]
表达式的卷积运算:
Convolve[DiracDelta[x], f[x], x, y]
归一化:
Normalize
强力化简表达式:
FullSimplify
数值积分:
NIntegrate
复数实部虚部共轭:
Re
Im
Conjugate
微分方程求解:
DSolve
数值解:
NDSolve
根据数组递归公式求解通式:
RSolve
根据递归函数求解出一个List:
RecurrenceTable
求解矩阵的线性方程:
LinearSolve
LeastSquares
3D画出区域图:
RegionPlot3D
用给定的带参数的表达式去拟合曲线(点),求解出参数的最优解:
FindFit
线性规划问题求解:
LinearProgramming
通式绘制多幅图像:
Show
g1 = Plot..
g2 = Plot…
Show[g1,g2…]
Show[Graphics[Table[…..]]]
根据分布算期望值:
Expectation
NExpectation
根据分布计算某函数成立的概率:
Probability
NProbability
根据分布产生随机数:
RandomVariate[NormalDistribution[]]
绘制统计图:
Histogram
e.g.Histogram[RandomVariate[NormalDistribution[0, 1], 20000]]
平滑的统计图:SmoothHistogram[RandomVariate[ExponentialDistribution[1/2], 500]]
3D版:Histogram3D
两个不同分布画于同一图并用不同颜色区分:
Histogram3D[{data1, data2}]
SmoothHistogram3D
已知比例画饼状图:PieChart
已知比例画条形图:BarChart
Excel那种3维条形图:BarChart3D
画图样式请查看:
guide/GraphicsOptionsAndStyling
具有数值动态更新的模块:
DynamicModule
定位器的使用:
Locator
画二维三维等立体图形等符号图形语言,
请参照guide/SymbolicGraphicsLanguage
Plot画图时添加Tooltip可以获取曲线的提示
分Tab画图:
TabView
制作幻灯片式的放映:
SlideView
点击式切换放映:
FlipView
滚动选择条切换放映:
MenuView
PS:PopupMenu
可以打钩的框:
Checkbox
RadioButton
点击表达式即可切换式子:
Toggler
通过设置一个按钮,改变表达式中某个东西的值
Setter
设置多个值时用:SetterBar
对绘制的图按Ctrl+D可以使用绘图工具继续编辑
获取时间:
Clock
图像处理函数库请参照:
guide/ImageProcessing
按列显示:
Column[{1, 12, 123, 1234}, Center]
获取全部变量定义:
Names[“Global`*”]
清除全部变量:
Clear[“Global`*”]
属于符号:
ESC el Esc
化简表达式时可用x∈Reals
Simplify[Re[a+b*I],a[Element]Reals].
常用绘图设置选项:
PlotStyle 用什么样方式作图(颜色,粗细等) PlotLabel 给图形加上标题 AxesLabel 给坐标轴加上名字 Ticks 刻度 AxesOrigin 设置坐标原点
填充图形与坐标轴之间的区域:
Plot[x^2, {x, 0, 2 [Pi]}, Filling -> Axis]
散点图连线:
ListLinePlot
参数图:
ParametricPlot[{fx,fy},{t,tmin,tmax}]
绘制多幅:
ParametricPlot[{fx,fy},{gx,gy},….{t,tmin,tmax}]
显示文本:
Text[x^2 + y^2 < 1, {0, 0}]
多附图矩阵显示:
GraphicsGrid[Table[Plot[Sin[i*j*x], {x, 0, 2 [Pi]}], {i, 2}, {j, 3}]]
绘制表格:
Grid[{{a, b, c}, {x, y^2, z^3}}, Frame -> All]
三维作图关闭阴影,变成纯线条:
Shading->false
关闭着色:
Lighting->False
三维参数图:
ParametricPlot3D[{fx,fv,fz},{t,tmin,tmax}] 线
ParametricPlot3D[{fx,fv,fz},{t,tmin,tmax},{u,umin,umax}] 面
交换x和y值:
{x,y}={y,x}
不用逗号的话要用矩阵形式输入 ctrl+.
函数定义:
Function[3 + #][x]
(3 + #) &[x]
x // #+3 &
#+3 & /@ x
## 表示提供的所有参数的序列
f[##] &[a, b, c, d] === f[a, b, c, d]
## n 表示从数字 n 开始的参数
f[##2] &[a, b, c, d] === f[b, c, d]
#0 表示整个纯函数
f = If[#1 == 1, 1, #1 #0[#1 – 1]] &[3] 计算3的阶乘
输入快捷键:
Ctrl+. 选择下一层子表达式
Ctrl+% 来回切换互补的位置
按 Tab 键选择下一个占位符.
Shift 和 Tab 键,选择前一个占位符
Ctrl 和 Space 移动光标到下一个更高层的子表达式.
Ctrl+, 行向量下一个数
ctrl+enter 列向量下一个数
上标 ctrl+&
底标 ctrl+$
取List最后n个数:
a[[-n;;]]
常用获取文件数据方式:
data = Flatten[Import[“aa.txt”, “Data”]];
改变List大小:
Partition[Join[a],n1]
Partition[a,{n1,n2}]
//. 重复迭代,知道不再变化为止
打开函数模板:
Ctrl+Shift+K
计算运行时间:
Timing
Sow Reap 函数用于提取迭代过程中的中间结果
匹配替换:
{1, x, x^2, x^3} /. x^n_ -> r[n]
另外,Mathematica 中的模式只与由 FullForm 给出的表达式的完全形式进行匹配. 因此,例如,1/x 的完全形式是Power[x,-1],它与模式 x_^n_ 匹配,但不能与模式 x_/y_ 匹配,因为 x_/y_ 的完全形式是Times[x_,Power[y_,-1]]. 另外,”可选变量与默认变量” 将讨论用户如何构造对所有情况都匹配的模式.
元素匹配:
Cases[list,form] 给出与 form 匹配的 list 中的元素
Cases[{3, -4, 5, -2}, x_ /; x < 0]
Cases[expr,lhs->rhs] 在 expr 中寻找与 lhs 匹配的元素,并对其进行变换
In[3]:= Cases[{3, 4, x, x^2, x^3}, x^n_ -> n]
Out[3]= {2, 3}
_ 任何表达式
x_ 命名为 x 的任何表达式
x:pattern 与 pattern 匹配的名为 x 的表达式
In[2]:= f[a^b] /. f[x : _^_] -> p[x]
Out[2]= p[a^b]
In[3]:= f[a^b] /. f[x : _^n_] -> p[x, n]
Out[3]= p[a^b, b]
常用表达式的模式:
x_h 具有头部 h 的表达式
x_Integer 整数型
x_Real 实数型
x_Complex 复数型
x_List 列表型
x_Symbol 符号型
Complex[x_,y_] 复数 x+iy
Complex[x_Integer,y_Integer] 实部和虚部均为整数的复数
(r_Rational|r_Integer) 有理数或整数 r
Rational[n_,d_] 有理数 n/d
(x_/;NumberQ[x]&&Im[x]==0) 任何形式的实数
(x_/;NumberQ[x]) 任何数
x_+y_ 两项或多项的和
x_+y_. 单项或多项的和
n_Integer x_ 有一个整数因子的表达式
a_.+b_. x_ 线性表达式 a+bx
x_^n_ x^n 其中 n!=0,1
x_^n_. x^n 其中 n!=0
a_.+b_. x_+c_. x_^2 线性项系数非零的二次表达式
x_List 或 x:{___} 一个列表
x_List/;VectorQ[x] 没有子列的向量
x_List/;VectorQ[x,NumberQ] 数值向量
x:{___List} 或 x:{{___}…} 集合的列表
x_List/;MatrixQ[x] 没有子列的矩阵
x_List/;MatrixQ[x,NumberQ] 常数矩阵
x:{{_,_}…} 元素对的集合
函数多个默认值可以用Option封装
重复模式:
.. Repeated
In[1]:= Cases[{f[a], f[a, b, a], f[a, a, a]}, f[a ..]]
Out[1]= {f[a], f[a, a, a]}
在这一定义中,所有对的第二个元素必须相等.
In[6]:= vn[x : {{_,; n_} ..}] := Transpose[x]
应用上面的定义.
In[7]:= vn[{{a, 2}, {b, 2}, {c, 2}}]
Out[7]= {{a, b, c}, {2, 2, 2}}
调用函数时记录下曾经计算的结果,下次调用可以加速
f[x_] := f[x] = f[x – 1] + f[x – 2]
修改内部函数要先用Unprotect
Block:
用局部值计算一个表达式,可以用于计算临时式子,结果不会被放入全局变量
字符串连接:Subscript[s, 1]<>Subscript[s, 2]<>[Ellipsis] 或 StringJoin[{Subscript[s, 1],Subscript[s, 2],[Ellipsis]}]
给出一个串中的字符数:StringLength[s]
颠倒串中字符的顺序 :StringReverse[s]
Characters[“string”] 将字符串转换为一个字符列表
DigitQ[string] 测试串中的所有字符是否是数字
LetterQ[string] 测试串中的所有字符是否是字母
UpperCaseQ[string] 测试串中的所有字符是否是大写字母
LowerCaseQ[string] 测试串中的所有字符是否是小写字母
StringReplace
StringReplace[“abcd abcd”, “b” | “c” -> “X”]
In[4]:= StringReplace[“abc abcb abdc”, “ab” ~~ _ -> “X”]
Out[4]= “X Xb Xc”
In[11]:= StringSplit[“a:b;c:d”, “:” | “;”]
Out[11]= {“a”, “b”, “c”, “d”}
字符串中提取数字:
StringCases[“a6;b23c456;”, DigitCharacter]
StringCases[“a1=6.7, b2=8.87”, NumberString]
StringCases[“a1=6.7, b2=8.87”,v : WordCharacter .. ~~ “=” ~~ x : NumberString -> {v, x}]
忽略大小写:
StringReplace[“The cat in the hat.”, “the” -> “a”, IgnoreCase -> True]
匹配字符串时:
Overlaps->All 包含所有重叠
Overlaps->True 包含在每个位置开始的至多一个重叠
Overlaps->False 不包含所有重叠
ASCII和字符串互转:
In[1]:= ToCharacterCode[“ABCD abcd”]
Out[1]= {65, 66, 67, 68, 32, 97, 98, 99, 100}
In[2]:= FromCharacterCode[%]
Out[2]= “ABCD abcd”
正则表达式:
c 字符 c . 除了换行以外的任意字符 [SubscriptSubscript[Ellipsis]] 任意字符 Subscript [Subscript-Subscript] 在范围 Subscript[Dash]Subscript 内的任意字符 [^SubscriptSubscript[Ellipsis]] 除了 Subscript 外的任意字符 p* 重复零次或多次的 p p+ 重复一次或多次的 p p? 出现零次或一次的 p p{m,n} 重复 m 次和 n 次之间的 p p*?, p+?, p?? 匹配的最短一致字符串 p*+,p++, p?+ 所有格匹配 (Subscript[p, 1]Subscript[p, 2][Ellipsis]) 与序列 Subscript[p, 1], Subscript[p, 2], [Ellipsis] 匹配的字符串 Subscript[p, 1]|Subscript[p, 2] 与 Subscript[p, 1] 或 Subscript[p, 2] 匹配的字符串 \d 数字 0[Dash]9 \D 非数字 \s 空格,换行,tab或其它空格字符 \S 非空格字符 \w 单词字符 (字母,数字,或者 _) \W 非单词字符 [[:class:]] 位于命名类中的字符 [^[:class:]] 不位于命名类中的字符 ^ 字符串(或者行)的开头 $ 字符串(或者行)的末尾 \ A 字符串的开头 \ z 字符串的末尾 \ Z 字符串的末尾(首先允许单个换行字符) \ b 词边界 \ B 除了词边界的任何位置
字符串匹配规则:
"string" 由字符组成的字符串 _ 任意单个字符 __ 具有一个或多个字符的任意子串 ___ 具有零个或多个字符的任意子串 x_, x__, x___ 给定名称 x 的子串 x:pattern 给定名称 x 的模式 pattern.. 重复一次或多次的模式 pattern... 重复零次或多次的模式
{Subscript[patt, 1],Subscript[patt, 2],[Ellipsis]} 或 Subscript[patt, 1]|Subscript[patt, 2]|[Ellipsis] 与至少一个 Subscript[patt, i] 匹配的模式
patt/;cond cond 等于 True 的模式 pattern?test 对每个字符 test 等于 True 的模式
匹配高亮字符创实例:
SeedRandom[12345]; dna = StringJoin[Table[{“a”, “c”, “g”, “t”}[[RandomInteger[{1, 4}]]], {1000}]]
StringReplace[dna,x:(“ag” ~~ _ ~~ _ ~~ “t” ~~ _ ~~ “ca”) :> “!(*StyleBox[“” <> x <>
“”,FontColor->RGBColor[1,0,0],FontSize->18,FontWeight->”Bold”]\)”]
List画图中标记某些点:
data = Table[{i, RandomReal[i]}, {i, 10}]; ListLinePlot[data, Epilog -> {PointSize[Medium], Point[Select[data, #[[2]] == Max[data[[;; , 2]]] &]]}]
List画图插值拟合:
InterpolationOrder -> 2
图像标记箭头:
Plot[Sin[x], {x, 0, 2 Pi}, Epilog -> {Arrow[{{Pi, 0}, {3 Pi/2, 1/2}}], Text["Zero", {3 Pi/2, 1/2}, {-1, -1}]}]
List画图标记最大值点:
data = Table[{i, Sin[i]}, {i, 0, 10, 0.01}]; ListLinePlot[data, Epilog -> Function[Bias, {PointSize[Large], Point[#], Arrow[{#, # + Bias}], Text[Style[#, Large, Bold, Red], Flatten[# + Bias ], {-1, 0}]} & /@ Select[data, #[[2]] == Max[data[[;; , 2]]] &]][{2, 0}], PlotRange -> {-1, 2.5}]
Plot画图标记最大值点:
Function[{f, x, xmin, xmax}, Plot[f, {x, xmin, xmax}, Epilog -> Function[ Bias, {PointSize[Large], Point[#], Arrow[{#, # + Bias}], Text[Style[#, Bold, Red], Flatten[# + Bias ], {-1, 0}]} & /@ {{x /. Last[#], First[#]}} &[ Maximize[{f, x <= xmax, x >= xmin}, x]]][{2, 0}], PlotRange -> {-1, 1.5}]][Sin[t], t, 0, 4]
读取文件数据模板:
data = Import[ "C:\Documents and Settings\Administrator\桌面\20130917实验数据\10j_0.5m_0.5m\10j_05m_05m_ 2.txt"]; data1 = StringCases[data, (x : (("-" | " ") ~~ DigitCharacter ..)) ~~ "." ~~ (y : (DigitCharacter ..)) ~~ "e" ~~ (z : (("" | "-") ~~ DigitCharacter ..)) -> x ~~ "." ~~ y ~~ "*10^" ~~ z]; temp1 = InputForm[data1]; d = ToExpression[temp1[[ ;; ]][[1]]]; ListLinePlot[d, PlotRange -> All]
全排列:
Permutations
计算累加和:
FoldList[Plus, 0, {a, b, c, d}]
计算子集全排列:
Subsets
冒泡排序法动画化:
Module[{len, t, a, res = {}}, a = RandomSample@Range@15; len = Length[a]; Do[Do[If[a[[j]] > a[[j + 1]], ( { {a[[j]], a[[j + 1]]} } ) = ( { {a[[j + 1]], a[[j]]} } )]; AppendTo[res, a], {j, 1, len - i}], {i, 1, len - 1}]; ListAnimate[ BarChart[#, ChartStyle -> "Pastel", ChartLegends -> ToString /@ #] & /@ res]]
带边框,字变色的乘法表:
Grid[#, Spacings -> {0.5, 0.2}] &@ Table[Style[Row[{j, "[Times]", i, "=", i j}, Frame -> True], Bold, ColorData["BrightBands"][j/9]], {i, 9}, {j, i}]
计算24点:
calc24[ls_] := Block[{ok, fmt}, fmt = {"((``````)````)````", "(``````)``(``````)", "(````(``````))````", "````((``````)````)", "````(````(``````))"}; ok[fmt_, L_, op_] := If[ToExpression@ToString@# == 24, Print[#, "=", 24]] &@ StringForm[fmt, ##] & @@ Riffle[L, op]; Do[ok[#, ls, op] & /@ fmt, {op, {"+", "-", "*", "/"}~Tuples~3}] // Quiet]; (*Test---------------------*) calc24~Scan~Permutations@{3, 3, 8, 8}
计算组合:
Tuples
计算运行时间:
//Timing
屏蔽提醒信息:
// Quiet
格式化字符串:
StringForm
字符栅格化:
Rasterize
获取常用汉字列表:
Flatten[Table[ FromCharacterCode[{i, j}, "CP936"], {i, 160 + 16, 160 + 55}, {j, 161, 254}]]
图像缩放:
ImageResize[#, Scaled[1.4]] & /@ img
Gif导出:
Export["e://aa.gif", {Table[ Plot[Sin[x + n], {x, 0, 2 [Pi]}], {n, 0, [Pi], 0.1}]}, "gif"]
高斯噪声:
RandomVariate[NormalDistribution[0, 0.3], 1]
Import导入中文:
后面加:CharacterEncoding -> “CP936”
发QQ邮件:
SendMail["UserName" -> "XXX@qq.com", "From" -> "XXX@qq.com", "To" -> "XXX@XX.com", "Subject" -> "XXXX", "Body" -> {"XXXXXX", Plot[Sin[x], {x, 0, 10}]}, "Server" -> "smtp.qq.com", "PortNumber" -> 465, "PassWord" -> Automatic, "EncryptionProtocol" -> "SSL"]
弹出对话框:
MessageDialog
默认输出矩阵格式:
$PrePrint = Replace[#, mat_?MatrixQ :> MatrixForm[mat]] &
自定义函数如果参数数目错误,也会像系统函数一样标红:
SyntaxInformation[f] = {"ArgumentsPattern" -> {_, _}};
用ctrl+[输入[[:
在Mathematica\8.0\SystemFiles\FrontEnd\TextResources\Windows中找到:KeyEventTranslations.tr
在后面添加:
Item[KeyEvent["[", Modifiers ->{Control}],FrontEndExecute[{FrontEnd`NotebookWrite[FrontEnd`InputNotebook[],"\[LeftDoubleBracket]", After]}]], Item[KeyEvent["]", Modifiers -> {Control}],FrontEndExecute[{FrontEnd`NotebookWrite[FrontEnd`InputNotebook[],"\[RightDoubleBracket]", After]}]],
Item[KeyEvent[“[“, Modifiers ->{Control}],FrontEndExecute[{FrontEnd`NotebookWrite[FrontEnd`InputNotebook[],”\[LeftDoubleBracket]”, After]}]],
Item[KeyEvent[“]”, Modifiers -> {Control}],FrontEndExecute[{FrontEnd`NotebookWrite[FrontEnd`InputNotebook[],”\[RightDoubleBracket]”, After]}]],
创建进度条,显示计算进度:
progress = 0; CreatePalette[Dynamic@ProgressIndicator[progress]] Dynamic@ProgressIndicator[progress]
设置笔记本背景颜色:
SetOptions[$FrontEnd, Background -> RGBColor[255, 255, 255]] SetOptions[$FrontEnd, Background -> None]
【完】
本文内容遵从CC版权协议,转载请注明出自http://www.kylen314.com
给力啊,整理的很全了!如果能做一下分类就更好了。另外,“去掉重复元素”应该是这个函数:DeleteDuplicatesUnion取并集后,会重排元素的顺序。
我这里的各种语言的笔记全都是自己遇到的时候临时补充的,所以分类很难,其实一点都不全。谢谢指出。Union放在那么前面,看来是我刚学Mma的时候记的。
感觉挺全了,常用的也就这些。要用到其它的也好查,一般都是全拼。
以前都是把博客当做网络记事本来用,遇到就加上。
你好。有些问题请教下。定义函数默认参数:没看懂,能给个例子吗,怎么用的。算24点的看不懂,那个Do循环的循环次数是多少?谢谢
默认参数:f[n_: 3] = n^2f[]f 你运行一下就知道了
而且24点的代码我执行了没反应
24点那个我忘了之前是怎么回事了,等我晚些有空再看看。。你可以运行一下这个:calc24[numList_] := Block[{fmtList, opList, ok}, fmtList = {“((“““)““)““”, “(“““)“(“““)”, “(““(“““))““”, “““((“““)““)”, “““(““(“““))”}; opList = {“+”, “-“, “*”, “/”}~Tuples~3; ok[fmt_, nums_, ops_] := With[{expr = StringForm[fmt, ##] & @@ Riffle[nums, ops]}, If[ToExpression@ToString@expr == 24, Print[expr, “=”, 24]]]; Do[ok[fmt, numList, op], {op, opList}, {fmt, fmtList}] // Quiet];(*Test———————*)calc24~Scan~Permutations@{3, 3, 8, 8}
我查了一下原因,好像之前不知道为什么拷过来的时候乘号变成了[Times],除号变成了[Divide],已修正。
soga。那个fmt的穷举感觉不够理想。博客很好,我有很相似的爱好,就是在动画的口味上有点小同大异233
这个我是收集别人的,我自己以前c++写过一个自动合并相同解的24点。你喜欢看啥的?
看的远没你多。最喜欢的大概是银魂灌篮和星际牛仔了。宅的这些年确实有些作品让我觉得不错,但渐渐觉得平均来说动画确实比较幼稚,脱宅中哈哈
本科还看得多,现在越看越少。。等来年工作估计我也。。
恩。不过偶尔翻看下ab站的收藏夹,依然燃的燃催泪的催泪,这就够了。。
我现在有这样个操作:{a,b,c,d}=Flatten/@{a,b,c,d}就是想把他们每个都flatten了。但这样写很累赘,尤其需要操作的个数比较多的时候就会变得很长。。想写成类似#=Flatten&?%#/@{a,b,c,d}酱,但试不出来。因为#在等号左边他好像就不会代入,有什么好想法么
首先,我个人认为这种做法不是太好,因为你完全可以用一个变量来表示{a,b,c,d},然后每次取值只要进行索引就可以了。。然后,如果你真要这么做,我能想到的方法比较猥琐(我对你的问题的理解是:你只想写一遍a,b,c,d而已):k = “{a,b,c,d}”;ToExpression[k ~~ “=Flatten/@” ~~ k];这样确实可以修改a,b,c,d的值。。或者你研究一下HoldForm和ReleaseHold这两个函数,我用的不多,不是很清楚可不可以实现你想要的。。
因为abcd除了都需要flatten一下,其实不是太有关系的东西,所以没放一块。那看来我就还是照原来那样写吧,虽然长,但好理解,你这写法过几个月我自己都不知道是啥意思了。。谢啦