How can i make array with strings ?

조회 수: 33(최근 30일)
Akshay Kumar
Akshay Kumar 2020년 2월 6일
답변: Guillaume 2020년 2월 6일
I need to make a array with strings. For exmaple I have tried this.
for i =1:100
for j =1:200
D(i,j) = sprintf('z_prop(%d,%d,hbsigmci)=%.4f;',i,j,normrnd(0,1));
end
end
I am getting error in assignment. Provide solution to error or Alternate way.
Thaks.
  댓글 수: 2
Stephen23
Stephen23 2020년 2월 6일
This looks like the start of some slow, complex, obfscuated, buggy code:
'z_prop(%d,%d,hbsigmci)=%.4f;'
What are you planning on doing with that character vector? Why not just assign that value directly?:
z_prop(i,j,hbsigmci) = normrnd(0,1);

댓글을 달려면 로그인하십시오.

채택된 답변

Guillaume
Guillaume 2020년 2월 6일
Note that strictly speaking you're not creating strings but char vectors. You may actually prefer generating strings which are easier to work with. If you want string simply replace the single quotes ' by double quotes " and you'll find that your code work exactly as you expected. However, you should preallocate the output array before the loop for efficiency:
D = strings(100, 200); %preallocate array
for j = 1:200
for i = 1:100
D(i, j) = sprintf("z_prop(%d,%d,hbsigmci)=%.4f;",i,j,normrnd(0,1));
end
end
If you want to work with char vectors, you need to store them in a cell array, not a matrix:
D = cell(100, 200);
for j = 1:200
for i = 1:100
D{i, j} = sprintf('z_prop(%d,%d,hbsigmci)=%.4f;',i,j,normrnd(0,1));
end
end
Note: another way to generate your output, which doesn't involve a loop
[r, c] = ndgrid(1:100, 1:200);
hbsigmci = normrnd(0, 1, size(r));
%for strings:
Dstring = reshape(compose("z_prop(%d,%d,hbsigmci)=%.4f;", r(:), c(:), hbsigmci(:)), size(r));
%for char vectors
Dchar = reshape(compose('z_prop(%d,%d,hbsigmci)=%.4f;', r(:), c(:), hbsigmci(:)), size(r));

추가 답변(1개)

Bhaskar R
Bhaskar R 2020년 2월 6일
편집: Bhaskar R 2020년 2월 6일
In string related operations use cell array data type as
D = cell(100, 200);
for i =1:100
for j =1:200
D{i, j} = sprintf('z_prop(%d,%d,hbsigmci)=%.4f;',i,j,normrnd(0,1));
end
end

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by