文章目录
2、随机数
从一定范围内取出一个随机数
a=randperm(80,1);
产生整型随机矩阵,或数组
%产生一个1至10之间的随机矩阵,大小为2x5;
s1 = randi(10,2,5);
%产生一个-5至5之间的随机矩阵,大小为1x10;
s2 = randi([-5,5],1,10);
从矩阵中随机选300行
test_title1 = test_data(randi(size(test_word,1),1,300),:);
size(test_word,1)意思为,计算test_word矩阵的行数
3、矩阵操作
矩阵索引
v(3) %取出第三个元素
v([1 5 6]) %取出第1、5、6个元素
v(3 : 7) % 取出从第3到第7个的所有元素
v([5:8 1:4]) % 取出v的两个间断区域元素
v(end) % 取出最后一个元素
v(2:end-1) % 取出从第2个到向量倒数第2个的所有元素
v(1:2:end) % 取出奇数下标的元素
v(end:-1:1) % 逆序取出所有元素
v([2 3 4]) = [10 15 20] % 替代v中一些特定元素
v([2 3]) = 30 % 第2和第3元素重新赋值为30
常用矩阵生成
全1矩阵:ones(m,n)
全0矩阵:zeros(m,n)
下三角矩阵:tril( )
上三角矩阵:triu( )
将一维矩阵转换成二维矩阵
A = 1:10;
B = reshape(A,[5,2])
将二维矩阵转换成一维矩阵
a=[1,2;3,4;];
b=a(:);
c=reshape(a,[],1);
但是注意,是按列来捋直的,可以先转置一下
如何在矩阵行拼接
a=[1 2 3 4];
b=[5 6 7 8];
c=[a;b];
如何矩阵列拼接
a=[1 2 3 4];
b=[5 6 7 8];
c=[a b];
如何拼接长度不同的矩阵----使用元胞
part = {a; b; c; d};
访问使用:part{i} 或 part{i, j}
在数组的某一位置添加一个数据
message = [message(1:i), mod(noise, 20), message(i+1:end)];
删除数组中重复的元素
ascii_contained = unique(ascii_data_cell{1});
注意:unique的功能是删除重复的元素并排序,最后的结果是排好序的
向量反转
行向量就用fliplr函数 列向量就用flipud函数
数组正排序 逆排序
sort(A) 正排序
sort(A,'descend') 逆排序
4、矩阵运算
计算矩阵内元素个数
a = [ 1 2 3
4 5 6 ]
length(a) = 3
注意:length()返回的是列数
计算二维矩阵行数和列数
[m,n]=size(a)
所有多列同时按行求和
sum_arr_output(:, i) = sum(text_input(:, i:i + 14), 2);
去掉重复元素、行向量或列向量
(1)B = unique(A)
获取矩阵A 的不同元素构成的向量,其中B可能是行向量也可能是列向量。
(2)B = unique(A,'rows')
获取矩阵A的不同行向量构成的矩阵。
(3) [ C,IA,IC ] = unique(A)\unique(A,'rows')
IA为矩阵C中的元素在矩阵A中的位置,
IC为矩阵A中的元素在矩阵C中的位置。
5、函数
函数文件编写格式
function y = capture_system(x)
函数内容
sum_arr_in = x;
返回值
y = [[sum_max; sum_max_index] [sum_min; sum_min_index]];
6、文件操作
读取文件
text_input = fopen('test_text.txt', 'r');
line = fgets(text_input);
line3 = fgetl(text_input);%fgetl 从文件中读取行,不带文件换行符
fclose(text_input);
字符串和ASCII码的转换
字符串转ASCII码:abs,如:abs('a');abs('what');
ASCII码转字符串:char,如:char(97);char([97,98,99]);
7、画图
开辟新的图形窗口
figure
8、获得输入
analogParam = input('please input\n');
f_s = analogParam(1); % 抽样频率
f_p = analogParam(2); % 通带截止频率
f_st = analogParam(3); % 阻带起始频率
reduction = analogParam(4); % 阻带最小衰减