问一下矩阵分割和分别输出的问题
比如我有一个100*100的矩阵,想分割成4*4的小矩阵,然后单独输出没个小矩阵文档TXT,在单独输出的文档中,要包括X,Y坐标。a=rand(100,100);
for m=0:24
forn=0:24
b(m,n)=a(m*4:(m+1)*4,n*4:(n+1)*4);
end
end
不知道哪儿错了,后面还想输出25*25个TXT文档,其中要包含有原来的XY坐标 楼主直接用角标+冒号操作就可以实现你的要求吧。
看楼主的程序里,有b(0,0)这项,matlab中矩阵的默认开始好像是1吧! 本帖最后由 fanzhenjie 于 2011-5-16 15:19 编辑
回复 2 # meiyongyuandeze 的帖子
恩,我改了一下,还是不行:
a=rand(100,100);
for m=1:25
forn=1:25
b(m,n)=a(m*4-3:m*4,n*4-3:n*4);%改为b=a(m*4-3:m*4,n*4-3:n*4)只输出了最后一个小矩阵
end
end
这样改了还是不行呀,我还想把每个小矩阵带并包括原来XY坐标值用TXT文档分别输出,就是输出很多不同文件名的TXT文档,每个文档中包括每个小矩阵中对应的矩阵值及原来a中的横竖坐标值,就是相当于最初矩阵a表示一个比较大的平面,分割成小块小块的小面元后,每个小面元再重新用TXT文档输出,
回复 3 # fanzhenjie 的帖子
按照自己的理解写了下a=rand(100,100);
>> b=mat2cell(a,4*ones(1,25),4*ones(1,25));
>> b{1,1}
ans =
0.0226 0.0579 0.1089 0.8229
0.9235 0.7603 0.1709 0.3578
0.2202 0.6035 0.4224 0.1886
0.6964 0.1513 0.9241 0.8661
>> b{1,2}
ans =
0.1608 0.2470 0.4090 0.1109
0.9698 0.4888 0.9847 0.0251
0.7053 0.6909 0.4901 0.5955
0.5526 0.8640 0.3462 0.4890上面生成b是25*25的一个矩阵,应该是要的矩阵吧,自己是这么理解。
具体的你可以参见 help mat2cell 回复 1 # fanzhenjie 的帖子
这个问题不难,用下面讲师的方法是可以实现的,但是请你把具体写成什么样的文件格式描述清楚,大家才可以帮助你啊 回复 4 # meiyongyuandeze 的帖子
我自己写了一下,把100*100分成10*10的100小矩阵,输出时要输出对应原来的坐标点,相当于每行代表X,Y,Z坐标,我不知到哪儿错了
c=rand(100,100);
for i=1:10
for j=1:10
=meshgrid(i*10-9:i*10,j*10-9:j*10)
results=;
fid=fopen(strcat('fan_',num2str(i),'_',num2str(j),'.txt'),'a');
fprintf(fid,'%5.3f %5.3f %5.3e \n',results);
fclose(fid);
end
end fanzhenjie 发表于 2011-5-17 11:20 static/image/common/back.gif
回复 4 # meiyongyuandeze 的帖子
我自己写了一下,把100*100分成10*10的100小矩阵,输出时要输出对应原来 ...
我最后得到的每个TXT文档都是三列数据,第一列表面原来的横坐标,第二列表示原来的纵坐标,第三列表示原来的值,相当于一个点的,XYZ坐标,嘿嘿!但不知道怎么操作! 回复 6 # fanzhenjie 的帖子
function matr = matrixDispose(n)
if nargin == 0
n = 10;
end
= meshgrid(1:n*n); % 生成位置
matr{3} = rand(n*n); % 生成数据
= ind2sub(,1:n*n);
prematr = cellfun(@(x)mat2cell(x,n+zeros(1,n),n+zeros(1,n)),matr,'Uni',0);
arrayfun(@(x)saveTxt(I(x),J(x),...
'),1:n*n);
function saveTxt(i,j,results)
fid=fopen(sprintf('fan_%d_%d.txt',i,j),'a');
fprintf(fid,'%5.3f %5.3f %5.3e \n',results);
fclose(fid);这段代码应该可以实现的 回复 8 # qibbxxt 的帖子
十分感谢,我试试呀! 您好,我用下面程序如单独输出可以弄Z值就是正确的,想把原来对应的,XY坐标都添加进去然后分别输出,即,TXT文档中都是n行三列的那种,不知道哪儿写的有问题呀!
c=rand(100,100);
for i=1:10
for j=1:10
=meshgrid(i*10-9:i*10,j*10-9:j*10);%这行应该有错吧
results=;%这行不知道如何把对应的XY也写进去,然后输出
fid=fopen(strcat('fan_',num2str(i),'_',num2str(j),'.txt'),'a');
fprintf(fid,'%5.3f %5.3f %5.3e \n',results);
fclose(fid);
end
end 回复 10 # fanzhenjie 的帖子
c=rand(100,100);
for i=1:10
for j=1:10
=meshgrid(i*10-9:i*10,j*10-9:j*10);%这行应该有错吧
results=,1)]';%这行不知道如何把对应的XY也写进去,然后输出
fid=fopen(strcat('fan_',num2str(i),'_',num2str(j),'.txt'),'a');
fprintf(fid,'%5.3f %5.3f %5.3e \n',results);
fclose(fid);
end
end 回复 11 # qibbxxt 的帖子
明白了,十分感谢呀
页:
[1]