2017-07-06 2 views
0

Ich habe Probleme, in denen meine for Schleife den gleichen Vektor 17 mal aus 17 Elementen druckt, anstatt 1 Mal zu drucken und aus 17 Elementen zu zeichnen. Was läuft falsch?for loop druckt die gleiche Sache in jeder Iteration, sollte nur einmal drucken

Ich versuche auch, den Mittelwert am Ende des invertierten Vektors hinzuzufügen, aber es sagt, dass die Dimensionen aus sind. (Die zweite Funktion funktioniert, aber ich habe sie als Referenz eingefügt, da sie sich in ProcessSpike befindet).

function [] = ProcessSpike(dataset,element,cluster) 
%UNTITLED2 Summary of this function goes here 
% Detailed explanation goes here 
result = [] 
for a = 1:element 
    for b = 1:cluster 
     result = [result AvSpike(dataset, a, b)]; 
     mean = nanmean(result) 
     r = [result]' 
     r(end+1) = num2str(mean) 
    end 
end 


function [result] = AvSpike(dataset,element,cluster) 
%UNTITLED Summary of this function goes here 
% Detailed explanation goes here 
Trans1 = dataset.Trans1; 
Before_Trans1 = Trans1-600; 
Firing_Time1 = dataset(cluster).time(dataset(cluster).time>Before_Trans1(element)&dataset(cluster).time<Trans1(element)); 
ISI1 = diff(Firing_Time1); 
result = numel(ISI1)/600 
result(result == 0) = NaN 
end 
+0

Können Sie eine [MCVE], das heißt definieren alle Eingangsvariablen – m7913d

+0

Was Sie in Ihrem for-Schleife drucken? – m7913d

+0

Ich möchte eine Liste der durchschnittlichen Feuerraten für einen bestimmten Cluster für 17 verschiedene Elemente drucken. Also sollte es auf r und bedeuten wie unten, aber stattdessen bekomme ich das gleiche 17 mal. – Sophie

Antwort

0

Die Drucke von Linien verursacht werden, die eine Endung ;, Editor fehlen sollte eine orangefarbene Linie unter diesen Zeilen (Warnungen) ziehen. In Bezug auf die nicht übereinstimmenden Dimensionen versuchen Sie, eine Zeichenfolge (Char-Array) zu einem vorhandenen Array (r(end+1) = num2str(mean)) hinzuzufügen. Wenn die Länge dieses Char-Arrays nicht mit der Länge der anderen Elemente in r übereinstimmt, führt dies zu einem solchen Fehler. Ich würde empfehlen, num2str() hier nicht zu verwenden und nur einen einzelnen Wert anstelle der Zeichenfolgendarstellung des Werts zu schieben.

0

Ich habe Kommentare zu einer überarbeiteten Version Ihres Codes hinzugefügt, die hoffentlich die Dinge klarer macht.

result = [] 
for a = 1:element 
    for b = 1:cluster 
     % Concatenate vertically (use ;) so no need to transpose later 
     result = [result; AvSpike(dataset, a, b)]; 
     % Use a semi-colon at the end of line to supress outputs from command window 
     % Changed variable name, don't call a variable the same as an in-built function 
     mymean = nanmean(result); 
     % r = result' % This line removed as no need since we concatenated vertically 
     % Again, using the semi-colon to supress output, not sure why num2str was used 
     r(end+1) = mymean; 
    end 
end 
disp(r) % Deliberately output the result!