2010-03-11 15 views
5

मैं एक मैट्रिक्स बनाने की कोशिश कर रहा हूं जो 3 x n है, प्रत्येक कॉलम समान है। इसे प्राप्त करने का सबसे आसान तरीका क्या है? संयोजन?MATLAB: प्रत्येक कॉलम के साथ एक मैट्रिक्स भरना

+0

यह स्पष्ट नहीं है है। क्या आप चाहते हैं [1 1 1; 2 2 2; 3 3 3] जहां कॉलम समान हैं या आप चाहते हैं [1 2 3; 1 2 3; 1 2 3] जहां प्रत्येक कॉलम एक ही संख्या है? – MatlabDoug

+1

समान प्रश्न: http://stackoverflow.com/questions/2209207/producing-2d-array-from-a-1d-array-in-matlab – Amro

उत्तर

8

बाद

n=7 
x=[1;2;3] 

यह या तो

repmat(x,[1 n]) 

या

x(:,ones(1,n)) 
+0

मैं कहूंगा कि इंडेक्स-आधारित समाधान जाने का तरीका है (और यह आमतौर पर तेज़ है)। – gnovice

+0

धन्यवाद। repmat वह कीवर्ड है जिसे मैं ढूंढ रहा था, लेकिन भूल गया। – stanigator

3

octave-3.0.3:2> rowvec = [1:10] 
rowvec = 

    1 2 3 4 5 6 7 8 9 10 

octave-3.0.3:3> [rowvec; rowvec; rowvec] 
ans = 

    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 

उपयोग repmat अगर पंक्तियों की संख्या बड़ी है (सप्टक एक खुला स्रोत/MATLAB का नि: शुल्क संस्करण के रूप में माना जा सकता है)।

octave-3.0.3:7> repmat(rowvec, 10, 1) 
ans = 

    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
2

लोगों के एक 1 x 3 मैट्रिक्स

जैसे के साथ गुणा का प्रयोग करें, x * [1 1 1]

संपादित करें:

सप्टक में:

octave-3.0.3.exe:1> x = [1;2;3;4] 
x = 

    1 
    2 
    3 
    4 


octave-3.0.3.exe:5> x * [1 1 1] 
ans = 

    1 1 1 
    2 2 2 
    3 3 3 
    4 4 4 
+0

यह '[x x x]' देता है। – kennytm

+0

यह ऑक्टवे में काम करता है - – James

+0

संपादित करें मुझे लगता है कि @ केनीटीएम का अर्थ यह हो सकता है कि यह '[x x x] '(जहां' x' एक कॉलम वेक्टर है), जब ओपी चाहता है' [x; एक्स; एक्स] '(जहां' x' एक पंक्ति वेक्टर है, जैसा कि उसके उत्तर में है), लेकिन सवाल थोड़ा संदिग्ध है, इसलिए मेरा जवाब। – Ramashalanka

संबंधित मुद्दे