मैं एन-तत्वों के साथ एक वेक्टर बनाने की कोशिश कर रहा हूं। मैं चाहता हूं कि मेरे प्रत्येक तत्व, x_5 को इस प्रकार परिभाषित किया जाए:

X_5 = (x_1)^2 + (x_2)^2 + (x_3)^2 + (x_4)^2

जहां प्रत्येक x_i = randn. यह वह स्क्रिप्ट है जिसका मैं अभी उपयोग कर रहा हूं:

x_1 = randn;
x_2 = randn;
x_3 = randn;
x_4 = randn;
for x_5 = (x_1)^2 + (x_2)^2 + (x_3)^2 + (x_4)^2
    n=1000000
end
v=repelem(x_5,1000000);

मैं एक लूप कमांड को कार्यान्वित करना चाहता हूं, ताकि प्रत्येक x_5 x_5 के लिए एक विशिष्ट ऑपरेशन से मेल खाता हो। अर्थात्, मेरे वेक्टर में प्रत्येक x_5 मेरे एल्गोरिथम व्यक्तिगत रूप से द्वारा उत्पन्न होता है। इस स्क्रिप्ट के साथ, x_5 केवल एक बार उत्पन्न होता है, और मेरा वेक्टर तब इसी परिणाम की 1.000.000 प्रतियों से भर जाता है। इसके बजाय, मैं x_5 के लिए 1.000.000 गणना करना चाहता हूं, और फिर इन परिणामों के साथ अपना वेक्टर भरें।

बनाने के अलावा अन्य सुझाव

for x_5 = (x_1)^2 + (x_2)^2 + (x_3)^2 + (x_4)^2
    n=1000000
end

काम का भी स्वागत है। मुझे यकीन नहीं है कि लूप कमांड यहां सबसे अच्छा विकल्प है, लेकिन मैं इस समस्या के साथ इसके बारे में जानना चाहता हूं।

0
user140878 13 नवम्बर 2020, 14:21

1 उत्तर

सबसे बढ़िया उत्तर

आपका लूप केवल एक बार पुनरावृत्त होता है और संख्याएँ केवल एक बार उत्पन्न होती हैं। आपको तर्क को लूप में ले जाना होगा:

v = zeros(1, 1000000);
parfor n = 1:length(v)
    v(n) = sum(randn(1, 4).^2);
end

आप कोड को कम कर सकते हैं

v = arrayfun(@(x) sum(randn(1, 4).^2), zeros(1, 1000000));
2
Thomas Sablik 13 नवम्बर 2020, 17:33