【发布时间】:2014-07-01 14:48:43
【问题描述】:
我有什么办法可以矢量化它吗?
for i = 1:totSamples
sec(i,1) = str2double(data{4}{i,1}(end-1:end));
min(i,1) = str2double(data{4}{i,1}(end-4:end-3));
hour(i,1) = str2double(data{4}{i,1}(1:end-6));
end
我尝试使用此解决方案:https://stackoverflow.com/a/8370368/1583025 但我收到此错误:
使用结束时出错 涉及“结束”的单元格或结构引用不正确。 最可能的原因是对单元格或结构的多个元素的引用后跟 >其他下标或结构引用。
文件错误(第 64 行) sec(:,1) = reshape(sscanf(sprintf('%s#', data{4}{:,1}(end-1:end)), '%g#'), size(data{4}) );
【问题讨论】:
-
你试过
cellfun吗? -
你的循环代码一开始就工作了吗?除非
sec是一个单元类,否则如何存储str2double(data{4}{i,1}(end-1:end))会生成2x1 数据? -
@Divakar 是的,循环代码有效。它只是非常缓慢。为什么 str2double 会生成 2x1 数据?
-
@alfonzo1955 因为
(end-1:end)? -
@Divakar 获取字符串的最后两个元素
标签: matlab vectorization