a=0:pi/36:pi;b=0:pi/36:pi;
T=[cos(a),-sin(a).*cos(b),sin(a).*sin(b);sin(a),cos(a).*cos(b),-cos(a).*sin(b);zeros(size(a)),sin(b),cos(b)];
不用構造。。。你原式這麼表述就對了,但是有個小問題就是那個0,sinb,cosb那裡,因為0這個位置長度和之前每一行第一個元素的長度不對,所以執行的時候報錯,說你的陣列長度不一致。我這個執行結果是正常的,請對比一下,你就明白了。
還有告訴你一個命令很好用eval("string"),注意它的呼叫格式,如果你的命令在執行過程中變數變化,你就可以用到這個命令了。
例如:你這個例子,每次只輸入一個a,b,(你的原文是陣列).
string="T=[cos(a),-sin(a).*cos(b),sin(a).*sin(b);sin(a),cos(a).*cos(b),-cos(a).*sin(b);zeros(size(a)),sin(b),cos(b)];";
a=0,b=0;
eval(string);
a=1,b=1;
a=0:pi/36:pi;b=0:pi/36:pi;
T=[cos(a),-sin(a).*cos(b),sin(a).*sin(b);sin(a),cos(a).*cos(b),-cos(a).*sin(b);zeros(size(a)),sin(b),cos(b)];
不用構造。。。你原式這麼表述就對了,但是有個小問題就是那個0,sinb,cosb那裡,因為0這個位置長度和之前每一行第一個元素的長度不對,所以執行的時候報錯,說你的陣列長度不一致。我這個執行結果是正常的,請對比一下,你就明白了。
還有告訴你一個命令很好用eval("string"),注意它的呼叫格式,如果你的命令在執行過程中變數變化,你就可以用到這個命令了。
例如:你這個例子,每次只輸入一個a,b,(你的原文是陣列).
string="T=[cos(a),-sin(a).*cos(b),sin(a).*sin(b);sin(a),cos(a).*cos(b),-cos(a).*sin(b);zeros(size(a)),sin(b),cos(b)];";
a=0,b=0;
eval(string);
a=1,b=1;
eval(string);