Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB:表中for循环的问题_Matlab_For Loop - Fatal编程技术网

MATLAB:表中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循环中的变量定义有问题。当我在没有循环的情况下做完全相同的事情时,我没有任何问题,所以我想我至少需要一个提示

到目前为止,这是我在预分配后所做的:

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。您尚未演示如何初始化
波段
,因此我无法帮助您解决此问题。请编辑问题以包含初始化。通常,发布一个简单的输入和预期的输出示例比解释代码更容易。