matlab 2d配列に文字 '、'または '+'を追加する方法。 私は以下の方法で試しました。数値で文字列を追加/ Matlab配列で文字列に数値を連結
clc
clear all
close all
min=0;
max=1052;
random_int = randi([min max],5,10)
% random_int=[515,586,942,742;353,588,916,436]
% load('Random_Int_x.mat')
% random_int
[m,n]=size(random_int);
for i=1:1:m
allOneString = sprintf('%d,' , random_int(i,:));
allOneString= allOneString(1:end-1)% strip final comma
Str_1(i,:)=allOneString
% allOneString= strjoin(arrayfun(@(x) num2str(x),random_int(i,:),'UniformOutput',false),',');
end
Str_1
入力/行列の例
random_int =
2 9 7 7 9 8 2 5 7 5
6 1 9 9 6 1 9 4 1 0
5 0 8 8 5 6 9 0 4 6
0 9 9 8 7 5 6 3 7 8
8 4 2 0 5 5 1 8 2 6
出力:
Str_1 =
5×19 char array
'2,9,7,7,9,8,2,5,7,5'
'6,1,9,9,6,1,9,4,1,0'
'5,0,8,8,5,6,9,0,4,6'
'0,9,9,8,7,5,6,3,7,8'
'8,4,2,0,5,5,1,8,2,6'
これは私が9を超える入力を置くしかし、場合.. 0-9間の乱数で正常に動作します - > 10 .. matlabは行列の次元の誤差を投げます。入力用
Subscripted assignment dimension mismatch.
Error in Number_with_String (line 14)
Str_1(i,:)=allOneString;
9以上:
random_int =
76 96 88 23 26 25 92 5 61 86
87 69 32 36 86 39 46 21 55 69
42 26 56 69 55 97 91 78 76 41
74 74 24 3 46 52 29 70 88 4
7 48 13 69 15 12 79 91 90 24
は出力を期待:
'76,96,88,23,26,25,92,5,61,86'
'87,69,32,36,86,39,46,21,55,69' ... etc
これを解決するために、任意の提案..
コードは行列要素ごとに1つの数字があることが予想されるため、1行あたりに挿入されるコンマの合計数は同じです。つまり、行あたりの文字数は同じです。 1行あたりの桁数が異なると、1行あたりの文字数の合計が一致しなくなり、ディメンションの不一致が発生します。どのように行ごとに一貫性のない長さを処理することを提案しますか?セル配列?これを文字配列として保存することはできません。 – rayryeng
@rayryengは何を言った。さらに、変数 'Str_1'を見てください。おそらく数値にではなくascii値を含んでいます。あなたが望んでいたことを確信していない...? – Adiel
@rayryeng、行列を変数に保存したかっただけです。私は同じエラーを見て、それを修正する方法を知らない。 – salmannsu