作者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