Evg*_*eev 2 syntax matlab loops for-loop cell-array
我想如果我写的话
for x = cell_array
...
end
Run Code Online (Sandbox Code Playgroud)
然后循环将遍历元素cell_array,但在以下情况下它不会:
>> tags
tags =
'dset3'
'dset4'
'cpl1'
>> class(tags)
ans =
cell
>> for t = tags
tmp = t{:} %No semicolon: i.e. print it.
end
tmp =
dset3
Run Code Online (Sandbox Code Playgroud)
所以它只适用于第一个元素.
有什么问题?
根据文档,for x = cell_array将迭代单元格数组的列.
问题混淆的原因是{:}扩展行为如何:
>> a = {3;4}
a =
[3]
[4]
>> b = a{:}
b =
3
Run Code Online (Sandbox Code Playgroud)
在上面,a{:}做了类似于以逗号分隔的列表键入的内容,其中元素是单元格数组的元素a.除了不完全!如果我们明确地编写这样的列表,我们得到:
>> c = 3,4
c =
3
ans =
4
Run Code Online (Sandbox Code Playgroud)
不知何故,随着>> b = a{:},其他元素a被默默地丢弃,即使例如a = {1 2; 3 4}.
但是,在其他情况下,a{:}将扩展为完整的逗号分隔列表:
>> extra_args = {'*-'; 'linewidth'; 30};
>> plot(1:2, extra_args{:})
>> extra_args = {};
>> plot(1:2, extra_args{:})
Run Code Online (Sandbox Code Playgroud)
这将做它想要做的事情.
| 归档时间: |
|
| 查看次数: |
14039 次 |
| 最近记录: |