1. 程式人生 > >1、Octave基本使用

1、Octave基本使用

【安裝】 https://ftp.gnu.org/gnu/octave/windows/

【基本操作】 octave基本操作 https://www.cnblogs.com/zhxuxu/p/9473385.html 1、基本計算 1)、加、減、乘、除 2 + 2 3 - 2 5 * 8 1 / 2 2)、平方、立方 2^2 2^3

2、邏輯運算 等於(==)、不等於(~=)、並(&&)、或(||)四種,1表示成立,0表示不成立 1 == 2 1 == 1 1 ~= 2 1 && 0 1 || 0 或運算就可以用xor函式來代替

3、變數 1)、末尾新增;號只會執行賦值語句,不再列印 a = 3 a = 3; 2)、變數輸出 a = pi; a disp(a) disp(sprintf('2 decimals: %0.2f', a))

【向量/矩陣】 1、初始化 1)、基本方式 A = [1 2; 3 4; 5 6] V1 = [1 2 3] V2 = [1; 2; 3] V = 1: 0.2: 2 v = 1: 5 2)、內建函式 ones(m, n)生成一個m行n列每個元的值為1的矩陣 zeros(m, n)生成一個m行n列每個元的值為0的矩陣 rand(m, n) 生成一個m行n列每個元是0到1之間的一個隨機數的矩陣 eye(m) 生成大小為m的單位矩陣 ones(2, 3) w = zeros(1, 3) w = rand(1, 3) eye(4)

2、屬性 size(A) 行數、列數 size(A, 1) 行數 或者 size(A)(1) size(A, 2) 列數 size(A)(2) length(V) % 向量維數 length(A)% 行數和列數中的最大值

3、向量/矩陣的運算 1)、索引 A(3, 2) % 3行2列 A(3,:) % 3行 A(:, 2) % 2列 A([1, 3],:) % 1、3行 A(:,[1, 2]) % 1、2列 2)、組合 A = [1 2; 3 4; 5 6] B = [11 12; 13 14; 15 16] [A B] % 列相加 [A; B] % 行相加 A(:) % 多列合成一列 3)、矩陣乘法 C = [1 2; 2 2] A * C % 行*列 4)、點運算即元素運算 A .* B % 點乘  A .^ 2 % 元素取平方 1 ./ [1; 2; 3] % 元素取倒數 4)、矩陣加法 V + ones(length(V), 1) 5)、轉秩矩陣 A' 6)、逆矩陣 pinv(A) 7)、其他運算 a = [1 15 2 0.5] val = max(a) % 最大值 [val, idx] = max(a) % 求最大值,並返回最大值的索引 a <= 1  % 矩陣對應元素的邏輯運算 find(a < 3) sum(a) % 計算之和 prod(a) % 計算乘積 floor(a) % 向下取整 ceil(a) % 向上取整 rand(3) % 生成一個隨機矩陣,矩陣元素的值位於0-1之間 flipud(eye(4)) % 矩陣按行上下對換  

【控制語句】 1、for 1)、 for i=1:10,     V(i) = 2^i; end; V 2)、 indices = 1:10; for i=indices,     disp(i); end;

2、while 1)、 i = 1; while i <= 5,       disp(V(i));       i = i+1; end; 2)、 i = 1; while true,       disp(V(i));       if i > 5,          break;       end;       i = i + 1; end; 3、if while和if語句同樣需要使用end來表示完結 在for或while中也可以使用break關鍵詞來提前退出迴圈

【函式】 function [y1, y2] = calVal(x)        y1 = x^2;        y2 = x^3;    end; [a, b] = calVal(3)

【載入和儲存資料】 load featuresX.dat  who % 檢視當前工作空間下都有哪些變數 whos % 檢視詳細的變數資訊 clear ans % 清除變數 save hello.mat V; % 儲存變數V到hello.mat檔案

【繪製圖形】 繪圖指南(https://blog.csdn.net/benzhujie1245com/article/details/83117637) 1、sin、cos函式曲線 t = [0:0.01:0.98]; y1 = sin(2*pi*4*t); y2 = cos(2*pi*4*t); plot(t, y1); hold on; %  將新影象畫在舊影象上面,而不是覆蓋舊影象 plot(t,y2, 'r'); xlabel('time');   % 指定X軸的名稱 ylabel('value');  % 指定Y軸的名稱 legend('sin', 'cos');  % 標識第一條曲線是sin,第二條曲線是cos title('sin and cos function');   % 給圖片附一個標題 print -dpng 'sin_cos.png'   % 作為一個圖片儲存下來

2、只要輸入clf命令,Octave會將繪圖框中的圖形全部清空。 不論何時,輸入close命令,Octave會關閉該繪圖視窗。 figure(1);plot(t,y1); figure(2);plot(t,y2); subplot(1,2,1);   %這樣做是把視窗分成一個1*2的格子,使用第一個格子; plot(t,y1); subplot(1,2,2); plot(t,y2); axis(0.5 1 -1 1)  %調整右邊影象的x,y座標的範圍。

A = magic(5); imagesc(A); %生成一個5*5 的色塊

【向量】 有道時候方程向量化,計算起來會更加高效。 A = [a1;a2;a3;........;an]  X = [x1;x2;x3;..........xn] 例子:h(x) = a1x1 + a2x2 + a3x3 + .........+ anxn = AX'(X的轉置); 沒有向量化之前可能會使用for迴圈的方式實現求和函式 但是轉換成向量來做只需要一條語句就能實現 p = A * X‘;