Problems with cell array plotting
Mostra commenti meno recenti
Hello everybody,
I have a little issue with a cell array. I have to do lots of plots for my project. However, I worked with cells with 2 or with 3 columns and that worked out. Now, I have data with 4 columns and the way I used to do it does not work anymore. anyone an Idea?
clear all;
close all;
clc
%%labels['Ld-50%' 'Ld-45%' 'Ld-40%' 'Ld-35%' 'Ld-30%' 'Ld-25%' 'Ld-20%' 'Ld-15%' 'Ld-10%' 'Ld' 'Ld+10%' 'Ld+15%' 'Ld+20%' 'Ld+25%' 'Ld+30%' 'Ld+35%' 'Ld+40%' 'Ld+45%' 'Ld+50%'];
%%Second part for reading in multiple files
Drpm = 'C:\Users\Brendan\OneDrive\Masterarbeit_prädiktive_Stromregler\Modelle\01_Parameter\01_Ld\rpm';
filesrpm = dir(fullfile(Drpm, '*.csv'));
Dtorquemech = 'C:\Users\Brendan\OneDrive\Masterarbeit_prädiktive_Stromregler\Modelle\01_Parameter\01_Ld\meschanisches Moment';
filestorquemech = dir(fullfile(Dtorquemech, '*.csv'));
Dtorqueel = 'C:\Users\Brendan\OneDrive\Masterarbeit_prädiktive_Stromregler\Modelle\01_Parameter\01_Ld\elektrisches Moment';
filestorqueel = dir(fullfile(Dtorqueel, '*.csv'));
Didg = 'C:\Users\Brendan\OneDrive\Masterarbeit_prädiktive_Stromregler\Modelle\01_Parameter\01_Ld\id Gegenwart';
filesidg = dir(fullfile(Didg, '*.csv'));
Diqg = 'C:\Users\Brendan\OneDrive\Masterarbeit_prädiktive_Stromregler\Modelle\01_Parameter\01_Ld\iq Gegenwart';
filesiqg = dir(fullfile(Diqg, '*.csv'));
Didz = 'C:\Users\Brendan\OneDrive\Masterarbeit_prädiktive_Stromregler\Modelle\01_Parameter\01_Ld\id Zukunft';
filesidz = dir(fullfile(Didz, '*.csv'));
Diqz = 'C:\Users\Brendan\OneDrive\Masterarbeit_prädiktive_Stromregler\Modelle\01_Parameter\01_Ld\iq Zukunft';
filesiqz = dir(fullfile(Diqz, '*.csv'));
Dcf = 'C:\Users\Brendan\OneDrive\Masterarbeit_prädiktive_Stromregler\Modelle\01_Parameter\01_Ld\Cost function';
filescf = dir(fullfile(Dcf, '*.csv'));
Dcurrents = 'C:\Users\Brendan\OneDrive\Masterarbeit_prädiktive_Stromregler\Modelle\01_Parameter\01_Ld\a,b,c Ströme';
filescurrents = dir(fullfile(Dcurrents, '*.csv'));
for i = 1:19
%Drehzahl
fnmrpm = fullfile(Drpm,filesrpm(i).name);
datarpm{i} = readmatrix(fnmrpm);
yrpm = num2cell(datarpm, 1);
thelprpm = yrpm{1};
trpm = thelprpm{1}(:, 1);
%mechanisches Moment
fnmtorquemech = fullfile(Dtorquemech,filestorquemech(i).name);
datatorquemech{i} = readmatrix(fnmtorquemech);
ytorquemech = num2cell(datatorquemech, 1);
%elektrisches Moment
fnmtorqueel = fullfile(Dtorqueel,filestorqueel(i).name);
datatorqueel{i} = readmatrix(fnmtorqueel);
ytorqueel = num2cell(datatorqueel, 1);
%id Gegenwart
fnmidg = fullfile(Didg,filesidg(i).name);
dataidg{i} = readmatrix(fnmidg);
yidg = num2cell(dataidg, 1);
%iq Gegenwart
fnmiqg = fullfile(Diqg,filesiqg(i).name);
dataiqg{i} = readmatrix(fnmiqg);
yiqg = num2cell(dataiqg, 1);
%id Zukunft
fnmidz = fullfile(Didz,filesidz(i).name);
dataidz{i} = readmatrix(fnmidz);
yidz = num2cell(dataidz, 1);
%iq Zukunft
fnmiqz = fullfile(Diqz,filesiqz(i).name);
dataiqz{i} = readmatrix(fnmiqz);
yiqz = num2cell(dataiqz, 1);
%Cost function
fnmcf = fullfile(Dcf,filescf(i).name);
datacf{i} = readmatrix(fnmcf);
ycf = num2cell(datacf, 1);
%abc Ströme
fnmcurrents = fullfile(Dcurrents,filescurrents(i).name);
datacurrents{i} = readmatrix(fnmcurrents);
ycurrents = num2cell(datacurrents, 1);
end
for i=1:19
rpmc{i} = datarpm{i}(:, 2);
torquemechc{i} = datatorquemech{i}(:, 2);
torqueelc{i} = datatorqueel{i}(:, 2);
idgc{i} = dataidg{i}(:, 2);
iqgc{i} = dataiqg{i}(:, 2);
idzc{i} = dataidz{i}(:, 2);
iqzc{i} = dataiqz{i}(:, 2);
cfc{i} = datacf{i}(:, [2 3]);
currentsc = datacurrents{i}(:, [2 3 4]);
end
for i=1:19
rpm = rpmc{i};
thelp = yrpm{1,i};
trpm = thelp{1}(:, 1);
plot(trpm,rpm)
%legend('Ld-50%', 'Ld-45%', 'Ld-40%', 'Ld-35%', 'Ld-30%', 'Ld-25%', 'Ld-20%', 'Ld-15%', 'Ld-10%', 'Ld', 'Ld+10%', 'Ld+15%', 'Ld+20%', 'Ld+25%', 'Ld+30%', 'Ld+35%', 'Ld+40%', 'Ld+45%', 'Ld+50%')
hold all
end
figure
for i = 1:19
torquemech = torquemechc{i};
thelptorquemech = ytorquemech{1,i};
ttorquemech = thelptorquemech{1}(:, 1);
plot(ttorquemech,torquemech)
%legend('Ld-50%', 'Ld-45%', 'Ld-40%', 'Ld-35%', 'Ld-30%', 'Ld-25%', 'Ld-20%', 'Ld-15%', 'Ld-10%', 'Ld', 'Ld+10%', 'Ld+15%', 'Ld+20%', 'Ld+25%', 'Ld+30%', 'Ld+35%', 'Ld+40%', 'Ld+45%', 'Ld+50%')
hold all
end
figure
for i = 1:19
torqueel = torqueelc{i};
thelptorqueel = ytorqueel{1,i};
ttorqueel = thelptorqueel{1}(:, 1);
plot(ttorqueel,torqueel)
%legend('Ld-50%', 'Ld-45%', 'Ld-40%', 'Ld-35%', 'Ld-30%', 'Ld-25%', 'Ld-20%', 'Ld-15%', 'Ld-10%', 'Ld', 'Ld+10%', 'Ld+15%', 'Ld+20%', 'Ld+25%', 'Ld+30%', 'Ld+35%', 'Ld+40%', 'Ld+45%', 'Ld+50%')
hold all
end
figure
for i = 1:19
idg = idgc{i};
thelpidg = yidg{1,i};
tidg = thelpidg{1}(:, 1);
plot(tidg,idg)
%legend('Ld-50%', 'Ld-45%', 'Ld-40%', 'Ld-35%', 'Ld-30%', 'Ld-25%', 'Ld-20%', 'Ld-15%', 'Ld-10%', 'Ld', 'Ld+10%', 'Ld+15%', 'Ld+20%', 'Ld+25%', 'Ld+30%', 'Ld+35%', 'Ld+40%', 'Ld+45%', 'Ld+50%')
hold all
end
figure
for i = 1:19
iqg = iqgc{i};
thelpiqg = yiqg{1,i};
tiqg = thelpiqg{1}(:, 1);
plot(tiqg,iqg)
%legend('Ld-50%', 'Ld-45%', 'Ld-40%', 'Ld-35%', 'Ld-30%', 'Ld-25%', 'Ld-20%', 'Ld-15%', 'Ld-10%', 'Ld', 'Ld+10%', 'Ld+15%', 'Ld+20%', 'Ld+25%', 'Ld+30%', 'Ld+35%', 'Ld+40%', 'Ld+45%', 'Ld+50%')
hold all
end
figure
for i = 1:19
idz = idzc{i};
thelpidz = yidz{1,i};
tidz = thelpidz{1}(:, 1);
plot(tidz,idz)
%legend('Ld-50%', 'Ld-45%', 'Ld-40%', 'Ld-35%', 'Ld-30%', 'Ld-25%', 'Ld-20%', 'Ld-15%', 'Ld-10%', 'Ld', 'Ld+10%', 'Ld+15%', 'Ld+20%', 'Ld+25%', 'Ld+30%', 'Ld+35%', 'Ld+40%', 'Ld+45%', 'Ld+50%')
hold all
end
figure
for i = 1:19
iqz = iqzc{i};
thelpiqz = yiqz{1,i};
tiqz = thelpiqz{1}(:, 1);
plot(tiqz,iqz)
%legend('Ld-50%', 'Ld-45%', 'Ld-40%', 'Ld-35%', 'Ld-30%', 'Ld-25%', 'Ld-20%', 'Ld-15%', 'Ld-10%', 'Ld', 'Ld+10%', 'Ld+15%', 'Ld+20%', 'Ld+25%', 'Ld+30%', 'Ld+35%', 'Ld+40%', 'Ld+45%', 'Ld+50%')
hold all
end
figure
for i = 1:19
cf = cfc{i};
thelpcf = ycf{1,i};
tcf = thelpcf{1}(:, 1);
plot(tcf,cf)
%legend('Ld-50%', 'Ld-45%', 'Ld-40%', 'Ld-35%', 'Ld-30%', 'Ld-25%', 'Ld-20%', 'Ld-15%', 'Ld-10%', 'Ld', 'Ld+10%', 'Ld+15%', 'Ld+20%', 'Ld+25%', 'Ld+30%', 'Ld+35%', 'Ld+40%', 'Ld+45%', 'Ld+50%')
hold all
end
figure
for i = 1:19
currents = currentsc{i};
thelpcurrents = ycurrents{1,i};
tcurrents = thelpcurrents{1}(:, 1);
plot(tcurrents,currents)
%legend('Ld-50%', 'Ld-45%', 'Ld-40%', 'Ld-35%', 'Ld-30%', 'Ld-25%', 'Ld-20%', 'Ld-15%', 'Ld-10%', 'Ld', 'Ld+10%', 'Ld+15%', 'Ld+20%', 'Ld+25%', 'Ld+30%', 'Ld+35%', 'Ld+40%', 'Ld+45%', 'Ld+50%')
hold all
end
6 Commenti
Stephen23
il 19 Giu 2023
" the way I used to do it does not work anymore. anyone an Idea?"
Please explain what "does not work" means: do you get a plot but with unexpected values, or no plots at all, or an unexpected number of plots, or lots of warnings, or an error is thrown...? Guessing what "does not work" means is much less reliable than you actually telling us.
Brendan Rapp
il 19 Giu 2023
Dyuman Joshi
il 19 Giu 2023
It seems that the variable currentsc is not of type cell. Can you confirm this by using the line -
class(currentsc)
before the last for loop?
Brendan Rapp
il 19 Giu 2023
You are trying to access a double array via curly brackets, which is not possible. Use parenthesis to access elements of a double array.
%Example
y = magic(5)
y(7)
y{7}
Brendan Rapp
il 29 Giu 2023
Risposte (1)
Voss
il 24 Giu 2023
Change this:
currentsc = datacurrents{i}(:, [2 3 4]);
to this:
currentsc{i} = datacurrents{i}(:, [2 3 4]);
Categorie
Scopri di più su Graphics Objects in Centro assistenza e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!