WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Iteration Fehler "Subscripted assignment dimension mism

 

scoobydo
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 23.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.06.2014, 11:45     Titel: Iteration Fehler "Subscripted assignment dimension mism
  Antworten mit Zitat      
Hallo zusammen,

ich brauche eure Hilfe bei meinem Programm.
Habe dort eine Iterationsschleife eingebaut und seid dem funzt es nicht mehr richtig. (Ohne hingegen einwandfrei)

Der entscheide Punkt ist denke ich das er die bestehenden Variablen nicht ordentlich überschreibt. Jedenfalls bekomme ich die Fehlermeldung "Subscripted assignment dimension mismatch."

Könnt ihr mir sagen wie man das vermeiden kann? Da Programm ist recht groß, aber das wesentliche spielt sich in der while Schleife ab Wink

Besten Dank schon einmal!!!

Code:

%% Pfad und Globale Variablen
clear;

pfad = 'G:\Studium\Master\Masterarbeit\Auswertung\Auswertung_DAQ\Statisch\Kal_Massenstrom\';
%pfad = 'C:\Users\systemverwalter\Desktop\Messung_Malte\Auswertung_DAQ\Geschw_Profil\z-Ebene_oPT\';
%pfad = 'E:\Auswertung\Auswertung_DAQ\Statisch\Kal_Massenstrom\';

m = 8;                                                                      % Anzahl der Massenströme
o = 41;                                                                     % Anzahl der Messpunkte pro Massenstrom
q = 9;                                                                      % Anzahl der Punkte über dem Austrittsdurchmesser

D = 5e-3; %in m                                                             % Lochurchmesser
A_j = pi * (D)^2 / 4;                                                       % Austrittsflaeche
deltaz = 0.5; % in mm                                                       % Gefahrener Abstand
summe_deltaz = (o-1)*deltaz;                                                % Gefahrene Srecke

%% Lesen der Daten
% Einlesen der Referenzmessung
file = fopen([pfad 'm' 'ref']);
     
% Daten einlesen
dat = textscan(file, '%f %f %f %f','Headerlines',3);
E     = dat{1,3};
E_ref = mean(E);                                                            % E_ref Mittelwert der Referenzdatei
fclose(file);

% Einlesen der Messdaten
for i = 1:m
    k = num2str(i);
   
    for j = 1Surprised
    l = num2str(j);
    file = fopen([pfad 'm' k '.' l]);
   
    % Header einlesen
    t          = textscan(file, '%s %s',8);
    Zeit{i,1}    = [t{1,1}{1,1} ' ' t{1,2}{1,1}];
    T_amb(i,1)   = str2num(t{1,2}{2,1}) + 273;                              % Umgebungstemperatur in K
    p_amb(i,1)   = str2num(t{1,2}{3,1});                                    % Umgebungsdruck in Pa
    V_punkt(i,1) = str2num(t{1,2}{4,1});                                    % Volumenstrom in l/min
    fs(i,1)      = str2num(t{1,2}{5,1});                                    % Samplefrequenz in Hz
    Ns(i,1)      = str2num(t{1,2}{6,1});                                    % Samplerate /
    f(i,1)       = str2num(t{1,2}{7,1});                                    % Ventilfrequenz in Hz
    DC(i,1)      = str2num(t{1,2}{8,1});                                    % Duty Cycle in %
   
    % Daten einlesen
    dat = textscan(file, '%f %f %f %f','Headerlines',2);
   
    E        = dat{1,3};
    E_m(j,i) = mean(E);                                                     % E_m Mittelwert der Messpunkte
   
    fclose(file);
   
    end      
   
end

% Umsortieren der Spalten in richtige Reihenfolge
Zeit = Zeit([8 1 2 3 4 5 6 7]);
p_amp = p_amb([8 1 2 3 4 5 6 7]);
T_amb = T_amb([8 1 2 3 4 5 6 7]);
V_punkt = V_punkt([8 1 2 3 4 5 6 7]);
E_m = E_m(:,[8 1 2 3 4 5 6 7]);

%% Kingsches Gesetz

% Bestimmen der Datenpunkte für King
m_punkt = V_punkt ./ (60 * 1000);
rho_u_mess   = m_punkt ./ A_j;

r = D/2 + deltaz/(2*1000);                                                  % Bestimmen der Teilflaeche pro Messpunkt
for j = 1:(q+1)/2                                                           % Insgesamt 10 Teilflächen (Mitte zählt doppelt) da 9 Punkte über D liegen
   
    if (j == (q+1)/2)
        A_int(j) = pi/2 * r^2;
    else
        A_int(j) = pi/2 * (r^2 - (r - deltaz/1000)^2);
        r = r - deltaz/1000;
    end
   
end
A_int = [A_int(1:((q-1)/2)), fliplr(A_int)]';                               % Gespiegelter Vektor der Flächen


% Iteration des "globalen" Korrekturfaktors
k = 1;
m_punkt_rms_alt = 0;

while 1
   
    for i = 1:m                                                                 % Korrekturfaktor pro Massenstrom
   
    K(i) = k * (E_m(21,i) * A_j - sum( (E_m(21,i) - E_m(17:25,i)) .* A_int )) / (E_m(21,i) * A_j);
   
    end

    E_mitte(:,1) = K .* E_m(21,:);                                          % Korrigierte mittlere Spannung

    E_mitte    = [E_mitte; E_ref];
    rho_u_mess = [rho_u_mess; 0.0];
    data       = [rho_u_mess E_mitte];

    % Kingsches Gesetz
    [Koeff] = lsqcurvefit(@King,[4.5 2.5 0.5],data(:,1),data(:,2));

    % Ausgeben einer Testgrafik
    test2=[0:0.1:max(data(:,1))];
    [test] = King(Koeff,test2);

    figure(1)
    plot(test2,test,'k-',data(:,1),data(:,2),'b.');
    xlabel('\rho * u in kg * (m^2 * s)^{-1}');
    ylabel('E in V')
    legend('King´sches Gesetz','Messpunkte','Location','NW');

    A = Koeff(1);
    B = Koeff(2);
    n = Koeff(3);

%% Berechnen des Massenstrom durch Integration

    for i = 1:m
        for j = 17:25

    rho_u_King(j-15,i)   = nthroot((E_m(j,i).^2 - A) ./ B, n);
    %m_punkt_King = rho_u_King .* A_j;

        end
    end

    for i = 1:m
        for j = 1:q

        m_punkt_int(j,i) =rho_u_King(j,i) * A_int(j);

        end
        sum_m_punkt_int(i) = sum(m_punkt_int(:,i));
    end
    sum_m_punkt_int = sum_m_punkt_int';

    m_punkt_rms = sqrt( sum(sum_m_punkt_int - m_punkt) )^2
   
    % Abbruchkriterium
    if (m_punkt_rms==m_punkt_rms_alt)
        break
    else
        m_punkt_rms_alt = m_punkt_rms;
        k = k - 0.00001;
    end
   
       
end

 
Private Nachricht senden Benutzer-Profile anzeigen


scoobydo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 23.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.06.2014, 12:10     Titel:
  Antworten mit Zitat      
Problem bereits gelöst Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
m......

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2014, 11:39     Titel:
  Antworten mit Zitat      
Wie hast du es gelöst?
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.