MATLAB:表中for循环的问题
我正在创建一个包含实验结果的表格。 我对for循环中的变量定义有问题。当我在没有循环的情况下做完全相同的事情时,我没有任何问题,所以我想我至少需要一个提示 到目前为止,这是我在预分配后所做的:MATLAB:表中for循环的问题,matlab,for-loop,Matlab,For Loop,我正在创建一个包含实验结果的表格。 我对for循环中的变量定义有问题。当我在没有循环的情况下做完全相同的事情时,我没有任何问题,所以我想我至少需要一个提示 到目前为止,这是我在预分配后所做的: for t = 1:N Bands(t) = {'Band %d',t}; Diameter(t) = dn; Bandwidth(t) = barray(t); n1(t) = R.m(t); n2(t) = R2.m2(t); P1(t) = round(p(t),2); P2(t) = round(
for t = 1:N
Bands(t) = {'Band %d',t};
Diameter(t) = dn;
Bandwidth(t) = barray(t);
n1(t) = R.m(t);
n2(t) = R2.m2(t);
P1(t) = round(p(t),2);
P2(t) = round(p2(t),2);
Damage(t) = round(dad(t),2);
end
Bands(t+1) = {'Total'};
Diameter(t+1) = {'-'};
Bandwidth(t+1) = sum(barray);
n1(t+1) = sum(R.m);
n2(t+1) = sum(R2.m2);
P1(t+1) = round(ptot,2);
P2(t+1) = round(ptot2,2);
Damage(t+1) = round(damage,2);
Bands = Bands';
Diameter = Diameter';
Bandwidth = Bandwidth';
n1 = n1';
n2 = n2';
P1 = P1';
P2 = P2';
Damage = Damage';
T = table(Bands,Diameter,BandWidth,n1,n2,P1,P2,Damage,...
'RowNames',Bands);
cellArrayOfTableToBeWritten = [cellArrayOfTableToBeWritten;
T.Properties.VariableNames;
table2cell(T);
blankrow];
我运行代码并给出了带(t)的错误,很公平,我不知道在表中打印的正确方法是什么,但为什么带(t+1)上会出现错误
“无法从单元格转换为双精度。”
编辑:我想做的是:
Band = {'One';'Two';'Three';'Four';'Total'};
但现在有一个循环,因为我不知道我有多少乐队,直到我开始节目。使用for循环创建表后,我使用xlwrite(不是xlswrite bc,我在Mac上)将其导出到Excel文件中。我假设您使用
Bands(t) = {'Band %d',t}
例如,您希望将Bands
的t
th元素分配给值“Band 1”
。您实际要做的是将Bands
的t
th元素分配给单元格数组{'Band%d',1}
。您需要使用sprintf
:
Bands(t) = {sprintf('Band %d', t)}; % >> output 'Band 1' when t=1
% or
% Bands{t} = sprintf('Band %d', t);
通过这样做,您应该解决分配不匹配的问题。看起来这段代码可以得到极大的优化,如果您实际描述了您试图实现的目标,这将是一个建设性的问题。另外,当你在这里询问一个错误时,一定要包括完整的、实际的错误信息。错误消息是完整的,它不是一个“红色”消息,它是一个
try catch ME
的结果。是的,您假设正确。在发布这篇文章之前,我已经尝试过这样做,但在那一行我就遇到了这样的错误:无法从单元格转换为double
。这可能是因为您已将表初始化为列变量类型double。您尚未演示如何初始化波段
,因此我无法帮助您解决此问题。请编辑问题以包含初始化。通常,发布一个简单的输入和预期的输出示例比解释代码更容易。