MATLAB: How to use fprintf to save a txt file with different size matrix

different sized matrixfprintf

Hi,
I am using the following and works fine :
saveAs = [fPath '\' fPrefix fmid '_' trialNo{4} '_FVL.txt'];
fid = fopen(saveAs, 'w');
fprintf(fid, '%s\t %s\t %s\n', 'Time [s]', 'FL [mm]','EMG [v]');
for v = 1: ufsize ;
fprintf(fid, '%d\t %d\t %d\n', Ultratimefinal0(v), lfascicle(v), EMG(v) );
end
fclose(fid);
The problem is when I am trying to cut some values from EMG ex. EMGc = EMG(16:end); then I am getting the "Index exceeds matrix dimensions" error. How can I save these different sized values ? I would like to have something like this:
1 1
1 1
1 1
1 1
1
1
1
1
And something else... how can I move the whole matrix in a specific row ?
1
1
1 1
1 1
1 1
1 1
1
1
Thanks a lot.

Best Answer

One way you might do this is to use if-else statements around your fprintf, like this:
fprintf(fid, '%d\t', Ultratimefinal0(v));
if ( v < numel(lfascicle) )
fprintf(fid, '%d\t', lfascicle(v));
else
fprintf(fid, '\t');
end
if ( v < numel(EMG) )
fprintf(fid, '%d\n', EMG(v));
else
fprintf(fid, '\n');
end
This will accomplish the first case you showed... As for the second case, you could shift your whole column by using an offset in the EMG part like this:
offset = 2; % Just like your example, but this could be anything
if ( v>offset && ( v-offset) < numel(EMG) )
fprintf(fid, '%d\n', EMG(v-offset));
else
fprintf(fid, '\n');
end