[討論] matlab for loop取vector

看板MATLAB作者 (( ・ω・`))時間5年前 (2018/08/23 14:22), 5年前編輯推噓4(407)
留言11則, 4人參與, 5年前最新討論串1/1
我目前已經取完4*16的 matrix 目前想利用for loop 取其中一個column 的四個數值再利用plot繪製曲線圖 想請教一下大大們 因為如上一篇說明 我每個感測器會有四筆資料 我想取我reshape之後的檔案(data_new) data_sensor1 = data_new(1:4,1); data_sensor2 = data_new(1:4,2); data_sensor3 = data_new(1:4,3); data_sensor4 = data_new(1:4,4); data_sensor5 = data_new(1:4,5); data_sensor6 = data_new(1:4,6); data_sensor7 = data_new(1:4,7); data_sensor8 = data_new(1:4,8); data_sensor9 = data_new(1:4,9); data_sensor10 = data_new(1:4,10); data_sensor11 = data_new(1:4,11); data_sensor12 = data_new(1:4,12); data_sensor13 = data_new(1:4,13); data_sensor14 = data_new(1:4,14); data_sensor15 = data_new(1:4,15); data_sensor16 = data_new(1:4,16); 但是問題來了 我loop 一直呈現大小不同 要求要取一樣大小無法解決 Code如下 data=xlsread('1.csv'); data_new=reshape(data,[4,16]); xlswrite('output_1.csv',data_new); data_avg=mean(data_new); xlswrite('output_avg.csv',data_avg); data_avg_1000=data_avg*(1/1000); xlswrite('output_avg_1000.csv',data_avg_1000); %data_sensor1=data_new(1:4,1); a=1; for i = 1:1:16 for j = 1:1:4 a=a+1; data_sensor(j:a)=data_new(1:i ,j); end end 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.242.199.158 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1535005373.A.9B5.html

08/23 15:09, 5年前 , 1F
你在for迴圈裡面都叫做data_sensor 沒有改變
08/23 15:09, 1F

08/23 15:12, 5年前 , 2F
我自己目前實現這種想法都是利用 eval 你可以試看看
08/23 15:12, 2F
因為我想要多個變數 像C++ 裡面提到的 array[i] i=1.2.3.4.5......16 ※ 編輯: amateuruser (27.242.199.158), 08/23/2018 15:15:46

08/23 15:26, 5年前 , 3F
for i=1:16 data_sensor(:,i) = data_new(:,i); end
08/23 15:26, 3F

08/23 15:28, 5年前 , 4F
我搞不懂問題惹 打完才發現兩個變數是一樣的 暈
08/23 15:28, 4F
S大 抱歉 可能沒講清楚 https://i.imgur.com/KWGfHlC.jpg
如圖 上面的數字代表我前一篇reshape完之後的數值 目前假設有64筆 我是目前想將data 取4個值(紅圈)到一個array 取16次(16個感測器) 不過我嘗試用原本的code 他就寫 In an assignment A(:)=B the number of elements A and B must be the same 我是希望能有16個依序變數 接受數值變vector 最後用這些vector 在引入語法plot繪圖 ※ 編輯: amateuruser (27.242.199.158), 08/23/2018 15:44:41

08/23 19:26, 5年前 , 5F
當然出錯啦!你的j:a一定超出4個啊!
08/23 19:26, 5F

08/23 19:28, 5年前 , 6F
要取 n column 用 d(:,n) 即可
08/23 19:28, 6F

08/23 19:30, 5年前 , 7F
plot 好像支援矩陣 plot(x,y),x=size(y,1)
08/23 19:30, 7F

08/23 19:32, 5年前 , 8F
plot(x,y(:,[1,3,5])),畫1,3,5 column
08/23 19:32, 8F

08/23 19:57, 5年前 , 9F
你到底想畫什麼?沒看到你用plot啊?感覺不需要2個for迴圈
08/23 19:57, 9F

08/24 14:41, 5年前 , 10F
首先你要先確定你要畫幾張圖,看你的文字應該是4筆資料一張
08/24 14:41, 10F

08/24 14:42, 5年前 , 11F
然後畫16張,然後plot(x,y) x和y可以是一個向量
08/24 14:42, 11F
文章代碼(AID): #1RVbAzcr (MATLAB)