赞
踩
以下%表示注释符号。
Octave基础变量有字符串和数字,不区分数字的类型。
a = 3.14; % 赋值数字,“;”表示是否打印出来
b = 'hello octave'; %字符串,单引号、双引号均可
c = pi;
disp(c); %打印c
disp(sprintf("2 decimals: %0.5f", c));%格式化输出,5为小数
3 + 2 %加
5 - 3 %减
4 * 8 %乘
12 / 4 %除
5 ^ 2 %幂指数
1 == 2 % false
1 ~= 2 % true, 等同于 !=
1 && 1 % AND
1 || 0 % OR
xor(1, 0) % XOR, 表异或
log(32) %对数运算
exp(11) %指数运算
abs(-23) %绝对值运算
cos(pi) %余弦函数
sin(pi) %正弦函数
tan(pi) %正切函数
...
for i=1:10 % for循环,以end结束 disp(2 ^ i); end loop = 1 : 10; %通过向量数组定义循环 for i = loop disp(2^i); end i = 1; % while循环,以end结束 while i <= 5 disp(i+i); i = i + 1; end j = 1; while true % break 和continue使用 j = j + 1; if (j == 3) continue end disp(j); if (j == 10) break end end
a = 3;
if (a == 3) % if 和 elseif 分支控制
disp(a);
elseif (a == 4)
disp(a - 3)
else
disp(a + 3)
end
任何不会用的函数都能够通过帮助函数进行查看。
help disp % 查看disp函数帮助
pwd %显示当前路径
ls %显示当前路径的文件夹
cd 'path' %打开该路径
who %在当前内存中存储的所有变量
whos %更详细地显示变量的名称、维度和占用多少内存空间和数据类型
clear %清除所有变量
addpath('path') %将路径添加到当前搜索处
clc %清屏,不清变量
PS1("###") %更改行首输入提示符
%%%向量是从1开始计数的
A = [1, 2, 3] %创建行向量A,也可以不加“,”号
B = [1; 2; 3] %创建列向量B
C = 1 : 10 %从1到10生成向量
D = 1 : 0.5 : 10 %从1到10,步长0.5生成向量
%%% 矩阵行列从1开始计数
matA = [1, 2, 3; 4, 5, 6] %构造2*3矩阵
matB = ones(2, 3) %生成2*3的元素为1的矩阵
matC = zeros(2, 3) %生成2*3的元素为0的矩阵
matD = rand(2, 3) %生成2*3的元素为随机数[0 ,1]的矩阵
matE = randn(2, 3) %生成2*3的元素为服从正态分布的随机数矩阵
matF = eye(4) %生成对角阵
matG = magic(3) %生成行列和对角线相加相等的数独矩阵
matA = [1 2; 3 4; 5 6]
size(A) %行、列数
size(A, 1) %行数
size(A, 2) %列数
length(A) %矩阵或者向量的最大维数
A = round(rand(4, 3)*10); %生成0-10的4*3整数矩阵
A(3, 2) % 取出第3行第2列元素
A(2, :) %取出A中第2行的所有元素
A(:, 2) %取出A中第2列的所有元素
A([1 3], :) %取出A中第1行和第3行的所有元素
A(:, 2) = [1; 2; 3; 4] %对A中第2列的所有数据重新赋值
A = [A;[1, 2, 3]] %对A新增一行,矩阵合并注意行,列数
B = A(:) %将A的所有元素生成一个向量放到B中
C = ones(4, 2)
D = [A, C] %将A和C合并为一个矩阵,矩阵合并注意行,列数
A = [1 2; 3 4; 5 6]
B = [11 12; 13 14; 15 16]
C = [1 1; 2 2]
matD = A*C %矩阵相乘
matE = A.*B %A中每个元素与B中对应元素相乘
matF = 1./A %求A中每个元素的倒数
log(A) %每个元素求对数
exp(A) %每个元素求e的幂次方
-A %每个元素取负值
matX = A < 3 %每个元素,小于3为1,反之为0
A' %A的转置
a = [1, 3, 4, 6]
[val, ind] = max (a) %返回a中的最大值和索引
find(a<3) %返回a中小于3的元素位置索引
A = magic(3)
[r, c] = find(A >= 7) %返回A中>= 7的元素所在的行数r和列数c
valSum = sum(A) %默认对每一列求和
valSumR = sum(A, 1) %对每一列求和
valSumC = sum(A, 2) %对每一行求和
prod(A) %默认对每一列求连乘
prod(a) %求向量中所有元素的乘积
max(A, [], 1) % A中每一列的最大值
max(A, [], 2) % A中每一行的最大值
flipud(A) %实现矩阵A的上下翻转
priv(A) %求出A的伪逆矩阵(非方阵也可以得到逆矩阵,就是伪逆矩阵)
%%%mat文件
A = round(rand(3, 5)*10);
b = 1:10;
save xxx.mat A b %将A和b都存到mat文件中
load xxx.mat %将xxx.mat中的变量读取到工作空间
%%%txt文件
A = round(rand(3, 5)*10);
b = 1:5;
save xxx.txt A b -ascii %将A和b都存到txt文件中
load xxx.txt %当A和b的列的维度不一样时,会导入出错
mat会将变量单独作为元素存储,存入多少变量,取出来还是多少变量。
txt会将两个变量顺序存储,读出来按一个矩阵来读,如果顺序存储的两个变量列数不一致,则load会提示错误“error: load: unable to determine file format of ‘txttt.txt’”
直方图的意义:统计某一区间范围内元素的个数。比如我们界定少年是[0,16], 青年[17, 30],中年[31, 50],老年[51, 80],然后给出1000个人的年龄,按照年龄段划分做出直方图,表示各个年龄段的人数个数。
x = randn(1,10000)
hist(x) %默认是将元素中最大和最小值区间划分为10等份,然后统计每个区间内元素个数,绘制成图。纵坐标代表个数,横坐标表示数值区间区间
hist(x, 100) %指定划分为100等份
xbins = [-4 -2.5 0 0.5 1 3]
hist(x, xbins) %指定划分区间
ax1 = subplot(2,1,1);
hist(ax1, x) %指定画图区域
ax2 = subplot(2,1, 2);
hist(ax2, x, 100)
t = [0:0.01:0.5];
y1 = sin(2*pi*2*t);
y2 = cos(2*pi*2*t);
plot(t,y1);
hold on; %在原来的图像中画图
plot(t,y2,'r');
xlabel('x axes'); %X轴单位
ylabel('y axes'); %Y轴单位
legend('sin','cos'); %将两条曲线表示出来
title('plot show'); %加入标题
print -dpng 'myplot.png'; %输出图片为png格式
close %关闭
figure(1);plot(t,y1); %分开画图
figure(2);plot(t,y2);
figure(3);
axis([0.5 1 -1 1]); %改变轴的刻度 x轴变为[0.5,1] y轴变为[-1,1]
subplot(1,2,1); %将图像分为1*2的格子,使用第1个
plot(t,y1);
axis([0 1 -1 1]);
subplot(1,2,2); %将图像分为1*2的格子,使用第2个
plot(t,y2);
clf; %清除一幅图像
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。