# 杂谈
# 设备

这是我第一次购买显示器这一类电脑外设……总而言之也是挺折磨的一次购物体验……
或许是我个人的原因?反正我挑挑挑选选了半天才找到合适的电脑。 从了解电脑显示器的各种指标属性,再到收集数据,最后通过按照各种指标的重要性给其综合打分,并计算性价比……

我认为这样的一套选择方式是可以最大程度帮助我选择到自己心仪的产品的。

阅读全文 »

# matlab

在写脚本的时候用到这些功能并不多,但是偶尔还是需要用到,每次都得重新查……这次整理一下记录几个常见的控制程序走停的函数pause、input、error、warning、quit、exit、。

阅读全文 »

MATLAB的编程环境下,和数学上的矩阵是一个意义(坐标索引从 1 开始)。我们多使用矩阵和向量这两个数学意义上的数据结构。

所以以下把多维(除一维)数组称为矩阵,一维数组称为数组或向量。对于那种每一维的长度不同的多维数组,在matlab和数学研究中,我们一会给它补0,变成矩阵。
1、1*n的矩阵是一维数组(向量)
2、 m*n的矩阵是m(m>1)维数组

1
2
3
4
5
6

这里提供了三种比较常用的办法,其一般使用场景如下:
- size() 矩阵(二维)
- length()数列(一维)
- ndims() 高维矩阵(三维)

1 size()

1.1 功能

主要用来获得矩阵的各个维数的大小,或者指定维数的大小。

1.2 语法

size():获取矩阵的行数和列数

1
2
3
4
d = size(X)
[m,n] = size(X)
m = size(X,dim)
[d1,d2,d3,...,dn] = size(X)
  1. s = size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个元素是矩阵的行数r,第二个元素是矩阵的列数c。即s = [r, c]
  2. [r, c] = size(A),当有两个输出参数时,size函数将矩阵的行数r返回到第一个输出变量,将矩阵的列数c返回到第二个输出变量。
  3. 如果在size函数的输入参数中再添加一项,并用1或2为该项赋值,则size将返回矩阵的行数或列数。
    其中:
    r = size(A,1):返回的时数组A的行数
    c = size(A,2) :返回的时数组A的列数

2 length()

2.1 功能

用来获得数组长度,即一维数组的长度或者多维数组中最大的维数行数或列数中的较大值

2.2 语法

1
numberOfElements = length(array)

length()size()使用区别:一般情况下,
获取一维数组的长度用length()函数;
获取多维数组的维数大小用size()

3 numel()

3.1 功能

计算一个数组所有的元素数或指定下标的元素总数。

3.2 语法

1
2
n = numel(A)
n = numel(A, index1, index2, ...indexn)

4 ndims()

4.1 功能

获取矩阵的维数

一般来说,多维数组我们用数学意义上的矩阵来理解。多维矩阵,从数学意义上来理解,即矩阵的元素不是数字。

4.2 语法

1
n = ndims(A)

4.3 例子

1
2
3
4
5
6
7
n1 =  ndims( [1 2 3;4 5 6] );   % n1 = 2  二维矩阵

a = cat( 3,[1 2 3;4 5 6],[5 6 7;8 9 10] );
n2 = ndims(a) % n2 = 3 三维矩阵
% a 是构造的三维矩阵,第一层是[1 2 3;4 5 6],第二层是[5 6 7;8 9 10]

n3 = size(a) % n3 = [2,3,2],即2行3列2层。
阅读全文 »

# matlab

(一)基本运算与矩阵输入

1 创建数组

一维数组称为向量,二维数组称为矩阵
可以使用中括号“[ ]”,直接输入数值来创建数组,也可以通过MATLAB内置函数来创建特殊数组

1.1 直接创建

元素间使用空格或者英文逗号间隔,使用英文分号执行换行操作

1
2
3
4
5
6
7
>>A=[1 2 3;4 5 6;7 8 9]

A =

1 2 3
4 5 6
7 8 9
阅读全文 »

# matlab

一、语法知识

1、循环控制语句:

1)for~end:用于要求重复多次执行for与end之间的程序语句。允许嵌套。其一般格式为

1
2
3
4
5
for 变量 = 起始值 :增量 :终点

程序语句

end %一般要输出循环运算结果,还应在end后加“,变量名”,运行时按enter键

2)while~end:与c++类似,while也不规定循环次数,其终止时刻由while后面的条件表达式决定,若条件成立,则重复执行while与end之间的程序语句,否则结束循环。其一般格式为

1
2
3
4
5
while 条件表达式

程序语句

end   %与for~end语句类似,要想输出运算结果,在end后加“,变量名”,再按enter键
2、条件选择语句

1)if~end:其一般格式为

1
2
3
4
5
if 逻辑表达式

程序语句

end
2)ifelseif···elseend:elseif~else是进一步的if条件语句,其一般格式为
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if 逻辑表达式1

   程序语句1

elseif 逻辑表达式2

程序语句2

······

else

程序语句n

end

1
【注意:在多分支条件选择语句中,if和elseif是互相独立且互相排斥的条件选择语句,else后的语句执行的条件是先前所有的条件语句均不成立】

3)switch~end:开关语句是一种多分支条件选择语句,他执行特定选择语句,当且仅当变量或表达式的值相符。其一般格式为

1
2
3
4
5
6
7
8
9
10
11
12
13
switch 表达式

case值1
程序语句

case值2
程序语句

······

otherwise
程序语句
end

阅读全文 »

# matlab

简单for循环

for循环用来循环处理数据。
例:输出1~100的和

1
2
3
4
5
6
7
8
9
10
>> clear
>> sum = 0;
>> for i = 1:100
sum = sum +i;
end
>> sum

sum =

5050

解释:i从1到100,每次增加一个,该共循环100次
注意:分号的位置;不能使用“+=”符号;每写一层循环,必须以end结尾

带有步长的for循环

例:输出1到10之间的奇数和

1
2
3
4
5
6
7
8
9
10
11

>> clear
>> sum = 0;
>> for i = 1:2:10
sum = sum + i;
end
>> sum

sum =

25

解释:i = 1:2:10中间的2表示步长,表示从1到10,每次增加2,即1,3,5,7,9五个数之和;步长也可以为负数

对向量和矩阵的遍历

  1. 对向量的遍历
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
>> clear
>> A = rand(1,4);
>> for i = A
i
end

i =

0.9572


i =

0.4854


i =

0.8003


i =

0.1419

解释:rand函数用于随机生成0~1之间的数,rand(1,4)生成1*4的列向量。

  1. 对矩阵的遍历
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
>> A = magic(4);
>> A

A =

16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1

>> for i = A;
i
end

i =

16
5
9
4


i =

2
11
7
14


i =

3
10
6
15


i =

13
8
12
1

解释:magic(n)函数用于生成任意一行或一列或主副对角线之和相等的方阵,对矩阵的循环遍历是依次取出矩阵中的每一列元素

break和continue的使用

break用于终止离它最近的一层for循环;
continue用于跳过离它最近的一层for循环,接着执行下一次循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
>> x = 1;
>> for i = 1:2:10
if i > 7
break
else
x = x* i
end
end

x =

1


x =

3


x =

15


x =

105
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
>> sum = 0;
>> for i = 1:6
if i == 4
continue
else
sum = sum + i
end
end;

sum =

1


sum =

3


sum =

6


sum =

11


sum =

17

多层for循环

for循环可以按照需要进行嵌套。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
>> for i = 1:2:6
for j = 1:3
y = i * j
end
end

y =

1


y =

2


y =

3


y =

3


y =

6


y =

9


y =

5


y =

10


y =

15

阅读全文 »

# matlab

前言

函数——是编程的核心概念之一,是能够完成相对独立功能的代码封装成的模块。

在主程序中通过函数名和实参调用它,通过接口(即函数的输入、输出参数)来实现“通讯”。所以在调用函数时,你只要知道“被调用的函数是用来做什么的”,以及“如何对应它的输入、输出参数”就行了。

阅读全文 »

# matlab

Matlab:函数返回多个值

在 MATLAB 中,函数可以返回多个值。要返回多个值,可以使用中括号将它们括起来,并用逗号分隔。以下是一个简单的示例:

1
2
3
4
5
function [output1, output2] = myFunction(input1, input2)
% function code here
output1 = someValue1;
output2 = someValue2;
end

在这个例子中,函数 myFunction 接受两个输入参数 input1input2,并返回两个输出值 output1output2。在函数的结尾处,使用 output1output2 变量来存储要返回的值。

要调用这个函数并获取返回的值,可以使用以下语法:

1
[output1, output2] = myFunction(input1, input2);

这将调用函数 myFunction 并将输入参数 input1input2 传递给它。函数将计算输出值 output1output2,并将它们分别赋值给变量 output1output2

相关问题

在 Matlab 中,可以通过在函数定义行中使用多个输入参数来实现函数接受多个输入。以下是一个简单的示例:

1
2
3
4
function output = myFunc(input1, input2, input3)
% 在函数体内处理输入参数
output = input1 + input2 + input3;
end
阅读全文 »

# matlab

Matlab:在函数里使用“全局变量”

函数里的变量自在函数内有效, 那么如何在函数内调用外部的变量呢?

  1. 全局变量 global
    global可以定义全局变量, 但要注意先定义, 再赋值. 否则会有警告:

Warning: The value of local variables may have been changed to match the globals. Future versions of MATLAB will require that you declare a variable to be global before you use that variable.

并且需要在你写的函数里面声明使用全局变量。

1
2
3
4
5
6
7
8
9
10
11
12
global x
x=5;

subfunc % 输出为5

function output=subfunc
global x % 在使用全局变量时, 要先声明
output=x;
end

clear global x % 清除全局变量

  1. 使用子函数

子函数默认可以调用其母函数中所有的变量

1
2
3
4
5
6
7
8
9
function main
x=5;
subfunc

function output=subfunc

output=x;
end
end

执行 main, 输出5. 子函数共享父函数的变量

阅读全文 »
0%