# How to put different size vectors to one matrix or mat file?

2 次查看（过去 30 天）
Hello everybody, I need help.
After processing some signals I obtain different size vectors that I need to put in one place, and by that I mean one matrix or matfile etc. For example, results are:
d1=1 2 3 4 5 6 7 8
d2=1 2 3 4 5
d3=1 2 3
d4=1
So, I need to combine them into one matrix (or matfile) like this:
d5 =1 2 3 4 5 6 7 8
1 2 3 4 5
1 2 3
1
What I also need is to put ''d5'' to txt file with ";"' at the end of each row. like this:
1 2 3 4 5 6 7 8;
1 2 3 4 5;
1 2 3 ;
1;
Thanks a lot for all suggestions.

### 采纳的回答

Matt J 2024-3-14

To save to a .mat file
save filename d1 d2 d3 d4
To retrieve them, packaged in a struct variable,
S=load('filename');
To write to a text file,
d={1:8;1:5;1:3;1}; d(:,end)={';'}
for i=1:height(d), writecell(d(i,:), 'outfile.txt', Delim=' ',WriteMode='append'); end
##### 1 个评论显示 -1更早的评论隐藏 -1更早的评论
Thank You very much Matt! his was very helpfull!

### 更多回答（2 个）

Chunru 2024-3-14
d1=[1 2 3 4 5 6 7 8];
d2=[1 2 3 4 5];
d3=[1 2 3];
d4=1;
% Use cell array
d5 ={d1; d2; d3; d4}
d5 = 4×1 cell array
{[1 2 3 4 5 6 7 8]} {[ 1 2 3 4 5]} {[ 1 2 3]} {[ 1]}
% you can save d5 as a mat file
save d5.mat d5
dir
. .. d5.mat
% write the data into a text file
fid = fopen("result.txt", "wt");
for i=1:length(d5)
fprintf(fid, " %d", d5{i});
fprintf(fid,";\n");
end
fclose(fid);
type result.txt
1 2 3 4 5 6 7 8; 1 2 3 4 5; 1 2 3; 1;
##### 1 个评论显示 -1更早的评论隐藏 -1更早的评论
Thank You very much Churnu! his was very helpfull!

Both answers solve my problem! Thanks a lot!

### 类别

Help CenterFile Exchange 中查找有关 Data Import and Analysis 的更多信息

### Community Treasure Hunt

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

Start Hunting!

Translated by