2

次のような B <1x3 cell> があります。

B{1} = [2 1 19 22 29 13 14]
B{2} = [11 12 6 3 4 2 5]
B{3} = [3 2 23 13 4 7 8]

そして、次のように A <4x2 cell> を追加したい:

A = {'a' '-1'; 'b' '1'; 'c' '2'; 'd' ''}

私はこのように試しました:

for j=1:length(A)
  for i=1:1:length(B)
    C = B{i} + A{j,2};
  end
end

私が得たのは、「マトリックスの次元は一致する必要があります」です。どうすれば適切に行うことができますか?

4

2 に答える 2

3

A文字を保持します。文字列を に追加できるようにするには、文字列を数値に変換する必要がありますB。使用例str2double

for j=1:length(A)
  for i=1:1:length(B)
    C = B{i} + str2double(A{j,2});
  end
end

A の最後の値は''であり、 に変換されることに注意してくださいNaN

于 2012-10-05T10:32:05.760 に答える
1

あなたのコードにはいくつかの問題があります:

最初は@angainorの回答に示されています。文字列を数値に変換する必要があります。

2つ目が続きます。B{i} はサイズ 7x1 の行列、A{j,2} は単一の数値です。この数値を行列 B{i} のすべての要素に追加しますか? この場合、次のように書く必要があります。

B{i} + str2double(A{j,2}) * ones(size(B{i}))

3 番目の問題は、length(A) コマンドが A の要素の総数を返すことです (例: 4*2=8)。したがって、次のエラーが表示されます: 要素 A{5,2} にアクセスできません。この行を次のように置き換える必要があります

for j = 1:size(A,1)
于 2012-10-05T11:29:49.197 に答える