matlab快速入门案例及常用技巧 | 《matlab数学建模方法与实践(第三版)》学习笔记
目錄
快速入門案例:
解決流程:
具體實現:
一、獲取數據
二、數據探索和建模
三、分享結果
常用技巧
一、常用標點功能
二、常用操作指令
三、指令編輯操作鍵
四、matlab數據類型
五、開發模式
總結
附件
快速入門案例:
已知股票的交易數據,即日期/日期序列值(Date/DateNum)、開盤價(Popen)、最高價(Phigh)、最低價(Plow)、收盤價(Pclose)、成交量(Volum)和換手率(Turn),試用某種方法來評價這只股票的價值和風險。
(數據文件可在附件里下載)
注:日期序列值(DateNum):日期數據的實質其實是“序列值”,按照“以1900年1月1日為第1天”的算法,算出單元格中的日期為第幾天。例如,2014年1月1日從1900年1月1日算起正好是第41640天,所以“2014/1/1”的序列值即為41640。
解決流程:
具體實現:
一、獲取數據
直接在matlab中右鍵文件 -?導入數據,彈出對話框,可選擇輸出類型:表、列向量、數值矩陣、字符串數組、元胞數組(matlab中常用變量類型,本文選擇列向量),單擊導入所選內容,數據成功導入變量。
?? ? ??
在導入所選內容下拉菜單選擇生成腳本 ,matlab打開腳本對話框,并自動生成導入數據需要調用的代碼。
代碼如下:
%% 導入電子表格中的數據 % 用于從以下電子表格導入數據的腳本: % 工作簿: C:\Users\Hao\Desktop\程序_MATLAB數學建模方法與實踐_卓金武等\Cha2\sz000004.xls % 工作表: Sheet1 % 由 MATLAB 于 2022-02-25 11:50:30 自動生成%% 設置導入選項并導入數據 opts = spreadsheetImportOptions("NumVariables", 8);% 指定工作表和范圍 opts.Sheet = "Sheet1"; opts.DataRange = "A2:H99";% 指定列名稱和類型 opts.VariableNames = ["Date1", "DateNum1", "Popen1", "Phigh1", "Plow1", "Pclose1", "Volum1", "Turn1"]; opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double"];% 導入數據 tbl = readtable("C:\Users\Hao\Desktop\程序_MATLAB數學建模方法與實踐_卓金武等\Cha2\sz000004.xls", opts, "UseExcel", false);%% 轉換為輸出類型 Date1 = tbl.Date1; DateNum1 = tbl.DateNum1; Popen1 = tbl.Popen1; Phigh1 = tbl.Phigh1; Plow1 = tbl.Plow1; Pclose1 = tbl.Pclose1; Volum1 = tbl.Volum1; Turn1 = tbl.Turn1;%% 清除臨時變量 clear opts tbl二、數據探索和建模
2.1 分析數據
選定日期和收盤價作為重點研究對象,對數據進行數據可視化處理以更好的認識數據(試用plot)。
依次選擇DateNum、Pclose(先選的對應x軸,后選對應y軸),然后點擊繪圖下的plot選項,生成二維線圖。
代碼如下:(曲線圖和柱狀圖)
%% 數據探索 figure % 創建一個新的圖像窗口 plot(DateNum,Pclose,'k') % 更改圖的的顏色為黑色(打印后不失真) datetick('x','mm');% 更改日期顯示類型 xlabel('日期'); % x軸說明 ylabel('收盤價'); % y軸說明 figure bar(Pclose) % 條形圖,作為對照圖形2.2 建模
我們選定兩個參量來描述股票的價值和風險。
斜率(股票的價值)
最大回撤(股票的風險)
注:回撤是從一個時期開始到結束時總回報的百分比下降。如果總權益時間序列在整個期間都在增加,則回撤為 0。否則,它是一個正數。最大回撤是下行風險的事前代理,它計算在指定時間間隔內可以形成的所有時間間隔內的最大回撤。
如何得到曲線斜率?根據數據可視化結果,數據趨勢大致呈線性,可將曲線擬合為線性。polyfit()
代碼如下:(擬合后的曲線圖及對照)
%% 股票價值的評估 p = polyfit(DateNum,Pclose,1); % 多項式擬合 % 分號作用為不在命令窗口顯示執行結果 P1 = polyval(p,DateNum); % 計算多項式 p 在 DateNum 的每個點處的值 figure plot(DateNum,P1,DateNum,Pclose,'*g'); % 模型與原始數據的對照 value = p(1) % 將斜率賦值給value, 作為股票的價值。如何得到曲線最大回撤?maxdrawdown()
代碼如下:
%% 股票風險的評估 MaxDD = maxdrawdown(Pclose); % 計算最大回撤 risk = MaxDD % 將最大回撤賦值給risk, 作為股票的風險圖形結果:
三、分享結果
1、做成能獨立運行的程序,如腳本
2、報告或論文
3、軟件和應用
做成腳本和軟件,使應用更高效和模塊化。而生成報告是比較實用的項目展示形式,對于寫報告和論文,選擇word格式更方便。
常用技巧
一、常用標點功能
,
顯示計算結果的指令與其后面指令之間的分隔
輸入量與輸入量之間的分隔
數組元素的分隔
;
不顯示計算結果指令的結尾標志
不顯示計算結果的指令與其后面指令之間的分隔
數組行間的分隔
:
生成一維數值數組
用作單下標援引時,表示全部元素構成的長列
用作多下標援引時,表示對應維度上的全部元素
%
注釋
' '
字符串標記符
( )
數組援引時用
函數指令時表示輸入變量
[ ]
輸入數組時用
函數指令時表示輸出變量
{ }
元胞數組標記符
...
由三個以上連續點構成,可視為以下的物理行是該行的邏輯繼續
二、常用操作指令
clc
清除指令窗口中顯示的內容
clear
清除matlab工作空間中保存的變量
close all
關閉所有打開的圖形窗口
edit
打開m文件編輯器
disp
顯示變量的內容
三、指令編輯操作鍵
↑↓
前尋/后尋調回已輸入過的指令行
Tab
補全命令
四、matlab數據類型
matlab中數據絕大多數以數組形式使用。
| 特征 | 數據類型 | 用途 |
| 與常用 編程語 言類似 | 邏輯(logical) | --- |
| 字符(char) | --- | |
| 數值(numeric) | --- | |
| 結構體(structure) | --- | |
| matlab 特有 | 元胞(cell) | 元胞數組的元素,元胞數組視為一種無所不包的通用矩陣(廣義矩陣),元胞可以是任何一種數據類型的常數或常量,其尺寸、占用內存空間、內容可完全不同。 |
| 表(table) | ?支持類型數據類型方面與元胞類似。優勢:相當于一個小型數據庫。展示數據上,可像EXCEL那樣易于展示數據;數據操作上,見于數據庫操作,如插入、查詢、修改。 |
五、開發模式
1、命令行模式
小型科學計算問題,項目的探索階段
2、腳本模式
重復執行運算
3、面向對象模式
開發維護大型應用與數據結構
總結
針對matlab的學習,根據具體的項目更加高效,善于查找。
matlab代碼總結:
- figure % 創建一個新的圖像窗口
- plot(x,y1,x,y2,'k') %在一個坐標內繪制2個曲線圖
- datetick('x','mm') % 更改日期顯示類型
- xlabel('日期') % x軸說明
- ylabel('收盤價') % y軸說明
- title('標題') %輸入標題
- bar(y) % 條形圖
- polyfit(x,y,M) % 多項式擬合
- polyval(p,x) % 計算多項式 p 在 x 的每個點處的值
- maxdrawdown(y) % 計算最大回撤
附件
鏈接(迅雷):https://pan.xunlei.com/s/VMwolVdy0NCUkYnoBkItcFvyA1
提取碼:9p3y
總結
以上是生活随笔為你收集整理的matlab快速入门案例及常用技巧 | 《matlab数学建模方法与实践(第三版)》学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: H2教程系列(一) 简介与安装
- 下一篇: matlab在数学建模中的应用pdf