matlab学习初步,Octave/Matlab初步学习

Octave/Matlab初步学习

1.基本运算

和其他语言一样,可以通过数学运算符号来实现数学公式的运算。逻辑运算也基本相同

要注意的是,≠这个符号,表达式为

1 ~= 2

而不是用!=来表达

2.变量

A = 3

赋值 敲下回车键可以自动实现打印输出 可以通过后面

A = 3; %semicolon supressing output 这样就可以不用自动打印

disp(A) 这样就可以实现打印

$\pi$可以通过:

a = pi 来赋值

还可以fomat打印格式 disp(sprintf('2 decimals: %0.2f', a)) 打印出来的结果是:输出小数点后面2位 2 decimals: 3.14

这种格式和c语言类似 也可以控制小数点输出的语句: format long format short

分别定义输出为长小数点和短小数点

3.矩阵和向量

A = [1 2;3 4;5 6] 输出为

ac26fe045e67aa0d524f8f386cc3c7ae.png

分号则是分割为行,本质上就是换到下一行

向量也可以定义

>>v = [1 2 3]

v =

1 2 3

>>v = [1; 2; 3]

v =

1

2

3

还可以通过步伐来定义矩阵

v = [1: 0.1 :22] 意思是从1开始,间隔为0.1,一直增加到2 输出是;

95dff6bec93c3757bcd15f04fe1aac57.png

相似的还可以通过:步伐,来实现集合赋值:

>>v = 1 : 6

v =

1 2 3 4 5 6

还可以通过语句来快速定义都是1 的矩阵 ones(2, 3) 所有元素都是1

可以通过

C = 2*ones(2, 3) 生成全部是2的矩阵

w = zeros(1, 3)

这是一个全部是0的矩阵

还可以定义随机数矩阵 数值介于0到1

rand(3, 3)

还可以定义正态分布随机变量矩阵 默认平均数是0,方差等于1

w = randn(1,3)

可以通过hist(w) 来绘制一个矩阵的直方图

fe86da684633e4c9569143407c1d3fd9.png

生成单位矩阵:

I = eye(3)

4. 数据导入

先介绍简单的操作:(size 和 length)

A = [1 2;3 4;5 6];

size(A)

#得到了A矩阵是3行2列

size(A,1)

#得到了A矩阵的列数

size(A,2)

#得到了A矩阵的行数

v = [1,2,3,4];

length(v);

#得到v的数据长度

介绍文件的加载和读入,修改

进入目录等等操作和Linux命令一模一样

#如果要加载文件,进入对应目录

4ad95e49e39e4c0c9f02471c3a666736.png

who命令

567b38932d1e3bb3873ad391eb82d858.png

可以展示所有定义的变量 whos命令 可以更详细的展示变量的信息

197ecd23606d6e4828452e51aaa89d7e.png

然后,可以键入文件名,来display 可以发现,clear命令可以删除一个变量 但是,单单一个clear要小心使用,会删除所有变量

如何储存数据? v = priceY(1:10)

此时,v就是一个1*10的向量,而且数值是从priceY中得到的,设置为前10个元素

如果要存入磁盘,用: save hello.mat v

将v 储存为 “hello.mat” 这个save命令将v用二进制储存 如果要用人看懂的来储存.用 save hello.txt v -ascii

如何操作数据?

索引操作和其他语言都一样,:和python差不多

020d28d571773e5d7856d954328233af.png

注意切片,matlab可以对行和列进行切片操作 A(:,2)

A(2,:)

A([1 3], :)

%返回第一行和第三行

%当然,索引的同时也可以赋值

%也可以这样赋值

A = [A, [100;101;102]]

%还可以通过类似的方式实现矩阵相连

C = [A B]%横向相连

C = [A;B]%竖向相连

%所以,分号可以相当于换到下一行

还有一个特殊的语法: A(:)

作用是,把A中的所有元素放入一个列向量中

5. 数据处理computing date

矩阵乘法

* 矩阵乘法 .* 对应数值相乘.点乘

以此类推,“ . ” + “运算符” 可以把运算推广到整个矩阵

2cf784097cdc4625337c23042713a2db.png

运算符:

log, exe ,abs(取绝对值)

f59004a7b55c80318ff52dbb29c1877b.png

除了这个,还可以用ones

v = v + x * ones(length(v),1)

对矩阵取转置: A'

max函数:(可以对矩阵用!)

61ddd7325c45cb0551ab8743e22a0d12.png

a<3:

c8a7f57bf8dc0c8976be120d33e4ea51.png

可以说是一种过滤数据的用法

magic函数: 相当于构建了一个数独:

dd9236931dd14e8a7dcf370af00e3869.png

(几乎没什么用处(笑))

sum函数,把所有的数据加起来 prod函数,把所有数据乘起来 floor函数,把所有数据想下去取整 ceil 函数,把所有数据向下取整 max函数还可以对某一列或者某一行来取最大值:

915e243d3fc6fdcad3f4602b197a125a.png

在二维数据集,想要得到最大的数用 max(max(A))

或者用之前提到过的方法: max(A(:))

sum函数还可以逐行或者逐列相加

974d86f72b7fc01fdd11305486c1112c.png

参数1是按行相加,参数2是按列相加 其实吧,这个参数1,2,实际上指的是维数dimension ,行是第一维,列是第二维,等等

如何只去对角元素? 可以与单位矩阵点乘! 脑洞再开一点,可以用 sum(sum(A.*eye(9))) 来计算斜边F和 当然,如果你想计算反过来的斜边, 可以用函数: flipud(eye(9)) 这样可以得到镜面对称的单位矩阵

最重要的一点!!!! 矩阵求逆!!! pinv(A)

...但是遇到不可逆的,仍然可以求逆,这叫假求逆!

6. Plotting Data 数据可视化

plot(t,y1) 这样的代码,可以让t作为自变量,y2作为因变量 来绘制出图形:

7bfe2a37d92a9c0741951d125f1013bc.png

但是,这样一次只能在一张figure上绘制一种图像,如果要同时绘制的话,要用: hold on;

当然,同一张图的话,可以设定不同图像采取不同的颜色来进行 还可以设置x,y轴的名字,不同图像的名字。整个图像的标题等等。总之感觉和matplotlib差不多吧。 还可以保存图像,当然,你要得先进入你要保存到哪里

tuxiang hold on;

plot(t,y2,'r');

xlabel('time')

ylabel('value')

legend('sin','cos')

title('my plot')

print -dpng 'myplot.png'

close这个命令可以让图像关掉 也可以为你的图像标号:

figure(1);plot(t,y1);

figure(2);plot(t,y2);

也可用绘制子图:(十分方便,建议使用)

subplot(1,2,1) 将图像分为1*2的格子,然后使用第一个格子。 注意对应参数

subplot(1,2,3);

plot(t,y1);

subplot(1,2,2);

plot(t,y2);

最后,学习改变轴的刻度: axis([0.5 1 -1 1])

还有几个命令

clf 清理所有的图像

可视化矩阵:

A = magic(5);

imagesc(A)

c1c24224a6eb498f6f001b07df510ffe.png

可视化矩阵

还可以添加一些命令,在imagesc后面clorbar,colormap gray 这样就可以很直观的从颜色的深浅来看出矩阵哪里偏小,哪里偏大

6817ca94d2a0a7905522bbf174980b29.png

imagesc(magic(15)),colorbar,colormap gray;

逗号是链接函数调用 意思是,逗号链接的一个接一个执行 称为:逗号连接的命令或者函数调用

7. 控制语句:

感觉这节不需要做什么笔记,记住就行,反正大同小异

for

for i =1:10,

v(i) = 2^i;

end;

循环结构差不多就这样吧。

while i=1;

while i<= 5,

v(i) = 100;

i = i+1;

end;

当然,循环中可以加上break语句

if-else v(1) =2;

if v(1) = 1,

disp('wrong');

elseif v(1) = 2,

disp('right');

else

disp('wrong');

end;

定义和使用函数 如何定义函数?

---第一种方法

首先,要在文本编辑器中写出你的函数:like this function t = squreThisNumber(x)

y = x^2;

y是返回值,x是参数。下面是定义的函数体

然后,这时候,要将这个东西保存到一个地址中去,调用的时候才知道调用哪里!! 要调用函数的时候,用cd方法进入到储存函数的地址,然后就可以调用了

---第二种方法(高级) 用 addpath('xxxxxx')

xxxx指的是函数储存路径,所以这样就能自动的到那个地方去寻找函数

当然,函数不仅仅只能返回一个,也可以返回矩阵,向量等等多个数值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值