2015-02-20 3 views
0

Мои данные х, у координат в нескольких файлахMATLAB загрузки данных из нескольких файлов .mat

a=dir('*.mat') 
b={a(:).name} 

для загрузки имена файлов в массиве ячеек

Как использовать цикл для последовательного загружать один столбец данных из каждого файла в последовательные строки нового/отдельного массива ......?

Я делал это индивидуально, используя, например,

Load(example1.mat) 
A(:,1)=AB(:,1) 
Load(example2.mat) 
A(:,2)=AB(:,1) 
Load(example3.mat) 
A(:,3)=AB(:,1) 

Очевидно, что это очень примитивно и требует много времени !!

Мои навыки Matlab являются слабыми, чтобы любые советы с благодарностью получил

Приветствия

Еще раз большое спасибо, я до сих пор выяснить, как читать код, но я использовал его, как это; a = dir ('*. Mat'); b = {a (:). Name}; test1 = нули (число (b), 1765); для k = 1: numel (b) S = нагрузка (b {k}); Затем я использовал следующий код для создания кластерного кластера PCA test1 (k,:) = S.AB (:, 2); end [wcoeff, score, latent, tsquared, explain] = pca (test1, ... 'VariableWeights', 'variance'); c3 = wcoeff (:, 1: 3) coefforth = inv (diag (std (test1))) * wcoeff; I = c3 '* c3 cscores = zscore (test1) * coefforth; рисунок() график (оценка (:, 1), оценка (:, 2), '+') xlabel ('1st Principal Component') ylabel ('2nd Principal Component') -

Я использовал 'gname ', чтобы наметить точки на графике кластера, но обнаружил, что точка была просто помечена от 1 до количества строк в массиве ..... Я собирался спросить вас об этом, но я узнал просто через пробную версию и ошибку, если Я использовал 'gname (b)', это называет точки с именами, перечисленными в b .....

Однако кластерный план начинает выглядеть очень занятым/беспорядочным, как только я наметил несколько точек, так что теперь я интересно, возможно ли извлечь имена файлов в список, перетащив раунд или выбрав несколько точек, я думаю, что это возможно, поскольку я прочитал несколько связанных тем ....., но любые советы/советы aro und gname или метки/извлечение меток из кластеров. Извиняюсь снова за мое форматирование, я все еще привык к этому сайту !!!

+0

Hi Stephen. Я видел, что вы предложили изменить мой ответ; но он, скорее всего, будет отклонен системой как «попытка ответить». Можете ли вы изменить свой исходный вопрос? Благодаря! –

+0

Обязательно сделайте .... –

+0

Я, кажется, удалил часть исходного вопроса !! Честно говоря, боюсь с этим сайтом! –

ответ

0

Вот как это сделать. Надеюсь, я получил то, что вы хотели правильно :)

Код комментируется, но, пожалуйста, задавайте любые вопросы, если что-то неясно.

a=dir('*.mat'); 
b={a(:).name}; 

%// Initialize the output array. Here SomeNumber depends on the size of your data in AB. 
A = zeros(numel(b),SomeNumber); 

%// Loop through each 'example.mat' file 
for k = 1:numel(b) 

%// =========== 
%// Here you could do either of the following: 

1) 
    %// Create a name to load with sprintf. It does not require a or b. 
    NameToLoad = sprintf('example%i.mat',k); 

    %// Load the data 
    S = load(NameToLoad); 


2) 
    %// Load directly from b: 
    S = load(b{k}); 
    %// =========== 

%// Now S is a structure containing every variable from the exampleX.mat file. 
%// You can access the data using dot notation. 

%// Store the data into rows of A 
    A(k,:) = S.AB(:,1); 

end 

Надеюсь, это то, что вы имели в виду!

+0

Большое спасибо, я все еще выясняю, как читать код, но я использовал его так: а = DIR ('* мат'); b = {a (:).имя}; test1 = нули (число (b), 1765); для k = 1: число (b) S = нагрузка (b {k}); test1 (k,:) = S.AB (:, 2); конец [wcoeff, оценка, латентность, tsquared, explain] = pca (test1, ... 'VariableWeights', 'variance'); c3 = wcoeff (:, 1: 3) coefforth = inv (diag (std (test1))) * wcoeff; I = c3 '* c3 cscores = zscore (test1) * coefforth; фигура() участок (оценка (:, 1), оценка (:, 2), '+') xlabel ('первый главный компонент') ylabel ('второй главный компонент') –

+0

Я использую gname для отображения метки кластера, но любая идея, как связать это с фактическим именем файла в 'a' или 'b' Извините за форматирование этого вопроса !! –

+0

О, извините, я только что видел этот комментарий! Можете ли вы добавить информацию в свой исходный вопрос (отредактировав ее), пожалуйста? благодаря! –

Смежные вопросы