انا عندي مجموعة من ملفات txt files كل ملف يحتوي علي مصفوفة بأبعاد مختلفة. اريد من الماتلاب ان يقرا جميع الملفات ويقوم بحدف الصفوف الزائدة بالنسبة لاقل بعد.
مثلا لو عندي ملفات بابعاد مختلفة علي سبيل المتال
الملف الاول 5 اعمدة و 7 صفوف
الملف التاني 5 لعمدة و 10 صفوف
الملف التالت 5 اعمدة و 15 صف
الملف الرابع 5 اعمدة و 20 صف
الملف الخامس 5 اعمدة و12 صف
كما تلاحظ ان الاعمدة متساوية لكل ملف ولاكن الصفوف مختلفة. والذي اريده هو الغاء كل الصفوف الزائدة عن اقل بعد وهو 5 اعمدة و7 صفوف
لنحصل علي الملفات النهائية بابعاد متساوية وهي 5 اعمدة و7 صفوف
clc; clear all; close all;
MyC=5;
MyR=4;
[MyFilNmes, MyPath, filterindex] = uigetfile( ...
'*.txt','Select files (*.txt)', ...
'Select files','MultiSelect', 'on');
if isequal(MyFilNmes,0) || isequal(MyPath,0)
disp('User pressed cancel');
else
% Pick a Folder to save files
MyFolder=uigetdir(MyPath,'Choose a Folder to save files');
if MyFolder==0
% No Folder
else
% Multiple files
if iscell(MyFilNmes)
[m n]=size(MyFilNmes);
for j=1:n
fidOriginal=fopen(fullfile(MyPath,MyFilNmes{j}));
[p NewName ext]=fileparts(fullfile(MyPath,MyFilNmes{j}));
A = fscanf(fidOriginal, '%i', [MyR,MyC]);
A=A';
dlmwrite(fullfile(MyFolder,strcat('\',NewName,'_New.txt')), A, ' ')
fclose all ;
end
% Single file
else
fidOriginal=fopen(fullfile(MyPath,MyFilNmes));
[p NewName ext]=fileparts(fullfile(MyPath,MyFilNmes));
A = fscanf(fidOriginal, '%i', [MyR,MyC]);
A=A';
dlmwrite(fullfile(MyFolder,strcat('\',NewName,'_New.txt')), A, ' ')
fclose all ;
end
end
end
لما تتغير فورمة المعطيات في الملفات لا تنسى تغييرها في الكود
الملفات التي معي عبارة عن 12 ملف (text files ) وكل ملف يحتوي على مصفوفة تتكون من 20 عمود و 59902 صف يعني حجم كل ملف يساوي 8.5 ميقابايت والحجم الكلي للملفات 12*8.5 … هذا الحجم لا استطيع رفعه علي المنتدى… وبالتالي انا اعطيتك متال فقط لملفات تتكون من مصفوفات بسيطة.
لم افهم ماذا تقصد بقولك " الظاهر لم تعطيني امثلة حقيقية"
بالنسبة لكودك المرفق هو شغال لاكن النتاحج النهائية تخرج بصف واحد فقط…
clc; clear all; close all;
MyR=4;
[MyFilNmes, MyPath, filterindex] = uigetfile( ...
'*.txt','Select files (*.txt)', ...
'Select files','MultiSelect', 'on');
if isequal(MyFilNmes,0) || isequal(MyPath,0)
disp('User pressed cancel');
else
% Pick a Folder to save files
MyFolder=uigetdir(MyPath,'Choose a Folder to save files');
if MyFolder==0
% No Folder
else
% Multiple files
if iscell(MyFilNmes)
[m n]=size(MyFilNmes);
for j=1:n
fidOriginal=fopen(fullfile(MyPath,MyFilNmes{j}));
[p NewName ext]=fileparts(fullfile(MyPath,MyFilNmes{j}));
fidNew=fopen(fullfile(MyFolder,strcat('\',NewName,'_New.txt')),'w');
for l=1:MyR
MyLine= fgets(fidOriginal);
fprintf(fidNew, sprintf('%s', MyLine));
end
fclose all ;
end
% Single file
else
A=[];
fidOriginal=fopen(fullfile(MyPath,MyFilNmes));
[p NewName ext]=fileparts(fullfile(MyPath,MyFilNmes));
fidNew=fopen(fullfile(MyFolder,strcat('\',NewName,'_New.txt')),'w');
for l=1:MyR
MyLine= fgets(fidOriginal);
fprintf(fidNew, sprintf('%s', MyLine));
end
fclose all ;
end
end
end