Matlab中使用HTML语言批量为元胞数组赋值

有一个向量a和一个单元数组b,如下:
>> a=[1:3],b=cell(3,2)
a =
1 2 3

b =
[] []
[] []
[] []
>>
如果我直接把a的值赋给b的第一列,我使用命令:
>> b(:,1)=num2cell(a)
b =
[1] []
[2] []
[3] []

现在,问题来了:我想使用HTML语句来批量地将a赋给b:
>> b(:,2)=['<html><table><tr><td width=1500 bgcolor= #FF5151 align=center >',num2cell(a), '</table></html>']
??? Subscripted assignment dimension mismatch.
请问为什么仅仅添了一些HTML代码就不能为b赋值了呢?实质性的赋值语句跟上面的一模一样呀.
请大神教我如何修改代码实现将a以HTML语句的形式复制给b的第一列.
PS:循环的办法我已经试过了,可以行得通,但毕竟Matlab在循环方面效率不高,能不用就不用.
为了防止循环的答案出现,我还是将循环的答案贴上来:
for i=1:3
b{i,1}=)=['<html><table><tr><td width=1500 bgcolor= #FF5151 align=center >',num2str(a(i),'10.4d%'),'</table></html>'];
end
再次强调一下哈,我想使用向量化的思想来批量为b的第一列赋值.

是可以用向量的,把下面的中括号改成大括号就行了
b(:,2)=['<html><table><tr><td width=1500 bgcolor= #FF5151 align=center >',num2cell(a), '</table></html>']
即b(:,2)={'<html><table><tr><td width=1500 bgcolor=
#FF5151 align=center >',num2cell(a), '</table></html>'}
解释:用大括号表示元胞,中括号表示数组。
数组只能给一个元胞赋值,如b{i,1}=)=['<html><table><tr><td width=1500 bgcolor= #FF5151 align=center >',num2str(a(i),'10.4d%'),'</table></html>'];
引用单个元胞时时大括号b{i,1},引用一列元胞时时小括号b(:,1)
赋值过程出现
b{1,1}=['<html><table><tr><td width=1500 bgcolor= #FF5151 align=center >',num2str(a(i),'10.4d%'),'</table></html>'];
的意思是把这样一个数组放到元胞的一个位置
而b(:,1)={'<html><table><tr><td width=1500 bgcolor=
#FF5151 align=center
>',num2str(a(i),'10.4d%'),'</table></html>'};
是把元胞里的三个数分别赋值到b里面的三个原版。
当然也可以这么写b{1,1}={'<html><table><tr><td width=1500 bgcolor=
#FF5151 align=center
>',num2str(a(i),'10.4d%'),'</table></html>'};
是把三个元胞够成的元胞放到b里面的一个元胞里面。
元胞可以嵌套。说了这么多就是区分大中小括号表示元胞数组还是引用向量,不知道懂了么,有点乱。呵呵。
温馨提示:答案为网友推荐,仅供参考
相似回答