我有黑白图像,我在 MATLAB 中读取了该图像。一世 通过使用 dlmwrite 将我的图像文件另存为 0 和 1 MATLAB中的命令。
现在,我想实施一种算法,在该算法中,我想先获得 50 第一行的值,然后第二行和第三行的后50个值 下一行 50 个值,依此类推。它应该是什么代码。一世 已经编写了代码并在逻辑上出错。
a= 100;
b= 100;
for j= 0:length(a)
for i= 0:length(b)
dlmwrite('rd.txt','rd[i,j]','delimiter','b','c');
end
end
我需要这样的结果
00000000000000000000000000000000000000000000000000000000 //每行50位 00000000000000000000000000000000000000000000000000000000 //每行50位 00000000000000000000000000000000000000000000000000000000 //每行50位 。 。 如此
答案 0 :(得分:1)
我假设您在数组中有0和1,并希望以给定的列宽输出它们。在这种情况下,reshape
通常可以执行我认为想要的操作,只是您的数据可能无法被列的宽度(即50)均匀地整除。一种方法是先填充数据,例如是的,例如
data = 'abcdefghijklmnopqrstuvwxyz';
colwidth = 6;
% padding data to fit evenly in full rows
data = [data, repmat(' ', 1, colwidth-mod(numel(a), colwidth))];
% reshaping into columns of given width
reshape(data, colwidth, [])'
这会给你
5×6 char array
'abcdef'
'ghijkl'
'mnopqr'
'stuvwx'
'yz '
或者您可以单独购买零件:
reshape(data(1:end-mod(numel(data), colwidth)), colwidth, [])'
data(end-mod(numel(data), colwidth)+1:end)
给你
ans =
4×6 char array
'abcdef'
'ghijkl'
'mnopqr'
'stuvwx'
ans =
'yz'