向量 Matlab 中最基本的对象是矩阵,向量是特殊的矩阵.行向量是\(1\times n\)矩阵,列向量是\(m\times 1\)矩阵.输入如下行向量: >> v=[0 1 2 3] 回车,Matlab 将输出此行向量: v = 0 1 2 3 输入如下列向量: >> u = [9; 10; 11; 12; 13] 按如下方式访问向量的元素: >> u(2) 按如下方式改变元素的值: >> u(2)=47 按如下方式提取多个连续向量: >>…
误差和残量 数值求解方程\(f(x)=0\)的根,有多种方法测算结果的近似程度.最直接的方法是计算误差.第\(n\)步迭代结果与真值\(x^\*\)的差即为第\(n\)步迭代的误差: \begin{equation*}e_n=x_n-x^*\end{equation*} 但是,我们一般是不知道真实值\(x^\*\)的,否则,我们也不会费劲去算了.所以,直接计算误差是不可能的,需要我们另辟蹊径. 一个可能的方法是,程序一直运行,直到结果不再变化.这个方法通常还是很管用的.有时候,程序结果不再变化并…
Matlab也可以编程,可存为以.m为后缀的文件,称为M文件.M文件有两种:函数和脚本. 函数程序 点击新建图标,在打开的窗口里输入如下内容: function y = myfunc (x) y = 2*x.^2 - 3*x + 1; 将文件保存为myfunc.m,保存在当前目录下.这个文件就可以直接在命令窗口使用了,用法如Matlab内置函数,如在命令窗口输入如下内容: >> x = -2:.1:2; >> y = myfunc(x); >> plot(x,y) 这里…
二分法和if ... else ... end 语句 先回顾一下二分法.要求方程\(f(x)=0\)的根.假设\(c = f(a) < 0\)和\(d = f(b) > 0\),如果\(f(x)\)是连续函数,那么方程的根\(x^*\)一定位于\(a\)和\(b\)之间.然后,我们看一下\(a\)和\(b\)中点\(x=(a+b)/2\),计算函数值\(y=f(x)\),如果函数不为0,比较\(c\).\(d\)和\(y\)的符号,确定新的二分区间.具体来说,如果\(c\)和\(y\)同号,新…
方程数值求解 下面几讲,我们将聚集如下方程的解法: \begin{equation} f(x)=0 \tag{3.1}\label{3.1} \end{equation} 在微积分课程中,我们知道,许多优化问题最终归结为求解上述形式的方程,其中\(f\)为你要求极值的函数\(F\)的导数.在工程问题中,函数\(F\)来源多种多样,有公式.微分方程的解.实验和模拟等. 牛顿迭代 我们把方程\eqref{3.1}的解记为\(x^\*\).方程的解法有三种:对分法.割线法和牛顿法.这三种方法都需要猜测…
割线法 割线法求解方程\(f(x)=0\)的根需要两个接近真实根\(x^\*\)的初值\(x_0\)和\(x_1\),于是得到函数\(f(x)\)上两个点\((x_0,y_0=f(x_0))\)和\((x_1,y_1=f(x_1))\),连接这两点得到一条直线(割线): \begin{equation*}y-y_1=\frac{y_1-y_0}{x_1-x_0}(x-x_1)\end{equation*} 由于我们要求解\(f(x)=0\),因此设\(y=0\),由上式解出\(x\),作为下次迭…
[Matlab开发]matlab中norm范数以及向量点积.绘图设置相关 标签(空格分隔): [Matlab开发] 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ norm范数使用 help norm norm Matrix or vector norm. norm(X,2) returns the 2-norm of X. norm(X) is the same as norm(X,2). norm(X,1) returns the 1-norm of…
MATLAB实现最优低通滤波器的函数 % Fs     --Data rate % Fpass  --pass band % Fstop  --Cutoff frequencies % Apass  --Passband ripple % Astop  --Stopband ripple % Q_Bit  --Quantization bits function coef  = LowPassFir(Fs,Fpass,Fstop,Apass,Astop,Q_Bit) dens  = 20;   …
MATLAB语言没有系统的断言函数,但有错误报告函数 error 和 warning.由于要求对参数的保护,需要对输入参数或处理过程中的一些状态进行判断,判断程序能否/是否需要继续执行.在matlab中经常使用到这样的代码: if c<0 error(['c = ' num2str(c) '<0, error!']); end 使用assert断言函数就可以写成: assert(c>=0, ['c = ' num2str(c) '<0 is impossible!']); 还可以直…
问题是这样,如果我们知道两个向量v1和v2,计算从v1转到v2的旋转矩阵和四元数,由于旋转矩阵和四元数可以互转,所以我们先计算四元数. 我们可以认为v1绕着向量u旋转θ​角度到v2,u垂直于v1-v2平面. 四元数q可以表示为cos(θ/2)​+sin(θ/2)​u,即:q0​=cos(θ/2)​,q1​=sin(θ/2)​u.x,q2=sin(θ/2)​u.y,q3=sin(θ/2)​u.z 所以我们求出u和θ/2即可,u等于v1与v2的叉积,不要忘了单位化:θ/2用向量夹角公式就能求. ma…