[繪圖] EXCEL 匯入 MATLAB做3D圖
想請問一下各位大大....
目前已經爬過一些文章...
但我還是畫不出來...
以下為我EXCEL的數據
http://imgur.com/ysOMvzF
http://i.imgur.com/ysOMvzF.jpg?1
A行 為 波長 做為 X軸
1列 為 時間 做為 Z軸
B行到之後BGX行 共1800組的數據 是每個波長之強度變化 做為 Y 軸
利用這三軸去做3D圖該如何寫CODE呢?
要做與下方類似的圖:
http://imgur.com/KqUhTl9
http://i.imgur.com/KqUhTl9.jpg?1
(這是我用EXCEL做的3軸曲面圖,
但EXCEL 與 ORIGIN 都有限制數據組數....
因此必須用MATLAB去做....
懇請各位帥哥以及正妹幫忙小弟了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.59.174
※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1445684248.A.777.html
※ 編輯: seafox (140.117.59.174), 10/24/2015 19:01:17
→
10/24 19:01, , 1F
10/24 19:01, 1F
※ 編輯: seafox (140.117.59.174), 10/24/2015 19:02:51
※ 編輯: seafox (140.117.59.174), 10/24/2015 19:03:05
→
10/24 20:02, , 2F
10/24 20:02, 2F
→
10/24 20:02, , 3F
10/24 20:02, 3F
→
10/24 20:40, , 4F
10/24 20:40, 4F
→
10/24 20:41, , 5F
10/24 20:41, 5F
→
10/24 20:43, , 6F
10/24 20:43, 6F
→
10/24 21:12, , 7F
10/24 21:12, 7F
→
10/25 06:30, , 8F
10/25 06:30, 8F
推
10/25 08:17, , 9F
10/25 08:17, 9F
目前是這樣寫出來~
但XY軸的圖可以顯示
但是Z軸部分還是卡關......
SPR=xlsread('SPR.xlsx');
x=SPR(:,1) ; %x軸 時間項
y=SPR(:,2:1801); %y軸 所有的數據
z=SPR(1,:); %總共多少的數據
xlabel('Wavelength (nm) ');
ylabel('Reflected Intensity ');
zlabel('time(s)');
mesh (x,y,z)
※ 編輯: seafox (140.117.59.174), 10/25/2015 17:43:42
→
10/25 17:54, , 10F
10/25 17:54, 10F
→
10/26 18:25, , 11F
10/26 18:25, 11F
目前做出來是呈現這樣的3D圖形
http://imgur.com/Imw3VD0
我是用mesh 去做
但time部分~我的時間是0.5秒記一次共900秒 1800組...如何把time部分改成0~900呢?
而波長部分~裡面數據是400~800nm,但顯示上是0~600 這部分該如修正?
※ 編輯: seafox (140.117.59.174), 10/26/2015 18:29:52
→
10/26 18:42, , 12F
10/26 18:42, 12F
→
10/26 18:44, , 13F
10/26 18:44, 13F
→
10/26 18:45, , 14F
10/26 18:45, 14F
→
10/26 18:48, , 15F
10/26 18:48, 15F
→
10/26 18:58, , 16F
10/26 18:58, 16F
→
10/26 18:59, , 17F
10/26 18:59, 17F
以下這是EXCEL 修正過後的檔案:
https://drive.google.com/file/d/0B__H8DAs0cCzVTJFS3hZR3VKaGs/view?usp=sharing
第一種方式:
在MATLAB 中直接用
mesh(SPR.xlsx)
xlabel('time(s) ');
ylabel('Wavelength (nm) ');
zlabel('Reflected Intensity');
則會出現剛剛那一張圖
http://imgur.com/Imw3VD0
而問題點就是剛剛那兩個....
第二種方式:
x=SPR(:,1) ; %x軸 時間項
y=SPR(:,2:1801); %y軸 所有的數據
z=y(1,:); %總共多少的數據
xlabel('time(s) ');
ylabel('Wavelength (nm) ');
zlabel('Reflected Intensity');
plot3 (x,y,z)
這時候會出現以下這個:
Error using plot3
Vectors must be the same length.
目前還在煩惱該如何修正.....
※ 編輯: seafox (140.117.59.174), 10/26/2015 19:43:06
→
10/26 19:43, , 18F
10/26 19:43, 18F
→
10/26 19:44, , 19F
10/26 19:44, 19F
→
10/26 19:46, , 20F
10/26 19:46, 20F
→
10/26 20:14, , 21F
10/26 20:14, 21F
剛剛第一種方式~
我有找到修正方式
目前已經修改好 TIME軸
但剩下一個問題 就是波長軸卡住無法修正......
如圖:
http://i.imgur.com/PsIwXso.jpg
※ 編輯: seafox (140.117.59.174), 10/26/2015 20:40:58
→
10/26 20:41, , 22F
10/26 20:41, 22F
推
10/26 21:32, , 23F
10/26 21:32, 23F
→
10/26 21:32, , 24F
10/26 21:32, 24F
→
10/26 21:33, , 25F
10/26 21:33, 25F
→
10/26 21:39, , 26F
10/26 21:39, 26F
→
10/26 21:40, , 27F
10/26 21:40, 27F
→
10/26 21:41, , 28F
10/26 21:41, 28F
→
10/26 21:42, , 29F
10/26 21:42, 29F
→
10/26 21:56, , 30F
10/26 21:56, 30F
SPR=xlsread('SPR.xlsx');
x=SPR(2:end,1);
y=SPR(1,2:end);
z=SPR(2:end,2:end);
[Y, X] = meshgrid(y, x);
mesh(X, Y, z)
xlabel('time(s)');
ylabel('Wavelength (nm)');
zlabel('Reflected Intensity');
這是我目前修正後所用的CODE ~
修正完的圖形:
http://i.imgur.com/hiYdPQT.jpg
感謝C大幫忙糾正錯誤 ORZ
※ 編輯: seafox (140.117.59.174), 10/26/2015 22:13:21
→
10/26 22:24, , 31F
10/26 22:24, 31F
→
10/26 22:47, , 32F
10/26 22:47, 32F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章