import txt file in matlab
2 ビュー (過去 30 日間)
古いコメントを表示
I failed to import the attached txt which I need it to be read with the below function
which converts it into another data shape. I do not know what seems to be the problem. Any ideas?
function FBW = get_FBW(Ftable)
d = importdata(Ftable);
for i = 2:size(d.data,1) % do each row separately
rowdat = d.data(i,:);
rowdat = rowdat(~isnan(rowdat));
col = (rowdat(1:2:end-1));
val = rowdat(2:2:end);
nframes = col(end);
FBW(i-1,:) = zeros(1,nframes);
for j = 2:length(col)
if col(j) - col(j-1) >0
slope = (val(j) - val(j-1)) ./ (col(j) - col(j-1));
for k = 0:col(j)-col(j-1)
FBW(i-1, (col(j-1)+k)) = val((j-1)) + k*slope;
end
end
end
end
0 件のコメント
採用された回答
Image Analyst
2024 年 6 月 19 日
It looks like just a simple matrix of numbers. Try readmatrix
d = readmatrix(Ftable)
3 件のコメント
Stephen23
2024 年 6 月 19 日
編集済み: Stephen23
2024 年 6 月 19 日
d = readmatrix('Ftable.txt')
and remove ".data" from your code. Avoid IMPORTDATA.
for i = 2:size(d,1) % do each row separately
rowdat = d(i,:);
rowdat = rowdat(~isnan(rowdat));
col = (rowdat(1:2:end-1));
val = rowdat(2:2:end);
nframes = col(end);
FBW(i-1,:) = zeros(1,nframes);
for j = 2:length(col)
if col(j) - col(j-1) >0
slope = (val(j) - val(j-1)) ./ (col(j) - col(j-1));
for k = 0:col(j)-col(j-1)
FBW(i-1, (col(j-1)+k)) = val((j-1)) + k*slope;
end
end
end
end
FBW
その他の回答 (1 件)
Taylor
2024 年 6 月 18 日
The problem is that "d" is not a structure so dot indexing does not apply.
2 件のコメント
Taylor
2024 年 6 月 18 日
Removing ".data" from the function should fix it (though I'm not entirely clear on the purpose of the function). There may be a better way to do what you're aiming for if you can clarify the goal of your function.
参考
カテゴリ
Help Center および File Exchange で Matrices and Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!