问一个纠缠很久的很入门的问题
比方说我要建立一个数组,包含另一数组的每个元素两次。a=要使得b=。为此写下
a=;
for i=1:4
b(i)=
end
报错为
???In an assignmentA(I) = B, the number of elements in B and
I must be the same.
请问有什么办法解决么? 原帖由 Jupp 于 2007-7-12 09:54 发表 http://www.dolc.de/forum/images/common/back.gif
比方说我要建立一个数组,包含另一数组的每个元素两次。a=要使得b=。
为此写下
a=;
for i=1:4
b(i)=
end
报错为
???In an assignmentA(I) = B, the...
好像如果这样写就会变成一个4x2的矩阵的!$考虑$ a=;
for i=1:4
b(i*2-1:i*2)=;
end
这样就可以了。 好像有很多办法唉
a=
a=
b=a(:)'
[ 本帖最后由 软软熊 于 2007-7-12 15:33 编辑 ]
或者
a=b=repmat(a,2,1)
b=a(:)'
再或者试试这个
;)kron(a,) 建议用#4的方法,
这是最快和最节省内存的。
可以这样写:
>> a= ;
>> b= reshape( [ a ; a] , 1, length(a)*2)
b =
1 1 2 2 3 3 4 4 谢谢大家,最后我还是采取三楼的写法。。因为其他写法的指令对我来说有点眼花缭乱。 原帖由 recbio 于 2007-7-12 16:56 发表 http://www.dolc.de/forum/images/common/back.gif
建议用#4的方法,
这是最快和最节省内存的。
可以这样写:
>> a= ;
>> b= reshape( [ a ; a] , 1, length(a)*2)
b =
1 1 2 2 3 3 4 4
对头,这种简单的我自己也是用这个方法写。后面两种就是提个思路,碰到复杂的情况可以用。 原帖由 Jupp 于 2007-7-12 23:37 发表 http://www.dolc.de/forum/images/common/back.gif
谢谢大家,最后我还是采取三楼的写法。。因为其他写法的指令对我来说有点眼花缭乱。
唉,如果你真的要用Matlab编程的话还是劝你改掉上来就用for循环的习惯。Matlab之所以简单就是有强大的矩阵操作功能。。。
前两天一老哥给我看一程序,3维矩阵,for了3次,一长串,把我看得一愣一愣的,结果改成两句话就搞定了。
页:
[1]
2