Matlab
Table of Contents
Matlab 相关的笔记。
<!–more–>
Octave & Matlab
Base
language
注释
% 逐行注释 %% 这里面的内容都被注释 %% %{这里面的内容都被注释}%
For
%实例2: 输出1,0.9,。。。。0;这10个数。 for a = 1.0: -0.1: 0.0 % 打印变量 disp(a) end
use package
install package
pkg install -forge msh
import and use package
clc close all clear all try pkg load matgeom; catch error('Could not load Octave Forge package: matgeom'); end t = linspace(0, 2*pi, 200); figure; hold on; plot(t, sin(t)); drawArrow([2 -1 pi 0], .1, .05, .5); disp("Hello World");
Use Case
求矩阵逆矩阵
A=[1 2 3;2 2 1;3 4 3]; inv(A);
画对数函数
\(y = log_2x\)
% 绘制以 2 为底的对数函数 x = 0:100; y = log2(x) plot(y)
同时画多个函数
% 绘制以 2 为底的对数函数 x = 0:100; y1 = log2(x); y2 = x; plot(x,y1,x,y2);
球面坐标系作图
%% 清除其他窗口 clc; clear all; close all; theta = linspace(0, pi); phi=linspace(0,2*pi); [tt,pp]=meshgrid(theta,phi); r=max(0,5*cos(theta)-4)+max(0,-4*sin(theta-pi)*cos(pi-2.5)-3); [x,y,z]=sph2cart(pp,pi/2-tt,r); %% 绘制mesh %mesh(x,y,z); %% 绘制表面 surf(x,y,z) %% 显示grid grid on;
FFT 分析
实现
%% %% test.m %% clear all clc fo = 4; %frequency of the sine wave Fs = 100; %sampling rate Ts = 1/Fs; %sampling time interval t = 0:Ts:1-Ts; %sampling period n = length(t); %number of samples y = 2*sin(2*pi*fo*t); %the sine curve subplot(3,1,1); plot(t,y) xlabel('time (seconds)') ylabel('y(t)') title('Sample Sine Wave') grid subplot(3,1,2); YfreqDomain = fft(y); %take the fft of our sin wave, y(t) stem(abs(YfreqDomain)); %use abs command to get the magnitude %similary, we would use angle command to get the phase plot! %we'll discuss phase in another post though! xlabel('Sample Number') ylabel('Amplitude') title('Using the Matlab fft command') grid axis([0,100,0,120]) subplot(3, 1, 3); [YfreqDomain, freqRange] = centeredFFT(y, Fs); stem(freqRange, abs(YfreqDomain)); xlabel('Hz') ylabel("Amplitude") grid axis([-6,6,0,1.5]) %% %% centeredFFT.m %% function [X,freq]=centeredFFT(x,Fs) %this is a custom function that helps in plotting the two-sided spectrum %x is the signal that is to be transformed %Fs is the sampling rate N=length(x); %this part of the code generates that frequency axis if mod(N,2)==0 k=-N/2:N/2-1; % N even else k=-(N-1)/2:(N-1)/2; % N odd end T=N/Fs; freq=k/T; %the frequency axis %takes the fft of the signal, and adjusts the amplitude accordingly X=fft(x)/N; % normalize the data X=fftshift(X); %shifts the fft data so that it is centered end
函数说明
stem
stem stem(Y) 将数据序列Y从x轴到数据值按照茎状形式画出,以圆圈终止。如果Y是一个矩阵,则将其每一列按照分隔方式画出。 stem(X,Y)在X的指定点处画出数据序列Y. stem(...,'filled') 以实心的方式画出茎秆。 stem(...,'LINESPEC') 按指定的线型画出茎秆及其标记
参考资料
- Matlab 进行 FFT 分析 https://www.jianshu.com/p/0c05d99f7e8a
- 如何使用 matlab 进行频域分析 https://zhuanlan.zhihu.com/p/42893470
Mathematica
显示坐标轴
Plot3D[0.5 (1/(E^((1 - x^2)/(x^2 y^2)) x^4 y^2))^0.1, {x, 0, 1}, {y, 0, 1}, AxesLabel -> {x 轴, y 轴, z 轴}]
WolframAlpha
求积分
integrate sin x dx from x=0 to pi
解方程组
0.3290 * w = 1, 0.6400 * r + 0.3*g + 0.15*b = 0.3127*w, 0.3300 * r + 0.6*g + 0.06*b = 0.3290*w, 0.0300 * r + 0.1*g + 0.79*b = 0.3583*w
矩阵运算
// Von Kries {{0.4002, 0.7076, -0.0808},{-0.2263,1.1653,0.0457},{0,0,0.9182}} * {0.950455, 0.999999, 1.08906} ==> (0.999976, 0.999982, 0.999975) // CIECAM02 {{0.7328f, 0.4296f, -0.1624f},{-0.7036f, 1.6975f, 0.0061f},{ 0.0030f, 0.0136f, 0.9834f}} * {0.950455, 0.999999, 1.08906} ==> (0.94923 f, 1.0354 f, 1.08743 f)
GeoGebra
常用功能
设置
设置小数点精度
使用
// 设置函数定义域、值域 y=x^(2) (0<x<1) y=x (0<y<1) // 分段函数 y21(x) = if(x<0.3,0,x>0.9,0,(1-j)/x) // 求交点 rts11 = Intersect(y21, x = l) // 获取点的 x 分量 y 分量 x(P) y(P) // 输入无穷大 \infinite
极坐标图像
// 格式: Curve((ρ(θ);θ), θ, α, β) // 实例: Curve((a * 1 + cos²(θ); θ), θ, 0, 2π)
List
// 定义EValueList EValueList = Sequence(-5, 5) // 取List中第i个元素 // Element(EValueList, i) // 取 List 的元素数量 // Length(EValueList) precision = Sequence(Segment((i, 0), (i, 2^(Element(EValueList, i) - 23) * 200)), i, 1, Length(EValueList))
Sequence
生成一系列点
samples = Sequence((k, 0), k, 0.1, 1.9, 0.2)
Vector Matrix
pos = (1,1,1) matScale = {{rFactor, 0, 0}, {0, gFactor, 0}, {0, 0, bFactor}} scaledPos = matScale * pos
ERROR
垂线不正确
这是因为 x 和 y 轴的缩放比例不为 1:1 导致的。