0

最初の行がタイトル(使用したさまざまな近似方法ごとの磁場)と、使用したすべてのデータシートの結果を含む行列が必要です。

結果としてこれを取得しようとしています(例):

FieldB =  
B1   B2   B3  
1.0  2.0  3.0  
1.1  2.7  2.3  
...  
...  
...  
0.7  2.4  5.8

今、私はこのようにプログラミングしています

B1(1,1)= 'Field 1';  
B2(1,1)= 'Field 2';  
B3(1,1)= 'Field 3';  
for i=1:n  
    B1(i+1,1)=polyn(1)*Zsplit1(i)/10^9+polyn(2)*10^-3;  
    B2(i+1,1)=polyn(1)*Zsplit2(i)/10^9+polyn(2)*10^-3;  
    B3(i+1,1)=polyn(1)*Zsplit3(i)/10^9+polyn(2)*10^-3;  
end  
FieldB = [B1 B2 B3] 

そして、与えられたエラーは次のとおりです。

Subscripted assignment dimension mismatch.

Error in 3field (line 32)
B1(1,1)= 'Field 1';

何か案は?

4

2 に答える 2

1

Matlabの配列に文字列を格納することはできません。セル配列を使用してみてください。[]に変更するだけで、ここでそれを行うことができます{}

于 2013-03-08T21:54:43.333 に答える
1

matlabでは、標準行列に数値と文字列の両方を含めることはできません。したがって、目標を達成するには、別のデータ型を使用する必要があります。

あなたの場合、構造体(ここを参照)が最も自然な選択です:

B(1).name = 'Field 1';
B(2).name = 'Field 2';
B(3).name = 'Field 3';

for i=1:n  
    B(1).data = polyn(1)*Zsplit1(i)/10^9+polyn(2)*10^-3;
    B(2).data = polyn(1)*Zsplit2(i)/10^9+polyn(2)*10^-3;
    B(3).data = polyn(1)*Zsplit3(i)/10^9+polyn(2)*10^-3;
end  

セル配列を使用することもできます

B{1,1} = 'Field 1';
B{1,2} = 'Field 2';
B{1,3} = 'Field 3';
...
for i=1:n  
    B{2,1} = polyn(1)*Zsplit1(i)/10^9+polyn(2)*10^-3;
    B{2,2} = polyn(1)*Zsplit2(i)/10^9+polyn(2)*10^-3;
    B{2,3} = polyn(1)*Zsplit3(i)/10^9+polyn(2)*10^-3;
end 
于 2013-03-08T21:55:36.370 に答える