如何在 Octave 中加载和修改矩阵和向量?
在本文中,我们将了解如何在 Octave 中加载和使用矩阵和向量中的数据。以下是有关 Octave 中的矩阵和向量的一些基本命令和函数:
1. 矩阵的维度:我们可以使用size()
函数找到矩阵或向量的维度。
% declaring the matrix
M = [1 2 3; 4 5 6; 7 8 9];
% dimensions of the matrix
size(M)
% number of rows
rows = size(M, 1)
% number of columns
cols = size(M, 2)
输出 :
ans =
3 3
rows = 3
cols = 3
2.访问矩阵的元素:可以通过在括号中传递元素的位置来访问矩阵的元素。在 Octave 中,索引从 1 开始。
% declaring the matrix
M = [1 2 3; 4 5 6; 7 8 9];
% accessing the element at index (2, 3)
% i.e. 2nd row and 3rd column
M(2, 3)
% print the 3rd row
M(3, : )
% print the 1st column
M(:, 1)
% print every thing from 1st and 3rd row
M([1, 3], : )
输出 :
ans = 6
ans =
7 8 9
ans =
1
4
7
ans =
1 2 3
7 8 9
3. 最长维度: length()
函数返回矩阵/向量的最长维度的大小。
% declaring the row vector
M1 = [1 2 3 4 5 6 7 8 9 10];
len_M1 = length(M1)
% declaring the matrix
M2 = [1 2 3; 4 5 6];
len_M2 = length(M2)
输出 :
len_M1 = 10
len_M2 = 3
4. 加载数据:首先让我们看看如何在 Octave 中识别目录:
% see the present working directory
pwd
% see the directory's of the folder in which you are
ls
输出 :
ans = /home/dikshant
derby.log Desktop Documents Downloads Music Pictures Public ${system:java.io.tmpdir} Templates Videos
现在在加载数据之前,我们需要将当前工作目录更改为存储数据的位置。我们可以使用cd
命令执行此操作,然后按如下方式加载它:
% changing the directory
cd /home/dikshant/Documents/Octave-Project
% list the data present in this directory
ls
输出 :
Feature.dat target.dat
在这里,我们将学生的分数数据作为特征,将他们的分数作为目标变量。
这是 Feature.dat 文件,包含 25 条学生的学习时间记录。
这是由 25 条学生成绩记录组成的 target.dat 文件。
我们可以在 Octave 中使用load
命令加载文件,实际上有两种方法可以加载数据,要么简单地使用 load 命令,要么使用文件名作为 load() 中的字符串。我们可以使用Feature
或target
等文件的名称来打印其数据。
% loading Feature.dat
load Feature.dat % or load('Feature.dat')
% loading target.dat
load target.dat % or load('target.dat')
% print Feature data
Feature
% print target data
target
% displaying the size of Feature file i.e. the number of data records and column
Feature_size = size(Feature)
% displaying the size of target file i.e. the number of data records and column
target_size = size(target)
输出 :
Feature =
2.5000
5.1000
3.2000
8.5000
3.5000
1.5000
9.2000
5.5000
8.3000
2.7000
7.7000
5.9000
4.5000
3.3000
1.1000
8.9000
2.5000
1.9000
6.1000
7.4000
2.7000
4.8000
3.8000
6.9000
7.8000
target =
21
47
27
75
30
20
88
60
81
25
85
62
41
42
17
95
30
24
67
69
30
54
35
76
86
Feature_size =
25 1
target_size =
25 1
我们可以使用who
命令来了解当前 Octave 范围内的变量,或者使用whos
来获得更详细的描述。
% using the who command
who
% using the whos command
whos
输出:
Variables in the current scope:
Feature M M1 M2 ans target
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
Feature 25x1 200 double
M 3x3 72 double
M1 1x10 80 double
M2 2x3 48 double
ans 1x2 16 double
target 25x1 200 double
Total is 77 elements using 616 bytes
我们还可以从加载的文件中选择一些行,例如在我们的案例中,Feature 和 target 中存在 25 条记录数据,我们可以创建一些其他变量来存储修剪后的数据行,如下所示:
% storing initial 5 records of Feature in var
var = Feature(1:5)
% storing initial 5 records of target in var1
var1 = target(1:5)
% saving the data of var in a file named modified_Feature.mat in binary format
modified_Feature.mat in binary format
% saving the data of var1 in a file named modified_target.mat in binary format
modified_target.mat in binary format
% saves the data in a readable format
save Feature_data.txt var -ASCII
输出:
var =
2.5000
5.1000
3.2000
8.5000
3.5000
var1 =
21
47
27
75
30
5. 修改数据:现在让我们看看如何修改矩阵和向量的数据。
% declaring the matrix
M = [1 2 3; 4 5 6; 7 8 9];
% modifying the data of 2nd column for each entry
M(:, 2) = [54; 56; 98]
% declaring the matrix
m = [0 0 0; 0 0 0; 0 0 0];
% modifying the data of 3nd row for each entry
m(3, 🙂 = [100; 568; 987]
输出 :
M =
1 54 3
4 56 6
7 98 9
m =
0 0 0
0 0 0
100 568 987
我们还可以在现有矩阵中追加新的列和行:
% declaring the matrix
M = [1 2 3; 4 5 6; 7 8 9];
% appending the new column vector to your matrix
M = [M, [20;30;40]];
% putting all values of matrix M in a single column vector
M(:)
输出 :
ans =
1
4
7
2
5
8
3
6
9
20
30
40
我们还可以连接 2 个不同的矩阵:
% declaring the matrices
a = [10 20; 30 40; 50 60];
b = [11 22; 33 44; 55 66];
% concatenate matrix as "a" on the left and "b" on the right
c = [a b]
% concatenate matrix as "a" on the top and "b" on the bottom
c = [a ; b]
输出 :
c =
10 20 11 22
30 40 33 44
50 60 55 66
c =
10 20
30 40
50 60
11 22
33 44
55 66
在评论中写代码?请使用 ide.geeksforgeeks.org,生成链接并在此处分享链接。