Problems with cell array plotting

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

" 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.
Oh, I'm sorry!
I get an error thrown, that the brace indexing is not supported for variables of this type. (below)
Error in Variation_Ld (line 178)
currents = currentsc{i};
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?
It states that currentsc is already a double, but I cannot plot it. maybe because it is an more dimensional double?
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 = 5×5
17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9
y(7)
ans = 5
y{7}
Brace indexing is not supported for variables of this type.
That helped thank you!

Accedi per commentare.

Risposte (1)

Voss
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

Richiesto:

il 19 Giu 2023

Commentato:

il 29 Giu 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by