
MATLAB基础
qq-120
这个作者很懒,什么都没留下…
展开
-
卷积、相关(matlab)
本次博客主要是图示化卷积过程,能够进一步加深学者在学习过程中对数学卷积的理解。首先,再次回顾一下利用MATLAB产生指数序列 x[k]=Kαku[k],a=input('a=');K=input('K=');N=input('N=');k=0:N-1;x=K*a.^k;stem(k,x);xlabel('Time');ylabel('Amplitude');title(['\alp...原创 2019-10-28 01:26:16 · 2036 阅读 · 0 评论 -
如何求取一个序列的相位(matlab)
在大部分场景下,我们一般只看重信号的幅值大小,但有时也需要考虑相位信息,因此需要会求取信号的相位关系。很显然从上图中可以清楚地看出该信号在15Hz处相位为-pi/4,40Hz处相位为pi/2。计算变换的相位,删除小幅值变换值。将相位绘制为频率函数。首先创建一个复数,并计算其幅值和相位。原创 2022-10-12 09:52:36 · 9809 阅读 · 0 评论 -
如何寻找峰值及其位置(matlab)
创建一个时间表(timetable),声明函数years,并显示timetable中最后5组数据;仔细观察,发现上图中部分位置出现重叠现象,从而设置两两相邻峰值最小间隔为6;sunspot.dat是一组循环周期数据,大约每11年会出现一个峰值;(2)使用带有函数findpeaks来查找信号的峰值及其位置;假定数据均记录于每年3月20日,用每年的数据创建一个日期矩阵;为了验证上一步是否有效,计算上述情况峰峰值之间平均间隔;(4)标记出峰值相对高度、宽度等信息;得到平均间隔为10.96,近似于11;原创 2022-10-10 20:17:10 · 21772 阅读 · 0 评论 -
continue语句
头痛!!!在图书馆改了一个小时的bug,明明两份代码几乎一样,效果相差巨大,最后竟发现败在了continue语句上,留下了不学无术的眼泪!在此记录一下学习不扎实的痛苦。a = 9;while a < 20 a = a + 1; if a == 15 % skip the iteration continue; % 直接跳入下个循环 endfprintf('value of a: %d\n', a);endprint:value of原创 2022-05-06 17:22:49 · 231 阅读 · 0 评论 -
微分方程组、无约束优化、线性规划、非线性规划、0-1规划、二次型规划
fprintf('解析解.\n');syms t x y[x,y] = dsolve('D2x=-2*x-3*Dx+exp(-5*t)',' D2y==2*x-3*y-4*Dx-4*Dy-sin(t)','x(0)=1','Dx(0)=2','y(0)=3','Dy(0)=4')x = simplify(x); y = simplify(y);fprintf('数值解.\n');[t1,x1] = ode45('myfun',[0,10],[1;2;3;4]);ezplot(x,[0,10]).原创 2022-05-05 19:02:51 · 558 阅读 · 0 评论 -
数据插值、数据拟合、最小二乘拟合、方程组解析解&迭代解法
(欠定方程)%解析解:A = [2 -9 3 -2 -1; 10 -1 10 5 0; 8 -2 -4 -6 3; -5 -6 -6 -8 -4];B = [-1 -4 0; -3 -8 -4; 0 3 3; 9 -5 3];[rank(A), rank([A B])]x0 = null(sym(A)); % 求AX=0的基础解x_analytical = sym(A)\B; syms a;x = a*[x0 x0 x0]+x_analyticalA*x - B输出:x = [ .原创 2022-05-05 18:48:19 · 803 阅读 · 0 评论 -
泰勒展开、级数求和、数值微分、数值积分
%inputsyms a x;f = exp(-5*x) * sin(3*x + pi/3);T = taylor(f,x,'Order', 5); pretty(T) % 此处展开到前 5 项T2 = taylor(f,x,a,'Order', 5); pretty(T2) % 此处展开到前 5 项%input%第一种方式syms n k; s = symsum(1/(1+k*pi/n^2),k,1,n) % 先求和limit(s/n,n,Inf) % 再求极限%第二种方式s.原创 2022-05-05 18:14:17 · 1077 阅读 · 0 评论 -
极限、隐函数导数、微分
%inputsyms x yf = (1-cos(x^2 + y^2))/((x^2 + y^2)*exp(x^2 + y^2));L = limit(limit(f,x,0),y,0)%outputL =0%inputsyms x y; f = atan(y/x)-log(x^2+y^2); pretty(-simplify(diff(f,x)/diff(f,y)))%output y + 2 x---------- 2 y + x%inputsyms t x.原创 2022-05-05 18:04:07 · 317 阅读 · 0 评论 -
三维图&等高线
以绘制sin(xy)在[-pi,pi]上的三维图和等高线为例:[x,y] = meshgrid(-pi:0.05:pi); % 设置网格z = sin(x.*y); % 计算函数值axis([-pi,pi,-pi,pi,min(min(z)),max(max(z))]) % 重新设置坐标系figure(1),surf(x,y,z) % 绘制三维表面图figure(2),contour3(x,y,z,200) % 三维等高线图% [x,y]=meshgrid(-pi:.05:pi);% sur原创 2022-05-05 17:57:12 · 651 阅读 · 0 评论 -
varargin的应用
编写一个矩阵相加函数,使其具体的调用格式为,要求该函数能接受任意多个矩阵进行加法运算。(注:varargin 变量的应用)%第一种方式function y = mat_add(varargin)y = varargin{1}; for m = 2:length(varargin) y = y+varargin{m}; endend%第二种方式function y = mat_add(varargin) y = sum(cat(3,varargin{:}),3); % 将变量放在第三维原创 2022-05-05 17:31:21 · 590 阅读 · 0 评论 -
解微分方程_matlab
(1)先计算右边式子的值;% Step 1syms t; u=exp(-5*t)*cos(2*t+1)+5;uu=5*diff(u,t,2)+4*diff(u,t)+2*u打印uu = 87*exp(-5*t)*cos(2*t + 1) + 92*exp(-5*t)*sin(2*t + 1) + 10(2)在计算左边式子的值;好像新版的matlab dsolve函数格式发生了一点点改变,使用dsolve函数时先help dsolve一下。% Step 2syms y(t)eqn .原创 2022-04-07 22:06:35 · 218 阅读 · 0 评论 -
矩阵的迹-trace
今天用matlab 2021b时发现这个版本的trace函数已经不存在了,原文档链接trace那怎么代替trace函数呢?我们首先需要知道矩阵的迹为该矩阵对角线元素之和,因而 trace_C = sum(diag©)。A = [1 -5 2; -3 7 9; 4 -1 6];trace_A = sum(diag(A))trace_A = 14...原创 2022-03-29 20:32:30 · 868 阅读 · 0 评论 -
matlab基础(0)
(1)启动按钮单击 “start” 按钮,可以打开 MATLAB 的有关工具。(2)命令窗口如果命令窗口没有打开,可以从 “Desktop” 菜单中选择 “Command Window ” 选项打开。(3) 命令历史窗口可以用 “commandhistory” 命令打开。双击命令历史窗口中的语句可以执行该语句。(4)工作空间who 函数可以列出当前工作空间中的变量;exist 函数可以查看指定变量是否在工作空间;save 命令可以保存变量,save(‘filename’);load 命令原创 2022-01-10 22:07:26 · 967 阅读 · 0 评论 -
语音写出(wavwrite)
编写Microsoft WAVE (.wav)声音文件语法wavwrite (y,“文件名”)wavwrite (y, Fs,“文件名”)wavwrite (y, Fs, N,“文件名”)描述wavwrite支持多通道WAVE数据,每个样本高达32位,并支持写入24和32位。wav文件。wavwrite(y,‘filename’)写入由字符串filename指定的WAVE文件。 数据应按每列一个通道排列。 在[-1,+1]范围外的振幅值在写入之前被剪切。wavwrite(y,Fs,‘file原创 2021-12-04 18:25:19 · 2377 阅读 · 0 评论 -
csv数据读入
csv数据读入filename = 'C:\Users\qinwei\Desktop\NGSIM_Peachtree_Vehicle_Trajectories.csv';a = csvread(filename);注:一定要注意 csv 文件中不能含 中文,否则读入失败。显示错误使用 dlmread (line 147)文件和格式字符向量之间不匹配。读取文件(行号 1,字段编号 1)中的 ‘Numeric’ 字段时出现问题 ==>Vehicle_ID,Frame_ID,Total_F原创 2021-11-29 20:28:55 · 4258 阅读 · 2 评论 -
音频信号数据的读入(matlab)
读/写 音频文件调用 audioread 指令,其格式如下[y,Fs] = audioread(filename) :从名为 filename 的文件中读取数据,并返回样本数据y以及该数据的采样率Fs;[y,Fs] = audioread(filename,samples) :读取音频数据,其中 samples是[start,finish]格式的向量;[y,Fs] = audioread(filename,dataType) :dataType(‘native’,‘double’)输入clear原创 2021-11-29 20:24:21 · 5893 阅读 · 0 评论 -
希尔伯特矩阵(较为详细篇)
由于公式不方便转贴,详见资源栏。原创 2021-10-13 21:30:26 · 1940 阅读 · 0 评论 -
矩阵条件数
由数值分析知识得,一个矩阵的条件数对于该矩阵的条件数与该矩阵逆矩阵条件数之和。请看下面这个例子:H=hilb(4)H = 1.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429>> cond(H,2)ans =原创 2021-10-13 20:44:50 · 659 阅读 · 0 评论 -
矩阵二范数(norm)
矩阵A的2范数就是 A乘以A的转置矩阵特征根 最大值的开根号。m = magic(3)m = 8 1 6 3 5 7 4 9 2>> m*m'ans = 101 71 53 71 83 71 53 71 101>> [V,D]=eig(m*m')V = -0.4082 -0.7071 0.5774 0原创 2021-10-13 20:34:18 · 22245 阅读 · 3 评论 -
条件数cond函数(matlab)
条件数为什么计算矩阵的条件数如何调用matlab内置函数为什么计算矩阵的条件数矩阵的条件数是判断矩阵“病态”程度的一个指标;用于衡量线性方程组的解对数据误差的敏感性,它反映出矩阵求逆及线性方程组解的精确程度。若矩阵的条件数越大,则表明矩阵的病态越严重;反而就是呈现出良态。比如hilbter矩阵是一个著名的病态矩阵,随着阶数的增加,其条件数越来越大。如何调用matlab内置函数(1)cond函数求矩阵二范式条件数,即X的最大奇异值与最小奇异值的比值。(2)condest函数求矩阵一范式条件数原创 2021-10-13 20:20:26 · 15096 阅读 · 3 评论 -
非参数法功率谱估计(2020-11-1)
阅读完此篇博客,你将懂得功率谱的原理以及如何在matlab中调用FFT或者periodogram函数计算信号的功率谱图;并清楚它们之间的区别。原创 2020-11-01 23:22:17 · 2089 阅读 · 0 评论 -
matlab之矩阵基础应用
A为3行4列的矩阵,B为一个行数大于3的矩阵,写出MATLAB命令。(1)删除A的第1、3两列。(2)删除B的倒数第3行。(1)删除A的第1、3列A=rand(3,4)A(:,[1,3])=[]输出:A =0.9572 0.1419 0.7922 0.03570.4854 0.4218 0.9595 0.84910.8003 ...原创 2020-02-20 03:40:16 · 4096 阅读 · 0 评论 -
MATLAB之find函数用法
matlab 中 find() 函数用法I.用法一:b=find(a),a是一个矩阵,查询非零元素的位置,如果X是一个行向量,则返回一个行向量;否则,返回一个列向量。如果X全是零元素或者是空数组,则返回一个空数组,例子如下所示,也可以用b=find(a>2),这句的意思是在a中找到比较2大的元素a=[1 3;0 4]b=find(a)输出a = 1 3 0 ...原创 2020-02-19 23:39:47 · 3738 阅读 · 0 评论