6Octave教程
Posted jp-mao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6Octave教程相关的知识,希望对你有一定的参考价值。
变量
变量赋值
a = 3 % 输出a = 3 a = 4; % 添加了“;”不会输出, %为注释符号
变量打印
a = pi % 输出a = 3.1416 disp(a) % 输出 3.1416 % disp为打印函数 disp(sprintf(‘2 decimals: %0.2f‘,a)) % 输出2 decimals: 3.14 format long a % a = 3.141592653589793 format short a % a = 3.1416
基本运算符
% +、-、*、/、^ 5+6 % ans = 11 3-2 % ans = 1 5*8 % ans = 40 1/2 %ans=0.50000 2^6 % ans = 64 % 等于、不等于 1 == 2 % ans = 0 1 ~= 2 % ans = 1 %与、或、异或 1&&0 % ans = 0 1||0 % ans = 1 xor(1, 0) % ans = 1
矩阵
创建矩阵
>> A = [1 2; 3 4; 5 6] %2X3矩阵," ;"的作用是矩阵换行 A = 1 2 3 4 5 6 >> V = 1:0.1:2 % 创建从1到2,间隔0.1的的行向量 V = Columns 1 through 8: 1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 Columns 9 through 11: 1.8000 1.9000 2.0000 >> V = 1:6 %创建1-6的行向量 V = 1 2 3 4 5 6 >> ones(3) %创建全1的3x3矩阵,ones(行,列),如果只有一个就代表行列相同 ans = 1 1 1 1 1 1 1 1 1 >> ones(2,3) %创建全1的2x3矩阵 ans = 1 1 1 1 1 1 >> c = 2*ones(2,3) c = 2 2 2 2 2 2 >> zeros(3) ans = 0 0 0 0 0 0 0 0 0 >> zeros(2,3) ans = 0 0 0 0 0 0 >> rand(5) %随机生成元素在[0, 1]之间的矩阵 ans = 0.759038 0.356755 0.759957 0.765575 0.124526 0.478474 0.748071 0.348113 0.140318 0.735799 0.548857 0.919435 0.022937 0.766650 0.658001 0.282714 0.682380 0.333799 0.646410 0.045325 0.657188 0.273806 0.433459 0.812108 0.349532 >> rand(2,3) ans = 0.81680 0.65483 0.26669 0.23447 0.64541 0.73921 >> randn(3) %随机生成元素服从正态分布(高斯分布) ans = -1.772650 0.571952 2.728738 0.096214 0.996951 -1.083561 0.359641 -0.571054 -1.124300 >> randn(2,3) ans = 0.242999 0.326736 0.372448 -0.785784 -0.086886 -0.571480
>> eye(5) % 单位矩阵 ans = Diagonal Matrix 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 >> w = -6 + sqrt(10)*(randn(1,10000)); % sqrt开根号 >> hist(w) % 生成直方图 >> hist(w, 50) % 50代表生成50个直方柱形
help eye帮助函数
移动数据
>> A = [1 2; 3 4; 5 6] % 创建矩阵 A = 1 2 3 4 5 6 >> size(A) %返回矩阵的大小,返回结果也是一个矩阵 ans = 3 2 >> size(A, 1) % 返回矩阵的行数 ans = 3 >> size(A, 2) % 返回矩阵的列数 ans = 2 >> length(A) % 返回矩阵最大维度数 ans = 3
Pwd % 显示octave的当前所在目录 cd url %改变当前工作目录 ls % 显示当前目录下的路径和文件
>> load my.txt % 导入文件:load path 或者 load(‘path’) path文件路径 >> my % 文件名 my = 1 2 3 4 5 6 7 >> load(‘my.txt‘) >> my my = 1 2 3 4 5 6 7 >>
>> who % who查看octave当前工作空间存储的所有变量 Variables in the current scope: A ans my >> whos % whos查看octave当前工作空间存储的所有变量的详细信息 Variables in the current scope: Attr Name Size Bytes Class ==== ==== ==== ===== ===== A 3x2 48 double ans 1x17 17 char my 7x1 56 double Total is 30 elements using 121 bytes
clear 变量名称 %删除变量
clear %删除所有变量
% 把数据存入文件: save 文件名字 变量名称; >> A A = 1 2 3 4 5 6 >> save test.mat A; %二进制存储 >> save test.txt A -ascii; % 存储为ascii编码
取矩阵元素
>> A A = 1 2 3 4 5 6 >> A(1,1) ans = 1 >> A(2,:) %’:’表示取该行或者该列的所有元素 ans = 3 4 >> A(:,2) ans = 2 4 6 >> A([1 3], :) %取第1、3行的所有列元素 ans = 1 2 5 6
修改矩阵的值
>> A(:,2)=[10;11;12] %重新赋值A的第二列元素 A = 1 10 3 11 5 12 >> A = [A, [100;101;102]] %在A的后面再加一列元素 A = 1 10 100 3 11 101 5 12 102 >> A(:) %把A的所有元素放入一个列向量 ans = 1 3 5 10 11 12 100 101 102 >>
A = 1 2 3 4 5 6 >> B B = 11 12 13 14 15 16 >> C = [A B] %把AB矩阵左右结合为C矩阵 C = 1 2 11 12 3 4 13 14 5 6 15 16 >> D = [B A] D = 11 12 1 2 13 14 3 4 15 16 5 6 >> D = [B, A] D = 11 12 1 2 13 14 3 4 15 16 5 6 >> F = [A;B] %把AB矩阵上下结合为D矩阵 F = 1 2 3 4 5 6 11 12 13 14 15 16
矩阵运算
>> A A = 1 2 3 4 5 6 >> B B = 11 12 13 14 15 16 >> C = [1 1; 2 2] C = 1 1 2 2 >> A*C ans = 5 5 11 11 17 17 >> A.*B % A中对应元素乘B中对于元素,“.” 通常表示矩阵元素运算 ans = 11 24 39 56 75 96 >> A.^2 % A中元素各自的平方 ans = 1 4 9 16 25 36 >> 1./A % A中元素各自的倒数 ans = 1.00000 0.50000 0.33333 0.25000 0.20000 0.16667 >> log(A) % 对A中元素求对数 ans = 0.00000 0.69315 1.09861 1.38629 1.60944 1.79176 >> exp(A) % 以e为底A中元素为指数的幂运算 ans = 2.7183 7.3891 20.0855 54.5982 148.4132 403.4288 >> abs(A) % 对A中元素求绝对值 ans = 1 2 3 4 5 6 >> -A ans = -1 -2 -3 -4 -5 -6 >> abs(-A) ans = 1 2 3 4 5 6
>> A + 1 % 对A中的元素加1 ans = 2 3 4 5 6 7 >> A + ones(length(A), 2) ans = 2 3 4 5 6 7 >> A‘ %A的转置矩阵 ans = 1 3 5 2 4 6 >> val = max(A) %求A中的每一列的 最大元素 val = 5 6 >> [val, ind] = max(A) % 返回值和索引 val = 5 6 ind = 3 3 >> A < 3 % A中元素与3比较正确返回1,错误返回0 ans = 1 1 0 0 0 0 >> find(A < 3) %返回A中元素与3比较正确的索引 ans = 1 4 >> A A = 1 2 3 4 5 6 >> [r,c]=find(A<3) r = 1 1 c = 1 2
>> A = magic(3) %生成任意行、列和每个对角线相加都相等的矩阵 A = 8 1 6 3 5 7 4 9 2 >> sum(A) %每一列和 ans = 15 15 15 >> prod(A) %每一列乘积 ans = 96 45 84 >> floor(A) % 向下取整 ans = 8 1 6 3 5 7 4 9 2 >> ceil(A) % 向上取整 ans = 8 1 6 3 5 7 4 9 2 >> max(A) % 每一列的最大值 ans = 8 9 7 >> max(A, [], 1) % 1表示列 ans = 8 9 7 >> max(A, [], 2) % 2表示行 ans = 8 7 9 >> flipud(A) % 表示使矩阵垂直翻转 ans = 4 9 2 3 5 7 8 1 6 >> pinv(A) % A的逆矩阵 ans = 0.147222 -0.144444 0.063889 -0.061111 0.022222 0.105556 -0.019444 0.188889 -0.102778
数据可视化
>> t = [0:0.01:0.98]; %创建步长为0.01的矩阵 >> y1 = sin(2*pi*4*t); >> plot(t, y1) % 画图 >> y2 = cos(2*pi*4*t); >> plot(t, y2); % 两个图画一个页面上 >> plot(t, y1); >> hold on; >> plot(t, y2) >> plot(t, y2, ‘r‘); % 设置线颜色 >> xlabel(‘time‘); % 设置x轴标签 >> ylabel(‘valve‘); % 设置y轴标签 >> legend(‘sin‘,‘cos‘); % 设置图形标签 >> print -dpng ‘test.png‘; % 保存图片为png
子图
以上是关于6Octave教程的主要内容,如果未能解决你的问题,请参考以下文章