作者PageRank ()
看板MATLAB
標題Re: [討論] 自己練習寫excel讀檔小程式發生錯誤?
時間Thu Jan 31 22:46:54 2013
※ 引述《billy00685 (milano)》之銘言:
: 小弟剛學不久,自己練習時發生錯誤,麻煩各位幫幫忙...
: clear all;
: [N]=xlsread('test01.xls','A1:A2');
: s=1;
以上 3 行沒問題,因為你讀入Excel中的 A1 = 1 與 A2 = 2.3
(注意 xlsread 中的參數 'A1:A2')
下行習慣上不會使用分號(;)結尾
: for i=1:5;
: a=3;
: b(s)=a*i*N;
如果要讓你的程式可以執行,請注意以上這一行。
此時你的 N 為一個 2*1的向量(矩陣),隨便你愛用向量或矩陣稱呼它。
但是你的 s 給與初始值為 1,所以你的 b(s = 1) 只有一格的空間。
可是不管 a 或 i 是什麼數字,與 N 相乘後總是一個 2*1 的向量。
所以以你這個程式這個錯誤訊息是說 "不要以大欺小" 塞不進去的。
: s=s+1;
這一行或許多了,以你的程式而言。因為迴圈的過程中,i 與 s 的值重複了。
: end
: b
: 執行時發生錯誤:
: ??? In an assignment A(I) = B, the number of elements in
: B and
: I must be the same.
: Error in ==> Untitled3 at 6
: b(s)=a*i*N;
: 這該如何解決啊?
: test01.xls檔案內容:
: 1 6.3 2.3
: 2.3 7 C2
: 3 8.3 4.7
: 4.7 9 pi
: 5 yes 3.8
讓咱家來修改一下你的程式吧。因為我並不確定你要做的事情是什麼,所以
版本一
clear all
N = xlsread('test01.xls','A1:A2');
a = 3;
for i = 1:5
b(:,i) = a*i*N;
end
b
版本二
clear all
N = xlsread('test01.xls');
a = 3;
for i = 1:5
b(i,:) = a*i*N(i,:);
end
b
備註1 :xlsread 讀到 unicode 字元會是顯示成 NaN (Not a Number)。
在你的 Excel 中,unicode就是非數字的部分(C2, pi)。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.70.217.78
1F:推 billy00685:受益匪淺..多謝前輩指教0.0 01/31 23:15
2F:→ PageRank:不會~我也是過來人。我MATLAB的第一次比你還慘。 02/01 00:15