create 3D matrix from input file
2 次查看(过去 30 天)
显示 更早的评论
Dear experts,
I am very new to Matlab and also don't know much about coding stuff. Would you please help me out?
I have an output file as following
1 1 1 0 372
115 -0.10495324E-08
116 -0.23828453E-07
117 -0.23688876E-07
118 -0.10215027E-08
122 -0.25753166E-12
etc
The first line is meaningless the second line, left column is the index of a 3D matrix, and the right column is its value.
As I know, this file is written out as the radius index varying fastest, the the latitude index and then the longitude index. The index that is not showed in the file is zero.
So how can I create this 3D matrix completely will all zero and non-zero element with correct position of longitude, latitude and radius?
I'm really grateful for your help !
Chappi !
2 个评论
采纳的回答
Stephen23
2015-9-18
编辑:Stephen23
2015-9-18
This code will read the file data into two cell arrays, one containing the header numeric data, the other containing the indices and data. Because this format repeats in four times in the file, the cell arrays have length four.
opt = {'CollectOutput',true};
str = fileread('matrix.txt');
[idb,ide] = regexp(str,'^(\s+\d+){5}\s*$','lineanchors');
idb(end+1) = 1+numel(str);
for k = numel(ide):-1:1
C(k) = textscan(str(idb(k):ide(k)),'%d%d%d%d%d',opt{:});
D(k) = textscan(str(ide()+1:idb(k+1)-1),'%f%f',opt{:});
end
If the first column of data are array indeices then it is very easy to use these to place that data into a 3D array, but you have to tell us the array size.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!