0

私が持っているとしましょう

a = [ 'i=' num2str(0)]

a = 
   i=0

A = zeros(2);
B = num2str(A)

B = 
   0 0
   0 0

これi=01x3行列と見なされます: [ i, =, 0]. B(1,1)で置き換えることができるように、これを1つの要素に変換するにはどうすればよいi=0ですか? 私は手に入れたい

B = 

 i=0    0
   0    0

(これが文字列に変換した理由Aです。)

このエラーが発生し続けました:

Assignment has more non-singleton rhs dimensions than non-singleton

下付き文字

私が疑うのはaの寸法によるものです。

strcat(a)、および他のいくつかの方法を試しました。

編集:

その背後にある動機は、ループの実行中にラベルをマトリックスに入れようとしたことです。

これは私のコードの最後の部分です:

n5 = length(X(1, :));
n6 = length(X(:, 1)) + 1;

Y = zeros(n6, n5);
Y(2:n6, :) = X;
Z = num2str(Y, 4);
for i = 0:K
a = ['i=' num2str(i)];
Z(1,i+1) = a;
end

X = Z

end

出力を表示したい:

   i=0      i=1    ...     i=K

1.0022   1.0000    ...  1.0000
2.0081   2.0000    ...  2.0000
4.0011   4.0000    ...  4.0000
3.9811   4.0000    ...  4.0000

出力を別の方法でフォーマットできることは承知していますが、ループではできません。ループを使いたい。

4

1 に答える 1

2

テイク 2:文字列 ( ...) と数値の両方をマトリックスに格納する方法を見つけるのは難しいと思います。i=0セル配列の使用をお勧めします

sz = size( X );
Z(2,:) = mat2cell( X, sz(1), ones(1,sz(2)) ); % convert each column of X into cell
Z(1,:) = arrayfun( @(x) sprintf('i=%d',x), 0:(sz(2)-1), 'uni', false );

結果の cell 配列Zのサイズは次の2x(n5)ようになります。

   'i=0'           'i=1'           'i=2'           'i=3'           'i=4'
[5x1 double] [5x1 double] [5x1 double] [5x1 double] [5x1 double]
Z{2,ii}は、行列の -ii番目の列ですX

于 2012-12-25T08:09:42.257 に答える