2017-12-13 16 views
0

私の実験の結果を含むテーブルを作成しています。 forループの変数定義に問題があります。私はループなしでまったく同じことをしても何の問題もなかったので、少なくともヒントは必要だと思います。MATLAB:テーブルの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)にエラーがありますか?

'セルから2倍に変換することはできません。'

EDITは:私がやろうとしていることはこれです:

Band = {'One';'Two';'Three';'Four';'Total'}; 

が、今と私はプログラムを開始するまで、私は必要がありますどのように多くのバンドを知らないので、forループ。 forループを使ってテーブルを作成した後、xlwriteを使ってExcelファイルにエクスポートします(xlswriteではなく、Mac上にあります)。

+0

このコードは大幅に最適化できるようですが、実際に達成しようとしていることを記述した場合は建設的なものになります。また、ここでエラーを尋ねるときは、常に実際のエラーメッセージ全体を含めてください。 – Wolfie

+0

オリジナルの投稿を少し編集しました。エラーメッセージは全体的には "赤い"ものではありません。それは 'try catch ME'の結果です。 – Jack

答えて

1

あなたは

Bands(t) = {'Band %d',t} 

を使用しているとき、私はあなたが例えば値'Band 1'Bandst番目の要素を割り当てることが期待されていると仮定します。あなたが実際にやっていることは、セル配列{'Band %d', 1}Bandst番目の要素を割り当てることです。あなたはsprintfを使用する必要があります。

Bands(t) = {sprintf('Band %d', t)}; % >> output 'Band 1' when t=1 
% or 
% Bands{t} = sprintf('Band %d', t); 

これを行うことにより、あなたが割り当てミスマッチを有するラインの下の問題を修正する必要があります。

+0

はい、あなたは正しいと仮定しています。私はすでにこれを投稿する前に自分自身でやろうとしていましたが、それは私にこのエラーを与えてくれます。「セルから二倍に変換することはできません。 – Jack

+0

これは、列の変数の型がdoubleになるようにテーブルを初期化したためです。あなたはあなたが 'Bands'をどのように初期化したかを示していないので、あなたがそれを修正するのを手助けすることはできません。初期化を含めるように質問を編集してください。コードを説明しようとするのではなく、通常、簡単な入力と予想される出力の例を投稿する方が簡単です。 – Wolfie

+0

Gotchaはおかげで仲間..私はまだノブ笑だと思う – Jack